Как упростить пошаговую сложную логику шлюза с помощью сигналов

У меня есть процесс, который распадается на множество разных ветвей. Бизнес-требование заключается в том, что на любом этапе процесс должен быть отправлен обратно отправителю процесса для исправления и повторного утверждения.

Я знаю, что было бы возможно использовать логику шлюза в конце каждого шага и таким образом вернуть процесс в начало; однако это добавило бы много строк и веток к процессу, так что его было бы невероятно трудно читать. Я думал, что альтернативный способ сделать это - просто прервать процесс и перезапустить на основе информации в существующем процессе - это кажется более понятным.

И то, и другое не будет слишком сложным для реализации, но мне интересно, есть ли более простой способ достичь этой цели. Я мало работал с сигналами, но есть ли способ использовать это, чтобы вернуться к предыдущему шагу в процессе?

Начало отредактированного решения

Основываясь на предложении @Kris Verlaenen, он создал приведенный ниже пример процесса.

Пример встроенного процесса и сигналов

Я начал с того, что поместил все возможные этапы во встроенный подпроцесс. Сигналы возврата, отклонения и отмены были добавлены на вкладке "Граничные события" палитры. Пока процесс ожидает одобрения супервизора или менеджера, вы можете отправить любой из сигналов, чтобы либо вернуться к первому шагу, либо перейти к концу процесса.

1 ответ

Решение

Использование подпроцесса события может позволить вам запускать некоторую часть вашего процесса каждый раз, когда происходит событие (может быть сигнал, ошибка и т. Д.)

Использование встроенного подпроцесса с граничным событием может помочь, так как в этом случае вам нужно будет только связать обратное событие с этим граничным событием с началом, и всякий раз, когда в подпроцессе возникает сигнал / ошибка, граничное событие может поймать это. Вы могли бы даже сделать это прерыванием, то есть это также отменило бы что-нибудь внутри подпроцесса, в основном сбрасывая то, что вы делали.

Другие вопросы по тегам