示例 4:使用 OR 通过多个属性来检索业务规则组
此示例与示例 3 也很类似,但仅检索具有名为 Department 值为“accounting”的属性以及名为 RuleType 值为“monetary”的属性的业务规则组。
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.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 Example4
{
static Formatter out = new Formatter();
static public String executeExample4()
{
try
{
out.clear();
不同属性构成查询并返回不同业务规则组。
// Retrieve business rule groups based on two conditions
// Create PropertyQueryNodes for each one condition
PropertyQueryNode propertyNode1 = QueryNodeFactory
.createPropertyQueryNode("Department",
QueryOperator.EQUAL,"Accounting");
PropertyQueryNode propertyNode2 = QueryNodeFactory
.createPropertyQueryNode("RuleType",
QueryOperator.EQUAL,"monetary");
// Combine the two PropertyQueryNodes with an OR node
OrNode orNode =
QueryNodeFactory.createOrNode(propertyNode1,
propertyNode2);
// Use orNode in search for business rule groups
List<BusinessRuleGroup> brgList = BusinessRuleManager
.getBRGsByProperties(orNode, 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());
}
out.println("");
}
} catch (BusinessRuleManagementException e)
{
e.printStackTrace();
out.println(e.getMessage());
}
return out.toString();
}
}
示例
示例 4 的 Web 浏览器输出。
Executing example4 Business Rule Group Name: ApprovalValues Namespace: http://BRSamples/com/ibm/websphere/sample/brules Display Name: ApprovalValues 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: Accounting Property Name: RuleType Property Value: regulatory Property Name: IBMSystemTargetNameSpace Property Value: http://BRSamples/com/ibm/websphere/sample/brules Property Name: IBMSystemName Property Value: ApprovalValues Property Name: IBMSystemDisplayName Property Value: ApprovalValues Business Rule Group Name: DiscountRules Namespace: http://BRSamples/com/ibm/websphere/sample/brules Display Name: DiscountRules Description: null Presentation Time zone: LOCAL Save Date: Sun Jan 06 17:56:51 CST 2008 Property Name: Department Property Value: Accounting Property Name: IBMSystemVersion Property Value: 6.2.0 Property Name: RuleType Property Value: monetary Property Name: IBMSystemTargetNameSpace Property Value: http://BRSamples/com/ibm/websphere/sample/brules Property Name: IBMSystemName Property Value: DiscountRules Property Name: IBMSystemDisplayName Property Value: DiscountRules