Допустим, есть следующая схема. Есть 2 ручные задачи, для каждой из которых создается задача в Джире. Когда задача в Джире завершается, бизнес-логика (приложение, которое общается с Камундой по REST API), отправляет сообщение (correlate message,
https://docs.camunda.org/manual/7.12/reference/rest/message/post-message/ ). Это сообщение является знаком для Камунды, что ручная задача завершена и надо двигать токен дальше.
Есть 2 понятных мне варианта, как это сделать:
1. При создании задачи в Джире записывать в нее (особое поле) идентификатор активности в Камунде. Когда задача завершается, читать это особое поле и вызывать запрос завершения активности (
https://docs.camunda.org/manual/7.12/reference/rest/task/post-complete/ ).
Недостаток: Нужно особое поле в Джире, а значит со временем этих полей может стать много (есть печальный опыт заказчика).
2. Когда ручная активность начинается, то
2.а. записывать в переменную камунды "myUserTaskJiraId" идентификатор задачи в Джире (Джира сама присылает его при создании задачи),
2.б. в бизнес-логике создавать запоминать следующие данные: идентификатор задачи в Джире, название переменной, business key, идентификатор экземпляра процесса.
Когда задача в Джире завершается, то по идентификатору задачи в Джире брать данные 2.б. и отправлять запрос "correlate message" (
https://docs.camunda.org/manual/7.12/reference/rest/message/post-message/ ).
Недостаток: В бизнес-логикие (приложении, которое общается с Джирой) нужно держать состояние.
Вопрос: Как можно реализовать такое взаимодействие с Джирой так, чтобы
3.а. не хранить идентификатор экземпляра процесса в Джировских задачах,
3.б. не хранить состояния в бизнес-логике и
3.в. так, чтобы Камунда знала, какую активность закрывать (в каждый момент времени может быть сколько угодно ручных активностей, которые ждут завершения в Джире)?