简单规则中触发的规则是否基于优先级不具有排他性?

问题描述 投票:0回答:1

我正在尝试使用 EasyRules

我创建了 3 条规则 A、B 和 C,优先级分别为 1、2 和 3。

尽管规则 A 被评估为 true 并且具有最高优先级,但优先级较低的规则(即 B 和 C)正在被评估。

这个规则优先级是如何运作的?

是否有解决办法,如果具有较高优先级的规则被评估为 true,则不会评估具有较低优先级的规则?

java rule-engine
1个回答
2
投票

优先级与规则是否执行无关。仅表示规则的执行顺序

来自文档

Easy Rules 中的每条规则都有一个优先级。这代表默认 已注册规则的触发顺序。默认情况下,较低的值 代表更高的优先级。

您还可以阅读:

如果复合规则的所有条件都满足,则触发复合规则 很满意。当应用复合规则时,所有的动作 编写规则是按照规则的自然顺序执行的,即 默认规则优先级。

如果您希望引擎在应用规则后跳过规则,您应该为引擎提供将参数

skipOnFirstAppliedRule
设置为
true

RulesEngine  rulesEngine = RulesEngineBuilder.aNewRulesEngine()
                          .withSkipOnFirstAppliedRule(true)
                          .build();

// add your rules in the RulesEngine
rulesEngine.registerRule(new A());
rulesEngine.registerRule(new B());
rulesEngine.registerRule(new C());

// execute the rules
rulesEngine.fireRules();

在您的情况下,只会执行

A
规则。

© www.soinside.com 2019 - 2024. All rights reserved.