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

プロセス1 &プロセス2は、CommonProcessを非同期に呼び出します。

プロセス1 &プロセス2は プロセス1 /プロセス2を暗示するCallback.wsdlで定義された動作を呼び出すCallback.wsdlに

CommonProcessに定義された操作を実施するべきです。

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に対応するパーネルリンク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

関連する問題