Example 6: Update a business rule group property and publish

In this example, a property in a business rule group is updated and then the business rule group is published.

package com.ibm.websphere.sample.brules.mgmt;

import java.util.ArrayList;
import java.util.List;

import com.ibm.wbiserver.brules.mgmt.BusinessRuleGroup;
import com.ibm.wbiserver.brules.mgmt.BusinessRuleManagementException;
import com.ibm.wbiserver.brules.mgmt.BusinessRuleManager;
import com.ibm.wbiserver.brules.mgmt.UserDefinedProperty;
import com.ibm.wbiserver.brules.mgmt.query.QueryOperator;

public class Example6
{
static Formatter out = new Formatter();

static public String executeExample6()
{
	try
	{
			out.clear();
			out.printlnBold("Business Rule Group before publish:");
			// Retrieve business rule groups by a single property value
			List<BusinessRuleGroup> brgList = BusinessRuleManager
					.getBRGsBySingleProperty("Department",
					QueryOperator.EQUAL,"General", 0, 0);

			if (brgList.size() > 0)
			{
					// Get the first business rule group from the list
					BusinessRuleGroup brg = brgList.get(0);
					// Retrieve the property from the business rule group
					UserDefinedProperty userDefinedProperty =
					(UserDefinedProperty) brg
							.getProperty("Department");

					out.println("Business Rule Group: " + brg.getName());
					out.println("Department Property value: "
					+ brg.getProperty("Department").getValue());
The getProperty method returns a property by reference and changes made to the property are directly made to the business rule group.
					// Modify the property value in the brg
					// This updates the property value directly in the
					brg object
					userDefinedProperty.setValue("GeneralConfig");
					// Use the original list or create a new list
					// of business rule groups
					List<BusinessRuleGroup> publishList = new
					ArrayList<BusinessRuleGroup>();
					// Add the changed business rule group to the list
					publishList.add(brg);
The BusinessRuleManager class is used to publish the changes made to a business rule group. To publish the change, a list is passed to the BusinessRuleManager publish method even if there is only one item is being published.
					// Publish the list with the updated business rule group
					BusinessRuleManager.publish(publishList, true);

					out.println("");

					// Retrieve the business rule group again to verify the
					// changes were published
					out.printlnBold("Business Rule Group after publish:");
					brgList = BusinessRuleManager
					.getBRGsBySingleProperty("Department",
					QueryOperator.EQUAL, "GeneralConfig", 0, 0);
					
					brg = brgList.get(0);

					out.println("Business Rule Group: " + brg.getName());
					// Display the property value to show the change
					out.println("Department Property value: "
					+ brg.getProperty("Department").getValue());
			}
	} catch (BusinessRuleManagementException e)
	{
	e.printStackTrace();
	out.println(e.getMessage());
	}
return out.toString();
}
}

Example

Web browser output for example 6.

Executing example6

Business Rule Group before publish:
Business Rule Group: ConfigurationValues
Department Property value: General

Business Rule Group after publish:
Business Rule Group: ConfigurationValues
Department Property value: GeneralConfig