Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 解説

[目次][用語][索引][前へ][次へ]

4.3.5 SOAP Fault動作定義ファイルによるフォルトのキャッチ

SOAPアダプタでのSOAP Faultの扱いと,フォルトとして扱う場合の注意事項について説明します。

<この項の構成>
(1) SOAP Faultの扱い
(2) SOAP Faultをフォルトとして扱う場合の注意事項

(1) SOAP Faultの扱い

SOAPアダプタでは,サービス部品から返されたSOAP Faultが次に示す条件をすべて満たす場合,フォルトとして扱われます。

このようなフォルトをユーザ定義例外と呼びます。ユーザ定義例外は,ビジネスプロセスでも認識されるため,フォルト発生後のプロセスの場合分け処理を定義できます。

サービス部品の種類によっては,WSDLに定義されていないSOAP Faultが返されたり,faultCodeに任意の値が設定されてSOAP Faultが返されたりすることがあります。このようなSOAP Faultをフォルトとして扱いたいときは,SOAP Fault動作定義ファイルを使用することで,サービス部品から返されるすべてのSOAP Faultをフォルトとして扱うことができるようになります。

SOAP Fault動作定義ファイルには,サービス部品のWSDLに宣言されている名前空間(targetNamespaceのURI)を定義します。SOAP Fault動作定義ファイルの詳細は,マニュアル「サービスプラットフォーム リファレンス」の「SOAP Fault動作定義ファイル」を参照してください。

個々のサービスアダプタには,WSDLでサービス部品のインターフェースが定義されており,WSDLに定義されている名前空間が,SOAP Fault動作定義ファイルに定義されている内容と一致するかどうかで,フォルトとして扱うかどうかを判断します。

SOAP Fault動作定義ファイルを使用したときのSOAP Faultの扱いを次の図に示します。

図4-6 SOAP Fault動作定義ファイルを使用したときのSOAP Faultの扱い

[図データ]

  1. サービス部品のWSDLを定義します。
  2. サービス部品から返されたSOAP Faultが,サービス部品のWSDLに定義されていればフォルトとして扱われます。
  3. サービス部品から返されたSOAP Faultが,サービス部品のWSDLに定義されていない,またはWSDLの定義と異なる名前空間で定義されている場合は,SOAP Fault動作定義ファイルに定義されている内容と一致するかどうかを照合します。
  4. SOAP Fault動作定義ファイルに定義されている内容と一致している場合は,フォルトとしてビジネスプロセスに返します。

(2) SOAP Faultをフォルトとして扱う場合の注意事項

サービス部品から返されたSOAP Faultでは,次の条件をすべて満たす場合にフォルト名がfaultCodeに設定され,フォルトとして扱われます。

これらの条件を満たしていないWSDLを利用する場合で,サービス部品から返されたSOAP Faultをフォルトとして扱いたいときは,SOAP Fault動作定義ファイルを定義してユーザ定義例外となるように設定します。

注※
element名とは,「wsdl:faultが参照するwsdl:part要素が,element属性を用いて指定する要素」のことです。WSDLを次の順にたどって特定できる要素を指します。
  1. wsdl:fault
  2. wsdl:message(この要素をたどらない場合もあります)
  3. wsdl:part
  4. xsd:element

なお,サービスプラットフォームの開発支援コマンドであるJava2WSDLコマンドを使用して,オペレーションのstyle属性が「rpc」のWSDLファイルを生成した場合,element属性ではなく,type属性で参照するWSDLファイルが生成されます。そのため,生成されたWSDLファイルをそのまま使用しないで,修正および再生成してから使用します。WSDLファイルの修正および再生成の方法については,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「4.3.2 サービス部品電文を作成する(Webサービスの場合)」を参照してください。

サービスプラットフォームでフォルトを使用する場合,documentスタイルのWSDLを使用することを推奨します。