我在drl文件中的规则会将一个或多个String值返回给调用程序。
现在,我这样做是通过全局变量,如下所示
global java.util.List<String> statuses;
调用程序将传递一个空的ArrayList(),在我的规则中,我将String值添加到List中。最后,我的调用程序将检索可能在列表中包含零个或多个String项的状态列表,如下所示
session.getGlobal("statuses")
但是在drools用户指南中,它表示不建议规则应该更改全局变量的值。
全局变量是将值返回给调用程序的最佳方法吗?如果没有,请问最好的方法是什么?我必须在我的Web应用程序中处理并发性,所以我正在寻找将值返回到调用程序以获得并发性的最佳方法。
由于
答案 0 :(得分:1)
在规则的结果(&#34;右侧&#34;)内更改代码中的全局变量的值没有任何问题。你描述的是全局变量的标准用例之一。
Drools用户指南的作者(请添加确切参考!)意味着不考虑规则条件(&#34;左侧&#34;)中使用的全局更改在(重新)评估这些条件。因此,这是应该避免的。
对于并发:使用正确同步的List对象作为全局。