Я пытаюсь использовать бизнес-правило в процессе jbpm. Бизнес-правило имеет входные и выходные данные, связанные с переменной процесса.
Я пытаюсь вставить и передать параметр процессу. Правило учитывает вставленное значение в процесс вместо рассмотрения бизнес-правила. Я следовал за этим Туто . Я думаю, что я что-то зацикливаю, не могли бы вы помочь, пожалуйста.
Ожидаемое поведение должно быть в выводе консоли incrementation firing... New Value:2
вместо 6
.
Следующий код показывает бизнес-правило:
rule "incrementation"
ruleflow-group "incrementInt"
no-loop
when
unEntier : java.lang.Integer()
then
retract( unEntier );
unEntier++;
System.out.println("incrementation firing... New Value:"+unEntier);
insert(unEntier);
end
Вот как я называю процесс:
Command c0 = CommandFactory.newInsert(new java.lang.Integer(5));
HashMap<String, Object> h = new HashMap<String, Object>() {
{
put("inint", new java.lang.Integer(1));
}
};
Command c1 = CommandFactory.newStartProcess("test.thirdProcess", h);
kieSession.execute(CommandFactory.newBatchExecution(Arrays.asList(c0, c1)));
Это вывод вызова:
ENTRY: int = 1
11342 [main] ERROR org.jbpm.workflow.instance.node.RuleSetNodeInstance - Could not find variable scope for variable var_test.thirdProcess_inint
11342 [main] ERROR org.jbpm.workflow.instance.node.RuleSetNodeInstance - when trying to execute RuleSetNode Task
11342 [main] ERROR org.jbpm.workflow.instance.node.RuleSetNodeInstance - Continuing without setting parameter.
incrementation firing... New Value:6
11357 [main] WARN org.jbpm.workflow.instance.node.RuleSetNodeInstance - Could not find variable scope for variable var_test.thirdProcess_inint
EXIT: int = 1
На следующем рисунке показан реализованный процесс: