我正在尝试使用 EasyRules。
我创建了 3 条规则 A、B 和 C,优先级分别为 1、2 和 3。
尽管规则 A 被评估为 true 并且具有最高优先级,但优先级较低的规则(即 B 和 C)正在被评估。
这个规则优先级是如何运作的?
是否有解决办法,如果具有较高优先级的规则被评估为 true,则不会评估具有较低优先级的规则?
优先级与规则是否执行无关。仅表示规则的执行顺序
来自文档:
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
规则。