Drools workbench:如何利用规则文件中的全局变量

Drools workbench:如何利用规则文件中的全局变量,drools,kie-workbench,Drools,Kie Workbench,我正在使用与Kie执行服务器集成的Drools workbench 7.17。我使用workbench创建了这个项目,它由数据模型、规则文件和全局定义组成 若执行规则并检索全局变量值,我想使用全局变量在其中设置一些值。我可以使用SpringBoot应用程序实现这一点,在会话中使用kieSession.setGlobal(“response”,response)添加全局变量并使用kieSession.getGlobal(“响应”)检索它。我尝试用workbench复制相同的值,但当我尝试在全局变量

我正在使用与Kie执行服务器集成的Drools workbench 7.17。我使用workbench创建了这个项目,它由数据模型、规则文件和全局定义组成

若执行规则并检索全局变量值,我想使用全局变量在其中设置一些值。我可以使用SpringBoot应用程序实现这一点,在会话中使用
kieSession.setGlobal(“response”,response)添加全局变量
并使用
kieSession.getGlobal(“响应”)
检索它。我尝试用workbench复制相同的值,但当我尝试在全局变量中设置值时,我得到了空指针异常。下面是我的规则文件:

package com.myspace.drools_ruleengine;
import com.myspace.drools_ruleengine.Person;
global com.myspace.drools_ruleengine.Response response;
dialect "mvel"
rule "If person age >= 18 then person is adult"
no-loop
when
    $p: Person(age >= 18)
then
    response.setMessage("Adult");  // throwing error- null pointer exception
end

我已经创建了全局定义,并添加了response作为response类的别名。除此之外还需要什么吗?我正在使用Kie Server Rest API插入事实。

在发送规则执行请求时,需要初始化全局变量,如下所示:

<batch-execution>
<set-global identifier="obj">
  <com.sample.Test/>
</set-global>
<insert>
  <com.Person>
     <name>abc</name>
   </com.Person>
</insert>
<fire-all-rules/>
</batch-execution>

abc

尝试这种方法

在发送规则执行请求时,您需要初始化全局变量,如下所示:

<batch-execution>
<set-global identifier="obj">
  <com.sample.Test/>
</set-global>
<insert>
  <com.Person>
     <name>abc</name>
   </com.Person>
</insert>
<fire-all-rules/>
</batch-execution>

abc
尝试这种方法