Drools Workbench: как использовать глобальные переменные в файле правил - PullRequest
0 голосов
/ 08 июля 2019

Я использую Drools Workbench 7.17, интегрированный с исполнительным сервером Kie. Я создал проект с использованием рабочей среды, которая состоит из моделей данных, файла правил и глобальных определений.

Я хочу использовать глобальную переменную для установки некоторого значения в ней, если выполняется правило, и получить значение глобальной переменной. Я могу добиться этого, используя приложение весенней загрузки, где мы добавляем глобальную переменную в сессию, используя kieSession.setGlobal("response", response);, и извлекаем ее, используя kieSession.getGlobal("response"). Я попытался повторить то же самое с верстаком, но я получаю исключение нулевого указателя , когда я пытаюсь установить значение в глобальной переменной. Ниже приведен мой файл правил:

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. Есть ли что-нибудь требуется, кроме этого? Я использую Kie Server Rest API для вставки фактов.

1 Ответ

1 голос
/ 08 июля 2019

Вам нужно инициализировать глобальную переменную при отправке запросов на выполнение правила, например:

<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>

Попробуйте с этим подходом

...