我想知道是否有一种方法可以定义规则之间的层次结构(而不仅仅是执行顺序)并控制规则执行 - 即如果父规则被触发,则不应评估下面的规则等...
该线程中的信息是一个选项,但本质上是 IF/THEN/ELSE https://stackoverflow.com/questions/9771396/drools-jboss-rule-nested-ifs
有不同的选择吗?
thanks
我不确定我是否理解您的问题,但结合使用激活组和传统的冲突解决策略可能会达到您的需求。例如,假设您有 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"
...
显着性保证如果 A 激活,它将首先触发,然后是 B,如果它们被激活,则接着是 C。激活组保证一旦其中一条规则触发,该组中所有其他激活的规则都将被取消。因此,假设在您的会话中,规则 B 和 C 激活,但规则 A 未激活,则 B 将触发,而 C 将被取消。
请注意,激活组不会阻止规则稍后重新激活。它只是在组中的规则之一触发时取消当前议程中的任何激活。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)