WEB开发网
开发学院软件开发Java 使用 Drools 规则引擎实现业务逻辑 阅读

使用 Drools 规则引擎实现业务逻辑

 2010-04-02 00:00:00 来源:WEB开发网   
核心提示: 示例程序使用 Drools 规则引擎对 Machine 类的实例求值,基于 Machine 实例的 type 和 functions 属性的值,使用 Drools 规则引擎实现业务逻辑(8),规则引擎确定应分配给 tests 和 testsDueTime 属性的值,在 demo 包中,该类的实例

示例程序使用 Drools 规则引擎对 Machine 类的实例求值。基于 Machine 实例的 type 和 functions 属性的值,规则引擎确定应分配给 tests 和 testsDueTime 属性的值。

在 demo 包中,还会发现 Test 对象的数据访问对象 (TestDAOImpl) 的实现,它允许您按照 ID 查找 Test 实例。该数据访问对象极其简单;它不连接任何外部资源(比如关系数据库)以获得 Test 实例。相反,在其定义中硬编码了预定义的 Test 实例集合。在现实世界中,您可能会具有连接外部资源以检索 Test 对象的数据访问对象。

RulesEngine 类

demo 中比较重要(如果不是最重要的)的一个类是 RulesEngine 类。该类的实例用作封装逻辑以访问 Drools 类的包装器对象。可以在您自己的 Java 项目中容易地重用该类,因为它所包含的逻辑不是特定于示例程序的。清单 4 展示了该类的属性和构造函数:

清单 4. RulesEngine 类的实例变量和构造函数

public class RulesEngine { 
 
  private RuleBase rules; 
  private boolean debug = false; 
 
  public RulesEngine(String rulesFile) throws RulesEngineException { 
   super(); 
   try { 
     // Read in the rules source file 
     Reader source = new InputStreamReader(RulesEngine.class 
      .getResourceAsStream("/" + rulesFile)); 
     // Use package builder to build up a rule package 
     PackageBuilder builder = new PackageBuilder(); 
     // This parses and compiles in one step 
     builder.addPackageFromDrl(source); 
     // Get the compiled package 
     Package pkg = builder.getPackage(); 
     // Add the package to a rulebase (deploy the rule package). 
     rules = RuleBaseFactory.newRuleBase(); 
     rules.addPackage(pkg); 
   } catch (Exception e) { 
     throw new RulesEngineException( 
      "Could not load/compile rules file: " + rulesFile, e); 
   } 
  } 
  ... 

上一页  3 4 5 6 7 8 9 10  下一页

Tags:使用 Drools 规则

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接