网站首页 > 技术文章 正文
通过前面的学习了解到,在规则体中的LHS部分是介于when和then之间的部分。主要用于模式匹配,只有匹配结果为true时,才会触发RHS部分的执行。本节我们会针对LHS部分学习几个新的用法。
复合值限制in/not in (一)
- ① 介绍
复合值限制是指超过一种匹配值的限制条件,类似于SQL语句中的in关键字。Drools规则体中的LHS部分可以使用in或者not in进行复合值的匹配。
- ② 语法结构
Object(field in (比较值1,比较值2...))
- ③ 例子
$s:Student(name in ("三三","四四","五五"))
$s:Student(name not in ("三三","四四","五五"))
- ④ 创建规则文件
创建lhs.drl
测试类
条件元素eval(二)
- ① 介绍
eval用于规则体的LHS部分,并返回一个Boolean类型的值。
- ② 语法
eval(true)
eval(false)
eval(1 == 1)
- ③ 编写drl
- ④ 运行测试类
条件元素not(三)
- ① 介绍
not用于判断Working Memory中是否存在某个Fact对象,如果不存在则返回true,如果存在则返回false。
- ② 语法结构
not Object(可选属性约束)
not Student()
not Student(age < 10)
- ③ drl
- ④ 测试类
条件元素exists(四)
- ① 介绍
exists的作用与not相反,用于判断Working Memory中是否存在某个Fact对象,如果存在则返回true,不存在则返回false。
- ② 语法结构
exists Object(可选属性约束)
exists Student()
exists Student(age < 10 && name != null)
- ③ 疑问
可能有人会有疑问,我们前面在LHS部分进行条件编写时并没有使用exists也可以达到判断Working Memory中是否存在某个符合条件的Fact元素的目的,那么我们使用exists还有什么意义?当向Working Memory中加入多个满足条件的Fact对象时,使用了exists的规则执行一次,不使用exists的规则会执行多次。
- ④ 测试类
工作内存中有2个student的对象,发现规则:rule_lhs_6触发了。。。 打印了2次。
条件元素exists(五)
- ① 介绍
规则之间可以使用extends关键字进行规则条件部分的继承,类似于java类之间的继承。
- ② 规则drl
- ③ 测试类
PS:LHS加强大概说完了,下次一起说说RHS加强。
猜你喜欢
- 2024-11-16 drools的类型声明(Type declarations)
- 2024-11-16 规则引擎drools-实战个人所得税计算器
- 2024-11-16 基于 Flink 和 Drools 的实时日志处理
- 2024-11-16 开源、强大的工作流引擎:camunda入门介绍
- 2024-11-16 53-SpringBoot整合Drools_2(springboot整合zuul)
- 2024-11-16 AI应用企业落地方法论:践行财务共享AI审单项目
- 2024-11-16 开启灵活开发编码模式:规则引擎drools——RHS部分
- 2024-11-16 开启灵活开发编码模式:规则引擎drools——高级语法global
- 2024-11-16 43-drools基础语法(比较操作符_memberof)
- 2024-11-16 Google Aviator——轻量级 Java 表达式引擎实战
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)