WSO2 BPS BPEL Тайм-аут, когда корреляция не найдена

Работа с WSO2 BPS 3.6.0 - у нас есть служба, которая уведомляет запущенный процесс BPEL о событии.

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

Редактировать: действия по приему, выбору и onEvent ведут себя одинаково

заранее спасибо

1 ответ

Решение

Apache ODE предназначен для постановки в очередь входящих сообщений, которые приходят рано.

Пример: процесс

Получить1 -> Получить2 -> Получить3 -> Ответить3

Receive1: создает экземпляр и инициирует корреляцию.

Receive2: экземпляр ожидает прибытия сообщения.

Но сообщение на Receive3 приходит раньше, чем Receive2 и, следовательно, ставится в очередь. Поскольку следующее действие - это Ответить3, это синхронный вызов, и время ожидания ответа канала истекает.

Как только Receive2 прибывает, механизмы видят, что сообщение для Receive3 уже прибыло, и завершает экземпляр.

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

Примечание. Это поведение Apache ODE, если только WSO2 не изменил это поведение.

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