从Drools 6规则返回值到调用程序的最佳方法是什么?

时间:2015-06-02 03:26:46

标签: drools

我在drl文件中的规则会将一个或多个String值返回给调用程序。

现在,我这样做是通过全局变量,如下所示

global java.util.List<String> statuses;

调用程序将传递一个空的ArrayList(),在我的规则中,我将String值添加到List中。最后,我的调用程序将检索可能在列表中包含零个或多个String项的状态列表,如下所示

session.getGlobal("statuses")

但是在drools用户指南中,它表示不建议规则应该更改全局变量的值。

全局变量是将值返回给调用程序的最佳方法吗?如果没有,请问最好的方法是什么?我必须在我的Web应用程序中处理并发性,所以我正在寻找将值返回到调用程序以获得并发性的最佳方法。

由于

1 个答案:

答案 0 :(得分:1)

在规则的结果(&#34;右侧&#34;)内更改代码中的全局变量的值没有任何问题。你描述的是全局变量的标准用例之一。

Drools用户指南的作者(请添加确切参考!)意味着不考虑规则条件(&#34;左侧&#34;)中使用的全局更改在(重新)评估这些条件。因此,这是应该避免的。

对于并发:使用正确同步的List对象作为全局。