2016-11-29 99 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

進程1 &進程2異步調用CommonProcess。

處理1 &過程2應該實現在Callback.wsdl定義

CommonProcess將調用在Callback.wsdl定義暗示 處理1 /過程2的操作的操作。

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

如何將Process1的EPR & Process2傳遞給CommonProcess進行回調?

這可以通過DynamicEndpoints完成。進程EPR可以在從Process1或Process2調用到CommonProcess期間在有效負載消息中傳遞。 CommonProcess將使用與傳入消息一起傳遞的EPR覆蓋與Callback.wsdl對應的partnelink EPR。

以下是演示Partnerlink EPR的演示示例。

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

事實上,我通過有效載荷中的回調URL。快速和骯髒,但工作。我的想法是使用本地傳輸,但WSO2BPS中的一些錯誤迫使我使用絕對的http url(但是 - 它一直運行,直到我不更改端口)。 – gusto2