我们正在使用 Drools 6。
我所有的规则分为两类,预取规则和主规则。
我想以某种方式首先触发所有用议程组“预取”定义的规则,然后在完成后触发议程组“mainRules”。
想知道,是否有可能做到这一点并在我们触发所有规则的情况下从外部单独触发议程组并仍然在两者之间共享上下文?
我在某处看到过“setAgendaFilter”方法,但我在无状态 session 中找不到它,不确定它是否已在 Drools 6 中删除。
谁能帮我解决这个问题?
PS.: 在组“prefetch”中的内部规则我们有“插入”,这样它会导致规则再次被触发,我不希望这导致触发组“mainRules”中的规则
最佳答案
使用 StatefulKnowledgeSession (5.x) 或 KieSession (6.x) kSession 或者你可以
kSession.getAgenda().getAgendaGroup( "prefetch" ).setFocus();
kSession.fireAllRules();
kSession.getAgenda().getAgendaGroup( "mainRules" ).setFocus();
kSession.fireAllRules();
放松,看着它们闪烁。
关于java - 在流口水中分别开火议程组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21975213/