Как упростить пошаговую сложную логику шлюза с помощью сигналов
У меня есть процесс, который распадается на множество разных ветвей. Бизнес-требование заключается в том, что на любом этапе процесс должен быть отправлен обратно отправителю процесса для исправления и повторного утверждения.
Я знаю, что было бы возможно использовать логику шлюза в конце каждого шага и таким образом вернуть процесс в начало; однако это добавило бы много строк и веток к процессу, так что его было бы невероятно трудно читать. Я думал, что альтернативный способ сделать это - просто прервать процесс и перезапустить на основе информации в существующем процессе - это кажется более понятным.
И то, и другое не будет слишком сложным для реализации, но мне интересно, есть ли более простой способ достичь этой цели. Я мало работал с сигналами, но есть ли способ использовать это, чтобы вернуться к предыдущему шагу в процессе?
Начало отредактированного решения
Основываясь на предложении @Kris Verlaenen, он создал приведенный ниже пример процесса.
Я начал с того, что поместил все возможные этапы во встроенный подпроцесс. Сигналы возврата, отклонения и отмены были добавлены на вкладке "Граничные события" палитры. Пока процесс ожидает одобрения супервизора или менеджера, вы можете отправить любой из сигналов, чтобы либо вернуться к первому шагу, либо перейти к концу процесса.
1 ответ
Использование подпроцесса события может позволить вам запускать некоторую часть вашего процесса каждый раз, когда происходит событие (может быть сигнал, ошибка и т. Д.)
Использование встроенного подпроцесса с граничным событием может помочь, так как в этом случае вам нужно будет только связать обратное событие с этим граничным событием с началом, и всякий раз, когда в подпроцессе возникает сигнал / ошибка, граничное событие может поймать это. Вы могли бы даже сделать это прерыванием, то есть это также отменило бы что-нибудь внутри подпроцесса, в основном сбрасывая то, что вы делали.