Example 5: Retrieve business rule groups with a complex query
This example is a combination of examples 3 and 4 and it is meant to show how more
complex queries can be created. In this example a search is performed with a query that combines 2
query conditions. The first query condition is to retrieve those business rule groups which have a
property named Department and a value of "General" or a property named MissingProperty and a value
of "somevalue". This query condition is then combined with an AND to a condition where the property
is named RuleType and a value of "messages".
More examples of business rule group queries are available in the appendix.
package com.ibm.websphere.sample.brules.mgmt;
import java.util.Iterator;
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.Property;
import com.ibm.wbiserver.brules.mgmt.PropertyList;
import com.ibm.wbiserver.brules.mgmt.query.AndNode;
import com.ibm.wbiserver.brules.mgmt.query.OrNode;
import com.ibm.wbiserver.brules.mgmt.query.PropertyQueryNode;
import com.ibm.wbiserver.brules.mgmt.query.QueryNodeFactory;
import com.ibm.wbiserver.brules.mgmt.query.QueryOperator;
public class Example5
{
static Formatter out = new Formatter();
static public String executeExample5()
{
try
{
out.clear();
// Retrieve business rule groups based on three conditions where
// two of the conditions are combined in an OR node
// Create PropertyQueryNodes for each condition for the OR node
PropertyQueryNode propertyNode1 = QueryNodeFactory
.createPropertyQueryNode("Department",
QueryOperator.EQUAL,"General");
PropertyQueryNode propertyNode2 = QueryNodeFactory
.createPropertyQueryNode("MissingProperty",
QueryOperator.EQUAL, "SomeValue");
// Combine the two PropertyQueryNodes with an OR node
OrNode orNode =
QueryNodeFactory.createOrNode(propertyNode1, propertyNode2);
// Create the third PropertyQueryNode
PropertyQueryNode propertyNode3 = QueryNodeFactory
.createPropertyQueryNode("RuleType",
QueryOperator.EQUAL,"messages");
The left condition is combined to the right condition with an AND node. The
AndNode is the root of the query
tree. // Combine OR node with third PropertyQueryNode with
AndNode AndNode andNode =
QueryNodeFactory.createAndNode(propertyNode3, orNode);
List<BusinessRuleGroup> brgList = BusinessRuleManager
.getBRGsByProperties(andNode, 0, 0);
Iterator<BusinessRuleGroup> iterator = brgList.iterator();
BusinessRuleGroup brg = null;
// Iterate through the list of business rule groups
while (iterator.hasNext())
{
brg = iterator.next();
// Output attributes for each business rule group
out.printlnBold("Business Rule Group");
out.println("Name: " + brg.getName());
out.println("Namespace: " +
brg.getTargetNameSpace());
out.println("Display Name: " + brg.getDisplayName());
out.println("Description: " + brg.getDescription());
out.println("Presentation Time zone: "
+ brg.getPresentationTimezone());
out.println("Save Date: " + brg.getSaveDate());
PropertyList propList = brg.getProperties();
Iterator<Property> propIterator =
propList.iterator();
Property prop = null;
// Output property names and values
while (propIterator.hasNext())
{
prop = propIterator.next();
out.println("\t Property Name: " +
prop.getName());
out.println("\t Property Value: " +
prop.getValue());
}
}
} catch (BusinessRuleManagementException e)
{
e.printStackTrace();
out.println(e.getMessage());
}
return out.toString();
}
}Example
Web browser output for example 5.
Executing example5 Business Rule Group Name: ConfigurationValues Namespace: http://BRSamples/com/ibm/websphere/sample/brules Display Name: ConfigurationValues Description: null Presentation Time zone: LOCAL Save Date: Sun Jan 06 17:56:51 CST 2008 Property Name: IBMSystemVersion Property Value: 6.2.0 Property Name: Department Property Value: General Property Name: RuleType Property Value: messages Property Name: IBMSystemTargetNameSpace Property Value: http://BRSamples/com/ibm/websphere/sample/brules Property Name: IBMSystemName Property Value: ConfigurationValues Property Name: IBMSystemDisplayName Property Value: ConfigurationValues
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-03-13 12:15