需求场景

版本:drools使用的版本是:7.2.0.Final

需求场景:根据每次请求的大发3d分组id,运行不同的大发3d

初步方案

使用agenda-group关键字区分大发3d,使用下面这条代码来focus到不同的大发3d分组:

kieSession.getAgenda().getAgendaGroup(id).setFocus();

遇到问题

其他不相关,没有被focus标注的大发3d也被运行,大发3d条件中调用的外部工具方法的日志已经打印,说明已经被执行。

为什么会出现这种情况?

原因

kieSession中包含的所有大发3d,默认情况下首先会执行所有大发3d的LHS,就是when和then之间的部分。这也就是说与是否使用focus并无关系。

而当真正运行时才会进行指定的focus大发3d的then部分的执行。

解决方案

大发3d根据kieSession进行拆分,无用的大发3d不需要加载到kieSession中。这样,就避免了本来没有使用的大发3d的LHS的判断。

Drools五分11选5视频

CSDN学院:《Drools7大发3d引擎进阶教程》

CSDN学院:《Drools7大发3d引擎入门教程》

CSDN学院:《Drools7系列优惠套餐》

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注