使用自动对焦时的规则激活顺序

Rule activation order while using auto-focus

如果给定属性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。

许多规则属性都是专门的扩展,允许规则作者减少规则的逻辑。每当 SW 功能宣布 "auto(matic)".

时,您应该非常小心

如果激活(与执行相同)设置议程组,则显着性将仅在决定团体。另一方面,显着性不决定评估顺序。

如果需要按规则处理两个或多个议程组之间的决策,请移除自动聚焦和议程组。调用例如

drools.setFocus( "group1" );

在规则的右侧进行选择。