我正在使用Drools 6.2.0
我想将我的规则分为3组(FIRST,MAIN,LAST), 并按此顺序执行:
要做到这一点,我使用议程组" FIRST" 和议程组"最后" 在必要的规则。其他规则默认属于 MAIN 议程。
我使用此代码指定顺序:
private void configureAgendas() {
Agenda agenda = session.getAgenda();
agenda.getAgendaGroup("LAST").setFocus();
agenda.getAgendaGroup("MAIN").setFocus();
agenda.getAgendaGroup("FIRST").setFocus();
}
我的问题是MAIN议程总是在END执行。 所以,我已经执行了两次MAIN议程:
我怎么能做到这一点?
如果我无法禁用MAIN议程的自动执行, 如何创建一个将要执行的最后一条规则?
注意:我已经尝试使用显着性Integer.MIN_VALUE ,但我仍然有在此之后执行MAIN议程的规则。
答案 0 :(得分:0)
如果您确实需要以这种方式控制规则执行,则应该完全避免使用默认组,并将所有规则放在" one"," 2",&#中34;三"
请注意,规则... end之外的规则属性对所有后续规则有效,直到取消或更改为止,因此无需为每个规则设置规则组。
(奇怪的是,在MAIN和LAST用尽之后仍有MAIN规则被解雇。我不喜欢这种情况。)
编辑:另一个选项是在LAST中添加一个具有最低优先级的规则,以将焦点更改为FIRST。您可能需要另一个来回放"倒带"最后一条规则在最后一次,以便在下一轮结束时再次发射。