Drools 6许多议程组声明

时间:2014-12-06 19:03:01

标签: drools

我可以在Drools 6中为同一规则只有一个议程组声明吗?

我能说出来吗?

rule "rule_x"
agenda-group "group_x"
agenda-group "group_y"
when

then
end

我想在几个小组聚焦时激活这个规则。

1 个答案:

答案 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。任何应该发生的事情确实可以用逻辑来表达,但它是否有意义,并且(更重要的是)它是否有用?