zoukankan      html  css  js  c++  java
  • 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法

    转载至:https://blog.csdn.net/wo541075754/article/details/76651073

    RHS语法

    使用说明

    RHS是满足LHS条件之后进行后续处理部分的统称,该部分包含要执行的操作的列表信息。RHS主要用于处理结果,因此不建议在此部分再进行业务判断。如果必须要业务判断需要考虑规则设计的合理性,是否能将判断部分放置于LHS,那里才是判断条件应该在的地方。同时,应当保持RHS的精简和可读性。 
    如果在使用的过程中发现需要在RHS中使用AND或OR来进行操作,那么应该考虑将一根规则拆分成多个规则。

    RHS的主要功能是对working memory中的数据进行insert、update、delete或modify操作,Drools提供了相应的内置方法来帮助实现这些功能。

    update(object,handle):执行此操作更新对象(LHS绑定对象)之后,会告知引擎,并重新触发规则匹配。 
    update(object):效果与上面方法类似,引擎会默认查找对象对应的handle。

    使用属性监听器,来监听JavaBean对象的属性变更,并插入到引擎中,可以避免在对象更改之后调用update方法。当一个字段被更改之后,必须在再次改变之前调用update方法,否则可能导致引擎中的索引问题。而modify关键字避免了这个问题。

    insert(newSomething()):创建一个新对象放置到working memory中。

    insertLogical(newSomething()):功能类似于insert,但当创建的对象不再被引用时,将会被销毁。

    delete(handle):从working memory中删除对象。

    其实这些宏函数是KnowledgeHelper接口中方法对应的快捷操作,通过它们可以在规则文件中访问Working Memory中的数据。预定义变量drools的真实类型就是KnowledgeHelper,因此可以通过drools来调用相关的方法。具体每个方法的使用说明可以参考类中方法的说明。

    通过预定义的变量kcontext可以访问完整的Knowledge Runtime API,而kcontext对应的接口为KieContext。查看KieContext类会发现提供了一个getKieRuntime()方法,该方法返回KieRuntime接口类,该接口中提供了更多的操作方法,对RHS编码逻辑有很大作用。

    insert函数

    insert的作用与在Java 类当中调用KieSession的insert方法效果一样,都是将Fact对象插入到当前的Working Memory当中,基本用法格式如下:

    insert(newSomething());
    View Code
  • 相关阅读:
    mysql #与$的区别
    linux连接mysql
    19年春第十三周学习
    第二阶段冲刺-02
    第二阶段冲刺-01
    19年春第十二周学习
    第一阶段SCRUM冲刺-10
    第一阶段SCRUM冲刺-09
    第一阶段SCRUM冲刺-08
    19年春第十一周学习
  • 原文地址:https://www.cnblogs.com/shangxiaofei/p/9439634.html
Copyright © 2011-2022 走看看