如何在Drools中删除主议程的默认焦点?
我正在使用Drools 6.2.0 我想将我的规则分为3组(第一组、主要组、最后一组), 并按以下顺序执行:如何在Drools中删除主议程的默认焦点?,drools,kie,Drools,Kie,我正在使用Drools 6.2.0 我想将我的规则分为3组(第一组、主要组、最后一组), 并按以下顺序执行: 首先 主要 最后 为了做到这一点,我在必要的规则中使用了议程组“FIRST”和议程组“LAST”。默认情况下,其他规则属于主议程 我正在使用此代码指定顺序: private void configureAgendas() { Agenda agenda = session.getAgenda(); agenda.getAgendaGroup("LAST").setF
- 首先
- 主要
- 最后
private void configureAgendas() {
Agenda agenda = session.getAgenda();
agenda.getAgendaGroup("LAST").setFocus();
agenda.getAgendaGroup("MAIN").setFocus();
agenda.getAgendaGroup("FIRST").setFocus();
}
我的问题是,主要议程总是在最后执行。
所以,我要执行两次主要议程:
- 首先
- 主要
- 最后
- MAIN(再次执行。我想跳过最后一次执行)
注意:我已经尝试使用了显著性整数.MIN_值,但在此之后仍将执行主议程的规则。如果确实需要以这种方式控制规则执行,则应完全避免默认组,并将所有规则放在“一”、“二”、“三”中的一个中 请注意,规则外部的规则属性。。。在取消或更改之前,end对以下所有规则都有效,因此无需为每个规则设置规则组 (奇怪的是,在MAIN和LAST都用尽之后,仍然有MAIN规则触发。我不喜欢这种情况。)
编辑:另一个选项是在最后添加一个优先级最低的规则,将焦点更改为第一个。您可能需要另一个“倒带”最后一个规则,以便它在下一轮结束时再次触发。如果您确实需要以这种方式控制规则执行,您应该完全避免默认组,并将所有规则放在“一”、“二”、“三”中的一个 请注意,规则外部的规则属性。。。在取消或更改之前,end对以下所有规则都有效,因此无需为每个规则设置规则组 (奇怪的是,在MAIN和LAST都用尽之后,仍然有MAIN规则触发。我不喜欢这种情况。)
编辑:另一个选项是在最后添加一个优先级最低的规则,将焦点更改为第一个。您可能需要另一个来“倒带”最后一条规则,以便它在下一轮结束时再次触发。谢谢@laune,我没想到这种行为也会发生。我的问题是最糟糕的,因为我无法更改其他100条规则,因为它们仍然是在生产数据库中创建的,等等。因此,我需要使用主议程+我的议程中的规则…谢谢@laune,我也没想到会出现这种行为。我的问题是最糟糕的,因为我无法更改其他100条规则,因为它们仍然是在生产数据库中创建的,等等。所以,我需要在主议程+我的议程中使用规则。。。