Java 在easy rules中触发的规则是否基于优先级而非独占性?
我正在努力与你合作 我创建了3个规则A、B和C,分别具有优先级1、2和3 尽管规则A被评估为true且具有最高优先级,但优先级较低的规则(即B&C)仍在评估中 这个规则的优先级是如何工作的Java 在easy rules中触发的规则是否基于优先级而非独占性?,java,rule-engine,Java,Rule Engine,我正在努力与你合作 我创建了3个规则A、B和C,分别具有优先级1、2和3 尽管规则A被评估为true且具有最高优先级,但优先级较低的规则(即B&C)仍在评估中 这个规则的优先级是如何工作的 如果优先级较高的规则求值为true,则不求值优先级较低的规则,是否有解决方法?优先级与是否执行规则无关。仅表示规则的执行顺序 从: Easy Rules中的每个规则都有优先级。这表示默认值 启动已注册规则的顺序。默认情况下,值较低 代表更高的优先级 你也可以阅读: 如果组合规则的所有条件都满足,则会触发组合规
如果优先级较高的规则求值为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
规则。谢谢。这澄清了很多事情。这意味着,我必须结合使用优先级和。以及kiponfirstappliedrule(true)
来实现所需的行为。