2014-12-28 1 views
1

У меня есть вопрос о механизме события компенсации/захвата/обработки компенсации в bpmn2. На основании Travel Booking Example в bpmn2 by example у нас есть compensation intermediate throwing events, compensation boundary events и compensation handler. Я подключил метания и ловли компенсации событий на этом рисунке (с моим знанием о событиях):Компенсация в bpmn2

Travel Booking Process

это правильно? Может ли компенсация (бронирование) выходить из-за пределов завершенного подпроцесса (бронирования) и активирует внутри нее compensation event sub-process (компенсация ручки)? (зеленая стрелка)

ответ

0

Мое предположение не соответствует действительности. На основании activiti documentation:

Событие граничной компенсации имеет другую политику активации от других граничных событий. Другие граничные события, такие как, например, событие границы сигнала, активируются при запуске активности, к которой они привязаны. Когда действие остается, они деактивируются и соответствующая подписка на события отменяется. Событие границы компенсации отличается. Событие граничной компенсации активируется при успешном завершении операции. На этом этапе создается соответствующая подписка на события компенсации. Подписка снимается либо при срабатывании события компенсации, либо при завершении соответствующего экземпляра процесса. Из этого следует:

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

Обработчик события компенсации в подпроцессе такой же.

Таким образом, целью красных и оранжевых стрелок на данной фигуре должно быть задание на компенсацию: cancel flight и cancel hotel.