规则引擎以及Drools简介:
https://www.cnblogs.com/chocolatexll/p/15864384.html、https://blog.csdn.net/Hmj050117/article/details/121891852
DRL文件中高级语法(golbal、query、function、LHS/RHS的高级用法):
https://www.cnblogs.com/wwjj4811/p/15294523.html
完整的drl文件结构:
关键字 | 描述 |
---|---|
package | 包名,只限于逻辑上的管理,同一个包名下的查询或者函数可以直接调用 |
import | 用于导入类或者静态方法 |
global | 全局变量 |
function | 自定义函数 |
query | 查询 |
rule end | 规则体 |
1.agenda-group 属性
为议程分组,属于另一种可控的规则执行方式。用户可以通过设置agenda-group来控制规则的执行,只有获取焦点的组中的规则才会被触发。
与activation-group不同的是,activation-group定义的分组中只能够有一个规则可以被触发,而agenda-group分组中的多个规则都可以被触发。
/*** drl文件 片段代码 ***/
rule "PTEQPYAA"
#activation-group "Trx-Trx"
agenda-group "Trx-Trx"
when
$x : TrxCadInfoX1(xTrcIdn == "123")
$z1 : TrxCadInfoZ1()
then
$z1.setzCadNbr("123456");
end
/*** java文件 片段代码 ***/
KieSession kieSession = KieUtils.getKieSession();
FactHandle trxCadX1 = kieSession.insert(trxCadInfoX1);
kieSession.fireAllRules(new RuleNameEqualsAgendaFilter("Trx-Trx")); //指定议程组匹配规则
//kieSession.delete(trxCadX1); //从工作内存中删除对象
kieSession.dispose(); //关闭session
2.activation-group属性
指激活分组,取值为String类型。具有相同分组名称的规则只能有一个规则被触发。