03 Drools 规则文件结构解析

本文解析了Drools规则文件的结构,包括package、imports、globals、functions、queries和rule等内容。规则文件以.ftl结尾,package并非路径,而是逻辑区分。规则由属性、条件when和结果then组成,不推荐在then部分使用if-else。一个规则文件可包含多个不同名称的规则,执行顺序遵循特定规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

规则文件是以 .ftl 结尾的文本文件

标准的规则文件结构为:

package package-name
imports "引入变量 同Java的import"
globals "定义的全局变量"
functions "规则文件中自定义的方法"
queries "规则文件中自定义的查询方法"
rule "规则体"

 规则文件内容解析:

package:

      与Java文件的package类似 ,但是这里并不是指规则文件的路径,只是逻辑或名称上的区分。可以随便写,但是建议与文件路径一直便于管理,整体结构也比较整洁。

Imports

引入规则文件的外部变量,同Java中的import。


globals

定义规则文件中的全局变量,可以使变量也可以是工具类或者service等


functions

  规则中自定义的方法,

queries

规则中自定义的查询方法,

rule 

rule 关键字用于定义定义drools规则文件中的一个规则。

一个规则有三部分组成:属性部分,条件部分 when ,结果部分 then。以rule开头以end结束。

rule “规则名称”
属性部分:定义规则执行的属性
when
条件部分:LHS(left hand side) 规则的条件
then 
   结果部分:RHS(Right hand side)满足条件后的业务逻辑。
end
属性部分:设置规则属性,例如优先级,是否可重复执行、分组、获取焦点
条件部分:可以有多个条件,默认是与(&&)的关系,没有条件时默认为true。
存在条件时,先判断Fact对象是否存在于Working Memory中。
条件部分又称为pattern(匹配模式),多个pattern之间使用&& 和|| 链接,也可以使用括号确定pattern优先级。
默认使用 “,”表示and的关系,”,”不能与&& ||混用。

 结果部分:条件满足后的执行逻辑,能使用LHS中定义的的变量,或者直接编写Java代码,then中不建议编写if-else条件判断。这样就违背了drools设计的初衷 。与条件部分无关的if-else可以编写。

注:1、一个规则文件中可以有多个规则,每一个规则的名称不能相同;

       2、规则文件执行顺序:当一个规则中有多个规则组的的时候,默认从下往上执行,同一个规则组内优先级高的先执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值