2014-05-11 5 views
1

Я создал процесс в jbpm 6. Существует класс Person с именем атрибута и возрастом. В форме процесса вводится имя и возраст человека. Первым узлом процесса является человеческая задача для просмотра деталей. Второй узел - это шлюз XOR с выражением drools на его дугах, таких как Person (возраст> 20) и Person (возраст < 20). Теперь, когда я выполняю экземпляр процесса, первые человеческие задачи работают нормально, но когда он достигает шлюза, я вижу эту ошибку: «XOR split не смог найти хотя бы одно действительное исходящее соединение для split Gateway». Любая идея, в чем дело.Правила в jBPM 6

+0

Рассмотрит, что может произойти, если 'возраст == 20' –

ответ

1

Шлюзы, содержащие выражения слюни, работают только с фактами, а не с переменными процесса. Если вы хотите использовать выражение drools в ваших шлюзах, вам нужно будет вставить переменную процесса (или весь экземпляр процесса) как факт. Вы можете сделать это, используя узел скрипта, исходящее действие в своей человеческой задаче.

From documentation: ограничения

правило, не имеют прямой доступ к переменным, определенным внутри процесса. Тем не менее, можно ссылаться на текущий экземпляр процесса внутри ограничения правил, добавляя экземпляр процесса в рабочую память и сопоставляя экземпляр процесса с ограничением правила. ....... Обратите внимание, что вы тем самым несете ответственность за вставку экземпляра процесса в сеанс и, возможно, его обновление, например, с использованием кода Java или действия on-entry или on-exit или явного действия в вашем обработать.

Надеется, что это помогает,

+0

Так что я положил«kcontext.getKnowledgeRuntime() вставить (лицо);.»В сценарии на выходе человеческой задачи , И это сработало. – user3586442

Смежные вопросы