4

この質問は簡単ではありません。ですので、なるべくわかりやすくお願いしたいと思います。Enterprise SOA Suite 10G システムがすでに稼働しています。小さなプロセスですが、このように説明します。

コンシューマー -> ESB -> BPEL -> ESB -> プロバイダー Web サービス

コンシューマーが ESB プロセスの 1 つを呼び出し、BPEL がリクエストを BPEL に転送し、BPEL が別の ESB を再度呼び出します。この最後の ESB は、プロバイダーが提供する外部 WebService を呼び出します。

今、それをさらに明確にするために。

コンシューマ C1--WSDLExt1-->ESB1-->WSDLInt1-->BPEL--WSDLInt1-->ESB2--WSDLExt2-->プロバイダ Web サービス

  • これを説明すると、Consumer は C1 で、最初の ESB は ESB1 です。それらの間で使用される WSDL は WSDLExt1 です。
  • ESB1 は、変換後にリクエストを BPEL に転送します。その後、BPEL は要求を ESB2 に転送します。ESB2 と BPEL は同じ WSDLInt1 を使用するため、BPEL での変換はありません。
  • 次に、ESB2 は要求を変換し、プロバイダー Web サービスに送信します。ESB2 とプロバイダー Web サービスの間で使用される WSDL は WSDLExt2 です。

ここで質問です。奇妙な新しい要件により、WSDLExt2 に新しい操作を追加する必要があります。注: 新しい操作のみ。しかし、ここでひねりが来ます。1. 新しい操作のために、新しいメッセージを定義するとします。2. または、この新しい操作のために、WSDL 内の既存の (定義済みの) メッセージを引き続き使用します。

それぞれの状況で、WSDLInt1 を変更し、次に BPEL を変更する必要がありますか?

要するに、私の質問は、新しい操作の追加は、それを呼び出す以前のプロセスに影響を与えるかということです。これにより何らかの障害が発生しますか?

4

1 に答える 1

1

ESB の役割/利点の 1 つは、たとえば BPEL をそのような変更から保護することです。ESB はここでプロキシとして機能します。ESB 内の BPEL 呼び出しで発生するメッセージ ルーティング/メディエーションは、BPEL からは見えません。

したがって、定義 (およびそのデータ型など) にWSDLExt2手を加えない限り、変更は BPEL に影響しません。WSDLInt1

BPEL によるこの新しい操作を使用しない場合は、BPEL も .xml も変更する必要はありませんWSDLInt1

ESB によってプロキシされるの操作の 1 つがWSDLInt1も呼び出す場合WSDLExt2、これはすべて内部で ESB レベルで処理でき、BPEL が変更に気付かないように透過的に実行できます。ESB 用語では、これを変換と変換/プロトコル変換/サービス オーケストレーションと呼ぶことができます。

于 2012-12-13T00:45:16.857 に答える