【问题标题】:Drools - rule hierarchy and conditional executionDrools - 规则层次结构和条件执行
【发布时间】:2012-06-05 01:20:19
【问题描述】:

我想知道是否有一种方法可以定义规则之间的层次结构(不仅仅是执行顺序)并控制规则执行 - 即如果父规则被触发,那么下面的规则不应该被评估等等......

Information in this thread is an option but it is essentially IF/THEN/ELSE

有其他选择吗?

谢谢

【问题讨论】:

    标签: nested hierarchy rules drools


    【解决方案1】:

    我不确定我是否理解您的问题,但结合使用激活组和传统的冲突解决策略可能会满足您的需求。例如,假设您有 3 条规则,A、B 和 C。您想使用,比如说,salience 以该顺序优先执行它们,并且一旦执行一个规则,该组中的其他规则都不应执行.你可以这样定义它们:

    rule A
        salience 30
        activation-group "x"
    ...
    
    rule B
        salience 20
        activation-group "x"
    ...
    
    rule C
        salience 10
        activation-group "x"
    ...
    

    显着性保证如果 A 被激活,它将首先触发,然后是 B,如果它们被激活,然后是 C。激活组保证一旦其中一个规则触发,该组中所有其他激活的规则都将被取消。因此,假设在您的会话中,规则 B 和 C 激活,但 A 未激活,那么 B 将触发,C 将被取消。

    请注意,激活组不会阻止以后重新激活规则。它只是在组中的一条规则触发时取消当前议程中的所有激活。

    【讨论】:

      猜你喜欢
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多