drools规则引擎agenda-group注意事项
需求场景
版本:drools使用的版本是:7.2.0.Final
需求场景:根据每次请求的规则分组id,运行不同的规则
初步方案
使用agenda-group关键字区分规则,使用下面这条代码来focus到不同的规则分组:
kieSession.getAgenda().getAgendaGroup(id).setFocus();
遇到问题
其他不相关,没有被focus标注的规则也被运行,规则条件中调用的外部工具方法的日志已经打印,说明已经被执行。
为什么会出现这种情况?
原因
kieSession中包含的所有规则,默认情况下首先会执行所有规则的LHS,就是when和then之间的部分。这也就是说与是否使用focus并无关系。
而当真正运行时才会进行指定的focus规则的then部分的执行。
解决方案
规则根据kieSession进行拆分,无用的规则不需要加载到kieSession中。这样,就避免了本来没有使用的规则的LHS的判断。
Drools技术视频
CSDN学院:《Drools7规则引擎进阶教程》
CSDN学院:《Drools7规则引擎入门教程》
CSDN学院:《Drools7系列优惠套餐》
《Drools规则引擎基础+Workbench实战视频教程套餐》
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:https://choupangxia.com/2019/11/28/drools-agenda-group-problem/