Механизм компенсации процессов в BPMN подразумевает возврат к исходной точке цепочки успешно выполненных действий, если результат этих действий или побочные эффекты больше не представляют ценности и должны быть отменены. 2
Некоторые особенности работы компенсации в BPMN:
- Компенсация запускается инициирующим событием, которое обычно вызывает обработчик ошибок или другой обработчик компенсации. 2 Событие определяет действие, которое будет компенсировано. 2
- Если действие ещё запущено, компенсации не происходит, его нужно отменить. 2 Отмена, в свою очередь, может привести к компенсации успешно выполненных операций в составе действия (например, в подпроцессе). 2
- По умолчанию компенсация запускается синхронно: инициирующее событие ожидает завершения работы запущенного обработчика компенсации. 2 Однако компенсацию можно запустить и вне зависимости от того, завершилась ли работа обработчика компенсации или нет. 2 Для этого атрибут waitForCompletion события должен иметь значение «false». 2
- Компенсация запускается в обратном порядке: последнее завершённое действие компенсируется первым. 35
- Компенсация из подпроцесса не передаётся в вышестоящий процесс. 3
Событие BPMN «Компенсация» показывает начало выполнения компенсирующих действий (событие-обработчик) или инициирование компенсации в процессе (событие-инициатор). 4 Графически такое событие обозначается кругом с триггером в виде двух треугольников, повёрнутых влево. 4