onExit в jBPM 5.4 Human Task

Я использую jBPM 5.4 с MsSql.

Он работает нормально.

У меня простой рабочий процесс из СТАРТ ----> ЗАДАЧА A ----------> ЗАДАЧА B --------> СТОП

Я пытаюсь получить доступ к такому рабочему процессу из сервлетов

Когда я выполняю такой рабочий процесс, я могу перенаправить его до начала задачи B.

onExit задачи B не вызывается.

Следовательно, рабочий процесс не достигает состояния Завершено, но таблица задач обновляется до состояния завершения, и никаких исключений не регистрируется.

Это мой журнал сервера,

[stdout] (http-localhost-127.0.0.1-8080-1) ****** Creating EMF

[stdout] (http-localhost-127.0.0.1-8080-1) ****** Creating env

[stdout] (http-localhost-127.0.0.1-8080-1) ****** Reading Properties

[stdout] (http-localhost-127.0.0.1-8080-1) ****** config section

[stdout] (http-localhost-127.0.0.1-8080-1) OnEntrying the First Task ***

[stdout] (http-localhost-127.0.0.1-8080-1) Started Process Output 14

[stdout] (http-localhost-127.0.0.1-8080-1) Completed Process Output 14

[stdout] (Thread-73) OnExiting the First Task ***

[stdout] (Thread-73) OnEntrying the Second Task ***

[stdout] (http-localhost-127.0.0.1-8080-1) Started Process Output 15

[stdout] (http-localhost-127.0.0.1-8080-1) Completed Process Output 15

person siva    schedule 18.02.2013    source источник
comment
Как вы начинаете свой процесс? Вы используете ksession.startProcess() или ksession.startProcessInstance()?. Была известная ошибка, которая препятствовала выполнению внутренних прослушивателей (из-за грязного tx), если вы используете последний. Надеюсь, поможет,   -  person Esteban Aliverti    schedule 18.02.2013
comment
@EstebanAliverti ksession.startProcess(com.sample.bpmn.hello); что я использую   -  person siva    schedule 18.02.2013


Ответы (2)


Важно, чтобы у вас был сеанс подключения к вашей службе задач, когда вы выполняете свою задачу, чтобы этот сеанс мог продолжить выполнение вашего процесса. Так:

  • как вы используете службу задач? локальная служба задач или удаленная с помощью HornetQ?

  • сеанс, запустивший экземпляр процесса, все еще активен? или, если нет, создаете ли вы новый сеанс перед выполнением задачи?

  • Вы вызывали connect() в обработчике человеческих задач после его создания? это фактически подключает обработчик к службе задач и регистрирует необходимые слушатели

person Kris Verlaenen    schedule 24.02.2013
comment
1. Я подключаюсь к HornetQ, работающему через порт 5153 на моей машине. 2. Я сделал свой ksession статическим, так что я думаю, он будет в памяти. 3. Я использовал команду connect, когда регистрировался в TaskHandler. Я должен сделать это где-то еще? - person siva; 25.02.2013

Поскольку он успешно выполняет первую задачу, кажется, что изменения могут не сохраняться после завершения первой задачи. Какой класс обработчика вы используете? Не могли бы вы включить вывод sql (в вашем файле persistence.xml) и проверить, видите ли вы необходимые изменения в классе информации об экземпляре процесса после выполнения первой задачи?

Крис

person Kris Verlaenen    schedule 25.02.2013
comment
я не смог прикрепить лог сервера сюда. поэтому, пожалуйста, найдите его здесь, здесь. Я надеюсь, что изменения отражены в классе информации о процессе. . Также любезно просмотрите прилагаемый файл persistence.xml. Фрагмент для создания процесса: HornetQHTWorkItemHandler myhandler = new HornetQHTWorkItemHandler(ksession); try{ StartProcess.ksession.getWorkItemManager().registerWorkItemHandler("Human Task", myhandler); }catch(Exception e){ e.printStackTrace(); } - person siva; 26.02.2013