Drools系统的外观接口
public class RuleEngine {
private static RuleBase ruleBase = RuleBaseFactory.newRuleBase();
private static Map rules = new HashMap();
public Static RuleBase getRuleBase (){
return ruleBase;
}
public void readRule(String ruleFile) {
if (rules.Contains(ruleFile)){
return;
}
PackageBuilder builder = new PackageBuilder();
//仅以DRL文件为例
builder.addPackageFromDrl( new InputStreamReader(
getClass().getResourceAsStream( ruleFile ) ) );
Package pkg = builder.getPackage();
ruleBase.addPackage( pkg );
rules.put( ruleFile, pkg.getName() );
}
public void executeRule(List parameters){
WorkMemory workmem = ruleBase.newWorkingMemory();
for(int i=0; i < parameters.size(); i++){
workmem.assertObject( parameters.get(i) );
}
workmem.fireAllRules();
}
}
应用调用(如:BO等)
......
RuleEngine rule = new RuleEngine();
rule.readRule( "tomliu.drl" );//加载Rule
ArrayList parameter = new ArrayList();
parameter.add( obj1 );
parameter.add( obj2 );
parameter.add( result );
rule.executeRule( parameter );
......