2016-11-29 6 views
0

Имея WSO2 BPS 3.6.0, мы имеем несколько длительных асинхронных процессов. Я хотел бы повторно использовать процесс в нескольких других процессах (например, обработка ошибок, общие процедуры и т. Д.).WSO2 BPS BPEL повторное использование асинхронных процессов

Проблема заключается в том, что в этом случае несколько процессов выставят ту же услугу обратного вызова:

ERROR {org.wso2.carbon.bpel.core.ode.integration.store.TenantProcessStoreImpl} - Service: {http://xxx/bps/xxx}XXCallback already used by another process. Try again with a different service name 

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

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

ответ

0

Process1 & Process2 вызовите CommonProcess асинхронно.

Process1 & Process2 должны осуществлять операции, определенные в Callback.wsdl

CommonProcess будет вызывать операцию, определенную в Callback.wsdl для интимных process1/Process2.

ProcessPackage1

  • Process1.bpel
  • Process1.wsdl
  • CommonProcess.wsdl
  • Callback.wsdl

ProcessPackage2

  • Process2.bpel
  • Process2.wsdl
  • CommonProcess.wsdl
  • Callback.wsdl

CommonProcessPackage

  • CommonProcess.bpel
  • CommonProcess.wsdl
  • Callback.wsdl

Как передать EPR процесса 1 & Process2 to CommonProcess для обратного вызова?

Это можно сделать с помощью DynamicEndpoints. EPR процесса может передаваться в сообщении полезной нагрузки во время вызова из Process1 или Process2 в CommonProcess. CommonProcess переопределяет EDP частичной строки, который соответствует Callback.wsdl с EPR, который был передан с входящим сообщением.

Вот пример, демонстрирующий игру вокруг EPR Partnerlink.

https://github.com/apache/ode/tree/ode-1.3.x/distro/src/examples-war/DynPartner

Это документы еще немного на этой опции: http://ode.apache.org/endpoint-references.html

Примечание: Это предусмотрено в Apache ODE, и могут быть доступны на WSO2.

+0

Большое спасибо! По-видимому, мне нужно переименовать службы обратного вызова в родительских процессах, но это нормально. Я собирался отправить URL-адрес обратного вызова в заголовок адресации, но до сих пор мне не удалось прочитать заголовок ответа ReplyTo из сообщения. Любой намек plz? Как резерв, я все еще могу передать URL-адрес обратного вызова в полезной нагрузке (мне это не нравится) – gusto2

+0

AFAIK, процесс обработки связи не может быть выполнен с заголовками WSA. – Sathwik

+0

Действительно, я передаю обратные вызовы в полезной нагрузке. Быстрая и грязная, но работающая. Моя идея заключалась в использовании локального транспорта, но некоторые ошибки в WSO2BPS заставляют меня использовать абсолютный URL-адрес http (но - он работает, пока я не изменю порты). – gusto2

Смежные вопросы