Если у вас есть контроль над службами получателя, вы также можете использовать событие промежуточного сообщения, чтобы приостановить выполнение и заставить внешнюю (длительную) службу завершить процесс, введя сообщение.
Каждый из двух подходов к каждомуесть преимущества / недостатки
Задача асинхронизации службы - я предполагаю, что вы предлагаете сохранить логику «паузы» внутри задачи службы и просто блокировать задачу до тех пор, пока не вернется внешняя служба. Хотя это более точно и сохраняет логику в реализации задачи службы, она не позволяет событиям граничного таймера или другой обработке ошибок / тайм-аутов BPMN переместить процесс, если время ожидания службы истекло. Конечно, вы можете выдать BPMNError, которая будет пузыриться, но это усложнит фактическую логику.
Задачи отправки-получения - это предполагает, что вы имеете контроль над внешними службами, так как это очень похоже на третий вариант Iупомянутое использование промежуточных событий сообщения. Я предпочитаю такой подход, так как логика ясна и очевидна. Тем не менее, это означает, что вы должны иметь возможность для внешней службы «отправлять» что-то обратно в задачу приема для продвижения потока.
В любом случае, оба варианта имеют свое место, и многое зависит от характераВаш внешний сервис.
Надеюсь, это поможет.