Подпроцесс Транзакция
Подпроцесс «Транзакция» в BPMN
Автор: Олег Борознов, 04.03.2018
Транзакция BPMN – это подпроцесс, для которого может быть задано несколько вариантов выхода:
- Успешное завершение – изображается в виде потока операций, выходящего из транзакции.
- Отмена – изображается с помощью граничного события «Отмена». Это событие может быть использовано только c подпроцессом «Транзакция» BPMN. При возникновении события «Отмена» произойдет компенсация («откат назад») определенных действия транзакции, либо возврат к началу процесса.
- Ошибка – изображается с помощью граничного события «Ошибка». Появление ошибки означает, что действия Транзакции BPMN выполняются неверно и становятся невозможными успешное завершение и отмена Транзакции. Выполнение Транзакции при этом завершается без компенсации, а поток операций родительского процесса продолжается от граничного события «Ошибка».
Транзакция изображается на диаграмме в виде прямоугольника с закругленными углами, выполненного двойной тонкой линией:
Успешное завершение Транзакции отличается от завершения обычного подпроцесса. Когда все действия Транзакции завершаются конечными событиями (кроме отмены, либо ошибки) моментального возврата к потоку операций родительского процесса не происходит. Протокол транзакции сначала проверяет состояние всех участников, завершивших Транзакцию. Если обнаруживается, что хотя бы один из них имеет проблемы при завершении действий, то транзакция активирует событие «Ошибки» или «Отмены». При этом поток операций родительского процесса направляется к соответствующему событию Транзакции.
На диаграмме ниже приведен пример подпроцесса «Транзакция» BPMN:
В качестве примера Транзакции приведен подпроцесс «Организация путешествия». Подпроцесс инициируется из родительского процесса и заключается в параллельном выполнении двух действий: бронирование авиабилета и бронирование отеля. При успешном выполнении обоих действий подпроцесс завершается успешно и родительский процесс переходит к задаче оплаты бронирования.
Если хотя бы одно из действий «Забронировать авиабилет» или «Забронировать отель» выполняется с ошибкой (например, ошибка системы бронирования на сайте), то подпроцесс «Транзакция» последовательно выполняет следующие действия:
- Инициирует граничное прерывающее событие «Ошибка при бронировании». При этом события-компенсации не происходят и задачи-компенсации не выполняются.
- Родительский процесс продолжает выполнение через задачу «Обратиться в службу поддержки клиентов».
Если на любом этапе бронирования потребовалась отмена бронирования (например, клиент пожелал отменить бронирование, то подпроцесс «Транзакция» BPMN последовательно выполняет следующие действия:
- Инициирует все граничные события-компенсации и выполняет все задачи-компенсации. Это задачи «Отменить бронирование» и «Отправить уведомление об отмене брони».
- Инициирует граничное прерывающее событие «Бронирования отменены». При этом родительский процесс продолжает выполнение через задачу «Отправить уведомление об отмене».
Хотите быстро освоить BPMN?
Пройдите обучение в нашем учебном центре! |
Начать курс обучения