Отмена задания в настройке нескольких экземпляров Activiti 6 - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть служба, которая вызывает экземпляр Activiti вместе с ним и помогает в управлении заданиями. В целях масштабируемости я планирую выделить несколько экземпляров этого сервиса. Это будет означать несколько экземпляров двигателя Activit 6 за балансировщиком нагрузки. Все они в конечном итоге соединяются с одной и той же БД.

Отмена задания прекрасно работает в одной установке. Тем не менее, отмена не работает надежно, когда у меня есть несколько экземпляров Activiti. Чтобы объяснить далее, если экземпляр Activiti # 1 запустил задания № 1 и № 2, в то время как экземпляр № 2 запустил № 3 и № 4. Запрос на отмену задания № 1, если он отправлен в Activiti # 1, будет работать нормально, но если этот запрос поступит на № 2, отмена задания не будет работать. просьба к каждому экземпляру Activiti. Другим было бы для меня внешнее ведение учета экземпляра, связанного с каждой работой. Оба из них не выглядят чистыми.

Мой вопрос - как лучше всего обращаться с таким сценарием ios? Есть ли рекомендуемые схемы, которым можно следовать?

Заранее спасибо.

1 Ответ

1 голос
/ 10 апреля 2020

Очевидно, что правильный ответ здесь для одного экземпляра движка - это использовать обработчик события сигнала или сообщения, однако, как вы говорите, это не работает для нескольких экземпляров движка. Опция широковещания, вероятно, самая простая, если экземпляр не находится в той части процесса, где сообщение имеет смысл, оно будет просто проигнорировано. Более чистое, хотя и более сложное, решение состоит в том, чтобы преобразовать эту обработку в таблицу приложения или даже в нечто простое, например, файл в файловой системе. Экземпляры будут искать «флаг» и выходить, однако вы должны убедиться, что флаг очищен при выходе из последнего экземпляра. В любом случае, я не могу придумать ничего внутри самого двигателя, которое могло бы предложить то, что вам нужно.

...