【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 lock-on-active
转载至:https://blog.csdn.net/wo541075754/article/details/75208955
lock-on-active
当在规则上使用ruleflow-group属性或agenda-group属性的时候,将lock-on-active 属性的值设置为true,可避免因某些Fact对象被修改而使已经执行过的规则再次被激活执行。可以看出该属性与no-loop属性有相似之处,no-loop属性是为了避免Fact被修改或调用了insert、retract、update之类的方法而导致规则再次激活执行,这里的lock-on-active 属性起同样的作用,lock-on-active是no-loop的增强版属性,它主要作用在使用ruleflow-group属性或agenda-group属性的时候。lock-on-active属性默认值为false。与no-loop不同的是lock-on-active可以避免其他规则修改FACT对象导致规则的重新执行。
因FACT对象修改导致其他规则被重复执行示例:
package com.rules import com.secbro.drools.model.Product; rule rule1
no-loop true
when
obj : Product(discount > 0);
then
obj.setDiscount(obj.getDiscount() + 1);
System.out.println("新折扣为:" + obj.getDiscount());
update(obj);
end rule rule2
when
productObj : Product(discount > 1);
then
System.out.println("其他规则被触发了" + productObj.getDiscount());
end
执行之后打印结果为:
新折扣为:2
其他规则被触发了2
第一次执行命中了2条规则!
其他规则(rule2)因FACT对象的改变而被出发了。
通过lock-on-active属性来避免被其他规则更新导致自身规则被重复执行示例:
package com.rules import com.secbro.drools.model.Product; rule rule1
no-loop true
when
obj : Product(discount > 0);
then
obj.setDiscount(obj.getDiscount() + 1);
System.out.println("新折扣为:" + obj.getDiscount());
update(obj);
end rule rule2
lock-on-active true
when
productObj : Product(discount > 1);
then
System.out.println("其他规则被触发了" + productObj.getDiscount());
end
很明显在rule2的属性部分新增了lock-on-active true。执行结果为:
新折扣为:2
第一次执行命中了1条规则!
标注了lock-on-active true的规则不再被触发。
【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 lock-on-active的更多相关文章
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
转载至:https://blog.csdn.net/wo541075754/article/details/75150267 一个标准的规则文件的格式为已“.drl”结尾的文本文件,因此可以通过记事本 ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.5RHS语法
转载至:https://blog.csdn.net/wo541075754/article/details/76651073 RHS语法 使用说明 RHS是满足LHS条件之后进行后续处理部分的统称,该 ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 no-loop
转载至:https://blog.csdn.net/wo541075754/article/details/75201934 no-loop 定义当前的规则是否不允许多次循环执行,默认是 false, ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 agenda-group
转载:https://blog.csdn.net/wo541075754/article/details/75332720 agenda-group 规则的调用与执行是通过StatelessKieSe ...
- 【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 ...
- 【java规则引擎】《Drools7.0.0.Final规则引擎教程》第4章 4.2 auto-focus
转载至:https://blog.csdn.net/wo541075754/article/details/75349556 auto-focus 在agenda-group章节,我们知道想要让Age ...
- 《Drools7.0.0.Final规则引擎教程》第2章 追溯Drools5的使用
2.1 Drools5简述 上面已经提到Drools是通过规则编译.规则收集和规则的执行来实现具体功能的.Drools5提供了以下主要实现API: KnowledgeBuilder Knowledge ...
- 《Drools7.0.0.Final规则引擎教程》Springboot+规则重新加载
在<Drools7.0.0.Final规则引擎教程>之Springboot集成中介绍了怎样将Drools与Springboot进行集成,本篇博客介绍一下集成之后,如何实现从数据库读取规则并 ...
- 《Drools7.0.0.Final规则引擎教程》第3章 3.1 Hello World 实例
3.1 Hello World 实例 在上一章中介绍了Drools5x版本中规则引擎使用的实例,很明显在Drools7中KnowledgeBase类已经标注为"@Deprecated&quo ...
- 《Drools7.0.0.Final规则引擎教程》第4章 4.1 规则文件
一个标准的规则文件的格式为已".drl"结尾的文本文件,因此可以通过记事本工具进行编辑.规则放置于规则文件当中,一个规则文件可以放置多条规则.在规则文件当中也可以存放用户自定义的函 ...
随机推荐
- 雷林鹏分享:C# 预处理器指令
C# 预处理器指令 预处理器指令指导编译器在实际编译开始之前对信息进行预处理. 所有的预处理器指令都是以 # 开始.且在一行上,只有空白字符可以出现在预处理器指令之前.预处理器指令不是语句,所以它们不 ...
- ehcache.xml详解
<?xml version="1.0" encoding="UTF-8"?> <ehcache> <!-- Sets the pa ...
- MySQL查看一个表的创建文本以及删除表某列的索引
#查看vrv_paw_area创建文本,使用这句话主要是为了找到该表对应字段上的索引名称show create table vrv_paw_area; #删除vrv_paw_area表的‘name’索 ...
- JQuery插件让图片旋转任意角度且代码极其简单 - 摘自网友
JQuery插件让图片旋转任意角度且代码极其简单 2012-04-01 09:57:03 我来说两句 收藏 我要投稿 引入下方的jquery.rotate.js文件,然后通过$ ...
- linux physical and virtual addressing modes
example 1: 特理地址和虚拟地址一致 Physical addressing mode requires no page tables and the CPU does not attempt ...
- Java——IO类 字符流概述
body, table{font-family: 微软雅黑} table{border-collapse: collapse; border: solid gray; border-width: 2p ...
- JAXP/DOM demo
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- L1-029 是不是太胖了
据说一个人的标准体重应该是其身高(单位:厘米)减去100.再乘以0.9所得到的公斤数.已知市斤是公斤的两倍.现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……) 输入格式: ...
- 玩转X-CTR100 l STM32F4 l BMP280气压计传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 扩展BMP ...
- 使用MyEclipse设置所需配置的iOS应用
MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] 一.iOS应用程序配置要求 这个进程需要四个需求数据文件: 证书签名请求(CSR)文件 证书签名请 ...