【问题标题】:How can I define that only one rule has to be executed in EasyRules?如何定义在 EasyRules 中只需要执行一个规则?
【发布时间】:2020-04-10 03:12:32
【问题描述】:

我正在使用easy-rules 评估一组场景,每个场景都会执行不同的逻辑。我想确保从所有注册的规则中只有一个被执行,我有以下代码:

public static void main(String[] args) {
    Facts facts = new Facts();
    facts.put("object", "value");

     Rules rules = new Rules();
     rules.register(new Rule1());
     rules.register(new Rule2());
     rules.register(new Rule3());

     RulesEngine rulesEngine=new DefaultRulesEngine();
     rulesEngine.fire(rules, facts);
}

在前面的示例中,我想确保如果 Rule1 被执行,则 Rule2 和 Rule3 不会。

感谢您的帮助

【问题讨论】:

    标签: java rule-engine easy-rules


    【解决方案1】:

    要在匹配发生后停止进一步执行规则,您需要如下配置规则引擎:

    RulesEngineParameters parameters = new RulesEngineParameters()
    .skipOnFirstAppliedRule(true);
    RulesEngine rulesEngine=new DefaultRulesEngine(parameters);
    

    From the Docs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-15
      • 1970-01-01
      • 2010-12-26
      相关资源
      最近更新 更多