SwAおよびMTOM最適化アタッチメントをデータベースに格納するためのシナリオ

BPELプロセスを含むSOAコンポジット・アプリケーションがMTOM最適化SOAPメッセージを受信すると、そのMTOM最適化要素(<xop href="">が付いたもの)それぞれのアタッチメントのコンテンツがデハイドレーション・ストアに格納されます。同様に、1つ以上のアタッチメントとともにアタッチメント付きのSOAPメッセージ(SwA)メッセージを受信すると、各アタッチメントはデハイドレーション・ストアに格納されます。これらのアタッチメントは、データベース内でそれらを識別するhref属性を使用する参照によって、受け渡すことができます。実際に、このhref属性によって、これらのアタッチメント要素のテキスト・コンテンツのすべてが削除され、置換されます。MTOM最適化メッセージの場合、<xop>要素の受信href属性の同じ値が再使用されます。同様に、SwAの場合、アタッチメント要素のhref属性が再使用されます。

メッセージがBPELプロセス・サービス・エンジンに配信されるとき(受信メッセージがDLV_MESSAGE表に保存されるとき)に、アタッチメントはデハイドレーション・ストアに格納されます。したがって、それは、composite.xmlファイルでbpel.config.oneWayDeliveryPolicyasync.persist (デフォルト値)に設定されている一方向および非同期BPELプロセスに対してのみ適用できます。

アタッチメントは、次のユース・ケースでは永続化されません。

  • SOAPメッセージが、bpel.config.oneWayDeliveryPolicysyncまたはasync.cacheに設定した同期BPELプロセスまたは一方向/非同期BPELプロセスによって受信された場合。

  • インライン・バイナリ・コンテンツ付きのSOAPリクエスト内のすべての要素のコンテンツが永続化されず、そのままで渡されます。(つまり、それらには子要素<xop:Include>はないが、子としてbase64エンコード文字列があります。)MTOM最適化メッセージは、インラインbase64データを持つ1つ以上の要素と、いずれかのレベルでXOPパッケージ化された1つ以上の要素の組合せにすることができます。

ノート:

サービス・バインディング・コンポーネントがMTOM対応であっても、それが、自動的に、そのサービスがMTOM最適化メッセージを受信することを示すわけではありません。コール元のサービスまたはアプリケーションは、MTOM最適化メッセージが確実に受信されるようにするには、ワイヤを介してそのメッセージを送信する必要があります。MTOM対応バインディングは、通常の非MTOMメッセージも受信できます。したがって、それが受信したときに、サービスに着信したSOAPリクエストには、データベースに保存されない非最適化インライン・バイナリ・データ要素が含まれていることがあります。

MTOM最適化要素またはSwAアタッチメントのコンテンツの値が実行時にhref属性によって置換される場合でも、それらの設計時のWSDLが変更されることありません。Oracle JDeveloperでこれらの変更は表示されません。これらの要素タイプ定義が、hexBinary、base64Binaryなどから、href属性を持つ空のコンテンツの定義に変更されることはありません。

ただし、これは、ユーザーとって透過的です。たとえば、assignアクティビティを使用してそれらのコンテンツ全体をコピーすると、実行時にhref値がコピーされます。同様に、Webサービス、アダプタなどアウトバウンド参照を起動すると、Oracle SOA Suiteによってhref属性が実際のデータに自動的に解決され、起動が実行されます。