Здравствуйте.
Есть следующая задача.
Некий сотрудник получает задачу. Он может принять решение на основе данных сам, а может обратиться за помощью к службе безопасности (СБ) и/или службе рисков (СР). Консультация СБ и СР - это отдельные процессы. Если сотруднику требуется консультация, он инициирует старт процесса консультации СБ или СР, оставаясь при этом на своей же задаче.
Иными словами, сотрудник принимает задачу в работу, смотрит на неё, нажимает кнопку отправки запроса в СБ и СР, по нажатии на кнопку запускаются процессы СБ и СР, сотрудник при этом продолжает работать со своей задачей. Он может отложить её, может попытаться пойти дальше. Если не было запросов в СБ и СР, то процесс отправится дальше по flow, если же были запросы в СБ и/ или СР, необходимо дождаться от них ответа, прежде чем можно будет двинуться дальше.
Сложность для меня в том, чтобы смоделировать синхронизацию: все запущенные сторонние процессы (СБ и/или СР) должны быть обязательно завершены, прежде чем сотрудник сможет отправить процесс дальше по основному процессу.
Например, можно было бы сделать так, как на первой диаграмме, но в этом случае сотрудник не сможет продолжить работать с задачей.
Есть ещё второй вариант (вторая диаграмма). Здесь основной вопрос у меня в том, можно ли с помощью комплексного шлюза на основе данных определить, нужно ли ждать ответов по каждой ветке.
Может быть, есть какой-то паттерн, с помощью которого можно смоделировать эту ситуацию.