在drools规则中是否需要“modify()”或“update()”?

时间:2015-10-11 12:58:07

标签: drools

我有两个规则,它们具有相同的显着性,相同的LHS但不同的RHS。我希望这两条规则都会被执行。但是,它们都会使LHS模式再次无法匹配。如果我使用modify()或update(),则必须有一个无法执行。 是否有一些策略可以让drools知道在所有RHS执行后工作内存已经改变了?

1 个答案:

答案 0 :(得分:2)

有人可能会说,使用相同LHS的两条规则是糟糕的设计。如果一方或另一方的RHS打算修改一个或多个参与事实,则尤其如此。

因此,第一个建议是:合并右侧,以便您只有一条规则。

下一个最好的方法是使射击顺序具有确定性。在两者中使用显着性,以保证他们的相对奥得。将所有更新/修改调用移至具有较低显着性的规则。

最后,如果不需要进行更改,则无需使用更新/修改"通过规则引擎。这(我称之为)"脏更新"在信息应该积累但对LHS逻辑没有任何影响的地方很方便。