我们正在使用Drools 6。
我的所有规则都分为两类,预取规则和主要规则。
我想以某种方式触发所有使用议程组'prefetch'定义的规则,然后一旦完成,然后触发议程组'mainRules'。
想知道,是否有可能做到这一点,并在我们解除所有规则并且仍然分享两者之间的背景的情况下分别从外部解雇议程小组?
我在某处找到了一个方法'setAgendaFilter',但我无法在无状态会话中找到它,不确定它是否已在Drools 6中删除。
有人可以帮我吗?
PS:组'预取'中的内部规则我们有'插入'以便它再次触发规则,我不希望这导致在'mainRules'组中触发规则
答案 0 :(得分:2)
使用StatefulKnowledgeSession(5.x)或KieSession(6.x)kSession,或者你可以
kSession.getAgenda().getAgendaGroup( "prefetch" ).setFocus();
kSession.fireAllRules();
kSession.getAgenda().getAgendaGroup( "mainRules" ).setFocus();
kSession.fireAllRules();
放松,看着他们眨眼。
答案 1 :(得分:0)
请查看drools documentation中的ruleflow-group
。
Ruleflow是一种Drools功能,可让您控制规则的触发。由相同的规则流组标识符汇编的规则仅在其组处于活动状态时触发。