DRL 中 global 变量的定义
先看个例子,java api:
List<String> list = new ArrayList<>();
KieSession kieSession = kiebase.newKieSession();
kieSession.setGlobal("myGlobalList", list);
drl 规则文件:
global java.util.List myGlobalList;
rule "Using a global"
when
// Empty
then
myGlobalList.add("My global list");
end
注意: 不要使用 global 变量去连接条件,除非它是一个常量,有固定的值。由于 global 变量并不是在 working memory 中的,所以 drools 引擎是无法感知它的变化
总结: 通过上面的例子我们可以看出,global 变量是如何使用的,先在 drl 规则文件中定义和使用,再通过 kiessesion 的 java api 设置值。