Drools 6.2.0 верстак редактирует переменную jbpm из правила drl
Я пытаюсь поместить переменную процесса в задачу бизнес-правила и изменить эту переменную в этой задаче, но значение остается неизменным. Что я делаю неправильно? Процесс разрабатывается в Kie Workbench, без использования Eclipse.
Мои переменные инициализированы в задаче сценария, прежде чем правило сработало
kcontext.setVariable("triggers",new com.embeddedwireless.healthdesk.InitialTriggers(false,false,false,false));
kcontext.setVariable("answers",new com.embeddedwireless.healthdesk.InitialAnswers("not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","not","twice","not"));
Правило выглядит так
package com.embeddedwireless.healthdesk;
import com.embeddedwireless.healthdesk.InitialAnswers
import com.embeddedwireless.healthdesk.InitialTriggers
rule "BehavioralHealth" ruleflow-group "InitialCheck"
no-loop
lock-on-active
salience 1
when
answers : InitialAnswers( q9a in ( "always", "most", "some" ) || q10a in ( "always", "most", "some" ) || q12a in ( "always", "most", "some" ) )
triggers_out : InitialTriggers()
then
System.out.println("Beh!!!!");
triggers_out.setBehavioral( true );
update( triggers_out );
end
rule "OccupationalRule" ruleflow-group "InitialCheck"
no-loop
lock-on-active
salience 2
when
answers : InitialAnswers( q3a in ( "some", "rare", "not" ) || q3b in ( "some", "rare", "not" ) || q4a in ( "some", "rare", "not" ) || q7b in ( "always", "most", "some" ) )
triggers_out : InitialTriggers()
then
System.out.println("Occupation!!!!");
triggers_out.setOccupational( true );
update( triggers_out );
end
rule "PhysicalRule" ruleflow-group "InitialCheck"
no-loop
lock-on-active
salience 3
when
answers : InitialAnswers( q1a in ( "some", "rare", "not" ) || q1b in ( "some", "rare", "not" ) || q2a in ( "some", "rare", "not" ) || q2b in ( "some", "rare", "not" ) || q11a in ( "always", "most", "some" ) || q11b in ( "once", "twice", "more", "often" ) )
triggers_out:InitialTriggers()
then
System.out.println("Phys!!!!");
triggers_out.setPhysical( true );
update( triggers_out );
end
rule "Speech Rule" ruleflow-group "InitialCheck"
no-loop
lock-on-active
salience 4
when
answers : InitialAnswers( q7a in ( "always", "most", "some" ) )
triggers_out : InitialTriggers()
then
System.out.println("Speech!!!!");
triggers_out.setSpeech( true );
update( triggers_out );
end
Я жду переменную триггера, но она остается
InitialTriggers{physical=false, occupational=false, speech=false, behavioral=false}
Данные в порядке, а журнал tomcat содержит отладочные сообщения, такие как "Phys!!!!". Что я делаю неправильно?
Спасибо за помощь!
1 ответ
Ну, все было в порядке. Я смотрю на историю переменных и не вижу изменений. Была проблема в kie-wb. Моя переменная была изменена, но в kie-wb было показано старое значение.