这些规则是根据优先级排除在简单规则中的吗?

时间:2016-12-22 10:42:26

标签: java rule-engine

我正在尝试使用EasyRules

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

即使规则A 评估为 true 且优先级最高,也会评估优先级较低的规则(即B& C)。

此规则优先级如何工作?

如果将优先级较高的规则评估为true,那么是否存在解决方案,那么不会评估优先级较低的规则?

1 个答案:

答案 0 :(得分:1)

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

来自documentation

  

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规则。