Здравствуйте.
Хочу разобратся как работает компенсация, но из того материала что нахожу в интернете сложно понять как она работает.
Основной её смысл в том чтобы откатить уже сделанные действия новыми действями.
На практике не понимаю как оно будет работать.
Есть например Service task мы на него ставим Boundary Compensation event (у меня в activiti этот елемент не имеет дополнительной конфигурации), от него мы можем проложить transition к compensation task (например ещё один service task только isForCompensation = true)
Гайды пишут, когда Service task нужно будет компенсировать, то этот compensation task отработает.
Вопросы на которые я прошу мне помочь ответом:
1. Ивент компенсации должен бросатся Service task-ом? Например когда случилась ошибка или с помощю engine API. Если да то как?
2. Ивент компнесации должен бросатся только Compensation Intermediate Throw Event-ом после проверки неких условий после выполнения Service task-а? Тогда все Boundary Compensation event-ы в границах процесах поймают этот ивент и отработают? Или Compensation Intermediate Throw Event можно настроить на определённый Boundary Compensation event?
3. Чем отличается Service task у которого isForCompensation = true от обычного Service task-а? Возможно у него другой контекс с переменными, если да то зачем это? Тоесть почему для компенсации есть особый тип задач, почему не делать компенсацию обычными задачами?
Очень буду благодарен за ответы, спасибо.