Drools - 规则层次结构和条件执行

shi*_*mbu 9 nested rules drools hierarchy

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

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

有不同的选择吗?

谢谢

Eds*_*lli 14

我不确定我是否理解您的问题,但使用激活组和传统冲突解决策略的组合可能会达到您的需求.例如,假设您有3个规则,A,B和C.您希望使用,例如,突出显示按顺序为它们执行优先级,并且一旦执行,则该组中的其他规则不应执行.您可以像这样定义它们:

rule A
    salience 30
    activation-group "x"
...

rule B
    salience 20
    activation-group "x"
...

rule C
    salience 10
    activation-group "x"
...
Run Code Online (Sandbox Code Playgroud)

显着性保证如果A激活,它将首先触发,然后是B,然后是C,如果它们被激活.激活组保证一旦其中一个规则触发,该组中的所有其他激活规则都将被取消.所以,让我们说在你的会话中,规则B和C激活,但不激活A,那么B将触发,C将被取消.

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