我正在尝试使用EasyRules。
我创造了3条规则A,B& C优先级为1,2和2。分别为3。
即使规则A 评估为 true 且优先级最高,也会评估优先级较低的规则(即B& C)。
此规则优先级如何工作?
如果将优先级较高的规则评估为true,那么是否存在解决方案,那么不会评估优先级较低的规则?
答案 0 :(得分:1)
优先级与是否执行规则无关。它仅表示规则的执行顺序
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
规则。