10

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

此线程中的信息是一个选项,但它本质上是 IF/THEN/ELSE

有不同的选择吗?

谢谢

4

1 回答 1

15

我不确定我是否理解您的问题,但结合使用激活组和传统的冲突解决策略可能会达到您的需要。例如,假设您有 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 将被取消。

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

于 2012-06-01T16:23:01.790 回答