我可以在Drools 6中为同一规则只有一个议程组声明吗?
我能说出来吗?
rule "rule_x"
agenda-group "group_x"
agenda-group "group_y"
when
then
end
我想在几个小组聚焦时激活这个规则。
答案 0 :(得分:2)
大多数规则属性只是语法糖,而议程组就是其中之一。通过回退到逻辑模式很容易实现相同的效果。
定义
class Group { private String name; ... }
并使用它的一个实例作为表示当前活动组的事实。规则必须显示其他模式:
rule in-group-one
when
Group( name == "one" )
...
如果规则同时在几个组中:
rule in-groups-one-two
when
Group( name in ("one", "two") )
您还可以模仿议程组堆叠的行为。
<强>后来强> 应该非常仔细地考虑同时聚焦多个小组的想法。虽然很明显当这三个群体成为焦点时,群a,b和c中的规则应该触发,但是根本不清楚群a和b中的规则应该发生什么,或者群a中的另一个规则应该发生什么,c和d。任何应该发生的事情确实可以用逻辑来表达,但它是否有意义,并且(更重要的是)它是否有用?