Camunda BPMN - слушатель задач против слушателей выполнения

Я использую Camunda BPMN 2.0 для одного из своих приложений рабочего процесса. В одной из моих служебных задач я создал прослушиватель выполнения в событии start и прослушиватель задачи в событии create. Я не уверен, правильно ли назначать их одновременно в стартовом событии. Если это правильно, какой из них будет выполняться первым - прослушиватель выполнения или прослушиватель задач, при запуске или событии создания, соответственно?


person Ramdas Nair    schedule 08.04.2015    source источник
comment
Не могли бы вы показать свой код? Что ты пробовал?   -  person abarisone    schedule 08.04.2015
comment
@abarisone Я назначил слушателей непосредственно на служебные задачи на диаграмме BPMN через Eclipse.   -  person Ramdas Nair    schedule 08.04.2015


Ответы (1)


Прослушиватели задач могут использоваться только с пользовательскими задачами, поскольку они обеспечивают обратные вызовы при изменении состояния задачи (т. Е. Задачи, которую должен выполнить человек), cf http://docs.camunda.org/latest/guides/user-guide/#process-engine-delegation-code-task-listener

Предполагая, что у вас есть пользовательская задача вроде

<userTask id="task1" name="My task" >
  <extensionElements>
    <camunda:executionListener event="start" class="com.example.MyExecutionListener" />
    <camunda:taskListener event="create" class="com.example.MyTaskListener" />
  </extensionElements>
</userTask>

Когда пользовательская задача выполняется

  1. Слушатель выполнения называется
  2. Слушатель задачи называется

Как правило, цикл событий прослушивателя задач содержится между событиями прослушивателя выполнения start и end. Итак, цикл выполнения пользовательской задачи:

  1. ExecutionListener # start
  2. TaskListener # создать
  3. TaskListener # {assignment} *
  4. TaskListener # {complete, delete}
  5. ExecutionListener # конец
person thorben    schedule 08.04.2015
comment
Сначала я добавил TaskListener # Create и только потом добавил ExecutionListener # start, установив его в свойствах моей пользовательской задачи на диаграмме bpmn. Я обнаружил, что поток идет непосредственно в taskListener, а не в executionListener. Так что мне нужно изменить порядок в моем текущем порядке XML: ‹extensionElements› ‹camunda: taskListener event = create class = com.example.MyTaskListener /› ‹camunda: executionListener event = start class = com.example.MyExecutionListener /› ‹ / extensionElements › - person Ramdas Nair; 08.04.2015
comment
Порядок элементов в XML не должен иметь значения, и в тестовом случае мне не удалось воспроизвести вашу проблему. Я предлагаю вам поднять это как проблему на форумах Camunda и предоставить тестовый пример: groups.google.com/forum / #! forum / camunda-bpm-users - person thorben; 08.04.2015
comment
Спасибо @thorben. Как выяснилось, проблема заключалась в том, что я не указал полное имя пакета в атрибуте class слушателя выполнения. Еще один вопрос, который я хотел бы задать: если я использую два прослушивателя задач с созданием события, будут ли вызваны оба? - person Ramdas Nair; 08.04.2015
comment
Да, вызываются оба. Но гарантированного заказа нет. Если это важно, вы можете подумать о реализации составного TaskListener. - person thorben; 08.04.2015