转载至: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());

【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法的更多相关文章

  1. 《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法

    RHS语法 使用说明 RHS是满足LHS条件之后进行后续处理部分的统称,该部分包含要执行的操作的列表信息.RHS主要用于处理结果,因此不建议在此部分再进行业务判断.如果必须要业务判断需要考虑规则设计的 ...

  2. 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件

    转载至:https://blog.csdn.net/wo541075754/article/details/75150267 一个标准的规则文件的格式为已“.drl”结尾的文本文件,因此可以通过记事本 ...

  3. 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 no-loop

    转载至:https://blog.csdn.net/wo541075754/article/details/75201934 no-loop 定义当前的规则是否不允许多次循环执行,默认是 false, ...

  4. 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 agenda-group

    转载:https://blog.csdn.net/wo541075754/article/details/75332720 agenda-group 规则的调用与执行是通过StatelessKieSe ...

  5. 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第3章 3.2 KIE概念&FACT对象

    转载:https://blog.csdn.net/wo541075754/article/details/74943236 3.2.1 什么是KIE KIE(Knowledge Is Everythi ...

  6. 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 auto-focus

    转载至:https://blog.csdn.net/wo541075754/article/details/75349556 auto-focus 在agenda-group章节,我们知道想要让Age ...

  7. 《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用

    2.1 Drools5简述 上面已经提到Drools是通过规则编译.规则收集和规则的执行来实现具体功能的.Drools5提供了以下主要实现API: KnowledgeBuilder Knowledge ...

  8. 《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载

    在<Drools7.0.0.Final规则引擎教程>之Springboot集成中介绍了怎样将Drools与Springboot进行集成,本篇博客介绍一下集成之后,如何实现从数据库读取规则并 ...

  9. 《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例

    3.1 Hello World 实例 在上一章中介绍了Drools5x版本中规则引擎使用的实例,很明显在Drools7中KnowledgeBase类已经标注为"@Deprecated&quo ...

随机推荐

  1. OPENWRT安装配置指南之 17.01.4 LEDE

    简介 这个东西,需要看简介的就不要看下去了. 下面已刚刷进去,路由IP地址为192.168.1.1为例开始配置. 浏览器访问192.168.1.1,无密码. 一:配置上网 不管你是什么方式上网,请根据 ...

  2. Linux查看当前使用的网卡 以及 查看某进程使用的网络带宽情况 以及 端口占用的情况

    一:Linux查看当前使用的网卡          ifconfig命令可以查看当前linux 系统有多少个网卡. [app@p2-app2 ~]$ ifconfig br-2e5b046a02d5: ...

  3. 小程序设置apiBase

    App({ globalDate:{ g_isPlayMusic:false, g_currentMusicPostId:null, douBanBase:'http://t.yushu.im' }, ...

  4. GD2模块-图像处理

    GD2模块-图像处理 1.图像处理模块的主要功能: a) 验证码 b) 加盖水印 c) 缩略图 d) 帖子图片签名 e) 在线LOGO制作 2确认PHP是否支持图像处理 检测PHPINFO文件中是否存 ...

  5. L320 What late-night snacking has to do with sleep

    What late-night snacking has to do with sleep Light-night snacking isn’t just something college stud ...

  6. phpexcel 的使用

    首先到phpexcel官网上下载最新的phpexcel类,下周解压缩一个classes文件夹,里面包含了PHPExcel.php和PHPExcel的文件夹,这个类文件和文件夹是我们需要的,把class ...

  7. for循环遍历改用map函数

    # for url in urls:# url = response.urljoin(url)# print(url)urls = map(lambda url:response.urljoin(ur ...

  8. 使用Redis做为MySQL的缓存

    OS: Ubuntu 16.04.4 x64 更新并安装必要的工具 apt update && apt upgrade -y && apt dist-upgrade - ...

  9. 基于链路的OSPFMD5口令认证

    实验要求:掌握基于链路的OSPFMD5口令认证 拓扑如下: 配置如下: R1enable configure terminal interface s0/0/0ip address 192.168.1 ...

  10. c++ 继承(二)

    不能自动继承的成员函数 1.构造函数 2.析构函数 3.=运算符 继承与构造函数 1.基类的构造函数不被继承,派生类中需要声明自己的构造函数 2.声明构造函数时,只需要对本类中新增成员进行初始化,对继 ...