规则引擎Drools example3说明
程序员文章站
2022-05-28 12:23:56
...
规则代码
package org.drools.examples.banking
rule "Rule 01"
when
$number : Number( )
not Number( intValue < $number.intValue )
then
System.out.println("Number found with value: " + $number.intValue() );
delete( $number );
end
说明
- Working mem 内存中会插入有5个Number对象分别是 3 1 4 1 5 $number : Number( )会执行5次
- 第一次 $number = Number(intValue=3) 并且内存中不存在Number(intValue<3),存在1,所以不输出
- 第二次,$number = Number(intValue=1) 并且 内存中不存在Number(intValue<1),不存在,所以输出-并且删除1, // 此时Working mem 内存改变,导致所有数据重新执行规则,现在有3,4,1,5
- 第三次 $number = Number(intValue=3) 并且内存中不存在Number(intValue<3),存在1,所以不输出
- 第四次,$number =Number(intValue=4) 并且 内存中不存在Number(intValue<4),存在1,所以不输出
- 第五次,$number = Number(intValue=1) 并且内存中不存在Number(intValue<1),不存在,所以输出-并且删除1 // 此时Working mem 内存改变,导致所有数据重新执行规则,现在只有3,4,5
- 第六次,$number = Number(intValue=3) 并且内存中不存在Number(intValue<3),不存在,所以输出-并且删除3
- 第七次,$number =Number(intValue=4) 并且 内存中不存在Number(intValue<4),不存在,所以输出-并且删除4
- 第八次,$number = Number(intValue=4) 并且内存中不存在Number(intValue<4),不存在,所以输出-并且删除5
注意
注意:如果去掉 delete( $number );只会输出两个1。因为3是执行过的不会重新执行,执行4,5的时候,有3驻留在内存中,4,5都不会输出
上一篇: Failed to convert property value of type [java.lang.String] to required type [java.util.Date]
下一篇: 使用Glide进行预加载图片
推荐阅读
-
Drools 5.2 发布:开源的业务规则引擎
-
drools规则引擎与kie-wb和kie-server远程执行规则(7.18.0.Final)
-
SpringBoot整合Drools规则引擎动态生成业务规则的实现
-
Drools规则引擎-Drools入门案例
-
开源力量公开课第70期:新一代规则引擎Drools概览
-
规则引擎Visual Rules Solution开发基础教程【连载18】-- Linux环境 安装配置说明
-
规则引擎Visual Rules Solution开发基础教程【连载18】-- Linux环境 安装配置说明
-
规则引擎Drools的资料整理
-
Spring Boot中使用Drools规则引擎
-
Drools规则引擎-判断集合(List)是否包含集合