drools3.0基本配置

   Drools 是一个建立在Rete 模式匹配运算法则基础之上的规则引擎。

   关于规则引擎可以参考http://www.mituosi.cn/create/java/182644787.html

     我也是才开始用,感觉实现比较复杂的而且需要经常修改的业务逻辑比较方便,速度当然要查那么一点点,不过不是大问题啊.

       下面就来说一说基本配置。

      开发环境,必须要eclipse 3.2,因为要使用到其中一个jar文件。我就是在这里折磨了几天才搞明白。包名就是org.eclipse.jdt.core_3.2.0.v_671.jar。

     1)取得规则
     a. 得到规则脚本文件IO
        Reader drl= new InputStreamReader(TestDrools.class.get...( "/testDrools.drl") );
        Reader dsl= new InputStreamReader(TestDrools.class.get...(( "/testDrools.dsl") );
     b. 使用builder取得一个package
        PackageBuilder builder = new PackageBuilder();
     c.用addPackageFromDrl向builder输入脚本
        builder.addPackageFromDrl( drl,dsl );
        //如果没有dsl文件
        则为 builder.addPackageFromDrl( drl);
     d. 构造baseRule
       Package pkg = builder.getPackage();
       RuleBase ruleBase = RuleBaseFactory.newRuleBase();
       ruleBase.addPackage( pkg );

   2) 执行规则
     a. 从规则中获取规则执行引擎WorkingMemory
      WorkingMemory workingMemory = ruleBase.newWorkingMemory();
     b. 向引擎中装载事实
       workingMemory.assertObject(fact1);
       workingMemory.assertObject(fact2);
     c. 执行所有规则
       workingMemory.fireAllRules();       
     d. 获取规则返回对象
       Object returnObject = workingMemory.getObjects(class) ;
      
   3) drl 和 dsl 文件
     a.单独 drl文件
    
   package packageName;
   import class;
   #expander dsl files

   rule "rulename1" 
 agenda-group "ruleGroupName"
 when
  Object($object: condition1)  //$object下面要使用的满足条件的对象
 then
  assert(new ReturnObject($object, ...));
    end

   rule "rulename2" 
 genda-group "ruleGroupName" // same with abovw
 when
  Object($object: condition2)  //$object下面要使用的满足条件的对象
 then
  assert(new ReturnObject($object, ...));
   end
    b.drl 和 dsl文件
  dsl: test.dsl
  [when]Hello {name} = Object($object: name == {name} )
  [then]print {name} = System.out.println("Hello  "+{name});
  drl: test.drl
   package packageName;
   import class;
   expander test.dsl
   rule "rulename1"
      when
           hello xiaohongli
      then
           print xiaohongli
   end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值