Парни, приветствую! У кого есть практика разработки роутинговых процессов? Когда основной процесс бьется на совсем атомарные и после завершения атомарного процесса флоу замыкается на роутер. Роутер принимает решение куда дальше. Роутеров таких много и они выступают в роли распределительных центров для глобальных процессов.
Задача такой архитектуры: У нас много бизнес юнитов, которые имеют схожие процессы в целом, но различные в нюансах. Эти юниты хотят сами проектировать свои процессы независимо друг от друга. Нужно развязать их и дать возможность работать отдельно друг от друга, но при этом не хочется делать N наборов процессов равный количеству бизнес юнитов. Плюс в слчае чего нам нужно быстро развернуть новый юнит, работающий по стандартным процессам с возможной постепенного переезда на кастомную логику.
Решение которое планируется получить: Для каждого глобального процесса мы делаем роутер И набор common атомарных процессов, которые могут переиспользоваться всеми юнитами при желании. Если юнит хочет персональную логику в атомарном процессе, то делает свой атомарный процесс согласно правилам описанного черного куба (что нужно получить на вход, что отдать, какие сигналы принимать и какие отдавать) и подключает его к роутеру. Роутер BPMN + DMN.
Внутри своего куба юнит получает возможность пилить логику как хочет + независимо от остальных ее обновлять.
Прокомментируйте решение, пожалуйста. Какие возможны риски, какие есть практики решения похожих задач?