首页 > 其他分享 >drools_09_drools_helper

drools_09_drools_helper

时间:2022-10-24 11:33:50浏览次数:57  
标签:drools KnowledgeHelper helper getRule RHS 09 rule order

RHS中的drools 对象

在 RHS 中我们可以使用 drools 对象, 该对象是 KnowledgeHelper 接口的一个实例, 它是在rule被执行时被自动注入.

KnowledgeHelper 接口的官方文档:
https://repository.jboss.org/nexus/content/unzip/unzip/org/drools/drools-core/7.53.0.Final/drools-core-7.53.0.Final-javadoc.jar-unzip/org/drools/core/spi/KnowledgeHelper.html

几个重要的函数

  • drools.getWrokingMemory()
    该方法返回一个WorkingMemory接口的实例, 常用的stateful KieSession 就是该接口的实现类, 所以在RHS中理论上可以做很多事情, 当然我们不推荐RHS中有很复杂的逻辑.

  • drools.getRule()
    该方法System.out.println(drools.getRule().getName());返回 rule 本身的对象, 包括Rule 名称, agenda group, salience 等属性, 最常用的是, 在RHS中通过这个函数来输出rule的名称.

  • drools.update()/insert()/delete()
    同名宏函数可以认为是 drools.update()/insert()/delete() 的简化写法.

  • drools.halt()
    立即终止后面所有规则的执行, 主要用于debug, 在debug时先给目标rule设置一个高优先级, 然后在其RHS中调用 drools.halt(), 这样就只会运行该规则.

drl 示例文件

package com.sample.rules
 
import com.sample.Order;

 
rule "KnowledgeHelper"
   when
       $order:Order(originalPrice>0)
   then
      $order.setAmount(100);
      System.out.println(drools.getRule().getName());
      drools.halt();   // KnowledgeHelper2 将不会被执行
end   

 
rule "KnowledgeHelper2"
   when
       $order:Order(originalPrice>0)
   then
      $order.setAmount(100);
      System.out.println(drools.getRule().getName());
end    

标签:drools,KnowledgeHelper,helper,getRule,RHS,09,rule,order
From: https://www.cnblogs.com/harrychinese/p/drools_09_drools_helper.html

相关文章

  • 608 Javascript_语法_—元运算符 and 609 Javascript_语法_算数&比较运算符
    Javascript_语法_—元运算符一元运算符:只有一个运算数的运算符       ++,--,+(正号),-(符号)       ++(--),自增,自减           ++(--)先自增或......
  • 练习题09-Proerties、IO
    案例需求:在Properties文件中手动写上姓名和年龄,读取到集合中,将该数据封装成学生对象,写到本地文件实现步骤:1.创建Properties集合,将本地文件中的数据加载到集合中2.获......
  • VMware Horizon 8 2209 - 虚拟桌面基础架构 (VDI) 和应用软件
    请访问原文链接:https://sysin.org/blog/vmware-horizon-8-2209/,查看最新版。原创作品,转载请保留出处。作者主页:www.sysin.orgVersion2209DocumentationRelea......
  • drools_08_event_listener
    KieSession除了提供丰富的API外,还提供三个eventlistener,方便对于规则执行状况的监控.AgendaEventListener该接口可以监控rule被fire,所以这个listener最常用,......
  • 2022-2023-1 20221309《计算机基础与程序设计》第八周学习总结
    2022-2023-120221309《计算机基础与程序设计》第八周学习总结作业信息这个作业属于哪个课程<班级的链接>这个作业要求在哪里<作业要求的链接>https://ww......
  • drools_07_macro_functions
    delete()和retract()宏函数delete()用于在ruleRHS中将对象从工作内存中删除,retract()函数有同样的作用,不过已经被标记为废弃状态.insert()宏函数insert()用于......
  • Python教程Day09-字典
    字典一、应用场景​​思考1​​:如果有多个数据,例如:'Tom','男',20,如何快速存储?答:列表list1=['Tom','男',20]​​思考2​​:如何查找到数据'Tom'?答:查找到下标为0的数据......
  • 苹果iPhone 14系列拆解:APL109A/338S00942和338S00839-B0 电源管理芯片
    日前,iFixit对苹果iPhone14ProMax进行了拆解。先看主控SoC所在的主板的一面:红色:苹果A16处理器,型号为APL1W10/339S01104,64位六核CPU+五核GPU,由台积电6nm工艺代工。实际......
  • 09-JS函数入门总结
    JS函数简单入门知识点总结1.1函数的概念函数:为完成一个操作任务而组合在一起的的语句组,实现了程序的三大逻辑(顺序、分支和循环)1.2函数的作用减少重复的代码,方便......
  • 9-09-消息队列企业级应用及原理剖析(下)_ev
                                  分布式事务场景                  ......