首页 文章

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

提问于
浏览
1

如果给出属性 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 .

1 回答

  • 1

    许多规则属性都是ad-hoc扩展,它们是为了允许规则作者减少规则逻辑而发明的 . 只要SW功能宣布“auto(matic)”,您就应该非常小心 .

    如果激活(与执行不同)设置议程组,则显着性将仅在该组内决定 . 另一方面,显着性不会影响评估顺序 .

    如果您需要按规则处理两个或更多议程组之间的决策,请删除自动焦点和议程组 . 请致电

    drools.setFocus( "group1" );
    

    在规则的右侧做选择 .

相关问题