如果给出属性auto-focus
,我对激活规则的顺序有疑问。
例如,如果我有以下规则文件:
rule "Rule1" salience 2
agenda-group "group1"
auto-focus
when
...
then
...
end
rule "Rule2" salience 1
agenda-group "group2"
auto-focus
when
...
then
...
end
我传递了一个激活这两个规则的事实,我观察到议程组按顺序堆叠:
group2
group1
表示首先执行Rule2
。
现在,如果我颠倒规则的顺序:
rule "Rule2" salience 1
agenda-group "group2"
auto-focus
when
...
then
...
end
rule "Rule1" salience 2
agenda-group "group1"
auto-focus
when
...
then
...
end
我发现Rule1
现在先被解雇了。
这是否意味着突出显示不会影响auto-focus
情况下的激活顺序,而是取决于规则文件中规则的写入顺序?
关于这个话题,我经历了this discussion,但没有找到满意的答案。
如果我描述的行为是正确的,是否记录在任何地方?
我正在使用Drools 6.2.0。
答案 0 :(得分:1)
许多规则属性都是ad-hoc扩展,它们是为了让规则作者减少规则逻辑而发明的。当SW功能宣布“auto(matic)”时,您应该非常小心。
如果激活(不与执行相同)设置了一个议程组,那么突出显示只会决定该组中的 。另一方面,突显并不影响评估顺序。
如果您需要按规则处理两个或更多议程组之间的决策,请删除自动对焦和议程组。打电话,例如
drools.setFocus( "group1" );
在规则的右侧进行选择。