2.2.7 Webサービス(SOAP通信)の場合の接続先動的変更
SOAPアダプタの通信先は,ビジネスプロセスで設定した接続先URLを使って動的に変更できます。ビジネスプロセスで接続先URLを設定しておくと,サービスアダプタを実行したときに通信先が変更されます。これにより,作成するサービスアダプタの数を削減できます。
なお,ビジネスプロセスで接続先URLを設定しなかった場合は,開発環境で設定したWebサービスの接続先URLでSOAP通信を行います。
(1) 接続先動的変更の処理の流れ
通信基盤ごとの,SOAP通信時の接続先動的変更の処理の流れを次に説明します。
(a) SOAP通信基盤を使用するとき
通信基盤にSOAP通信基盤を使用するときの接続先動的変更の処理の流れを次の図に示します。
- 説明
-
図中の番号は,次の説明の番号と対応しています。
-
要求電文内のヘッダ電文から接続先URLを取得します。
-
要求電文の情報を基にSOAPメッセージを作成します。
-
取得した接続先URLでサービスと通信を行います。
-
(b) JAX-WSエンジンを使用するとき
通信基盤にJAX-WSエンジンを使用するときの接続先動的変更の処理の流れを次の図に示します。
- 説明
-
図中の番号は,次の説明の番号と対応しています。
-
要求電文内のヘッダ電文から接続先URLを取得します。
-
要求電文の情報を基にSOAPメッセージを作成します。
-
接続先URLを設定します。
-
設定した接続先URLのサービスと通信を行います。
-
(2) 接続先情報を動的に変更する例
接続先情報ファイルを使用して,接続先情報を動的に変更する例を説明します。
(a) ビジネスプロセスの例
接続先情報ファイルを使用するビジネスプロセスの例を次の図に示します。
-
サービスリクエスタがビジネスプロセスにサービス部品の実行を要求します。
-
サービスリクエスタから送付する要求電文内のヘッダ電文に接続先URLを設定します。
-
ビジネスプロセスはXMLの要求電文を受付アクティビティで受け取ります。
-
ビジネスプロセスがヘッダ要求データおよび要求データを生成します。
-
ヘッダ要求データの接続先URLを,データ変換アクティビティなどで接続先URL変数に設定します。
-
ビジネスプロセスは接続先URL変数から接続先URLを取得して,サービス部品を呼び出します。
-
ビジネスプロセスが,サービス部品の実行結果をXMLの応答電文として構成し,応答アクティビティで返します。
-
サービスリクエスタへの応答が返されます。
-
サービスリクエスタへの応答では,XMLの応答電文が送付されます。
(3) ユーザ定義受付を生成するWSDLの作成例
ユーザ定義受付を生成するWSDLの作成例を次に示します。
なお,この例では,接続先となるサービス部品のURLをSOAPヘッダで送付しています。
(a) データ変換アクティビティの設定例
「図2-24 接続先情報ファイルを使用するビジネスプロセスの例(SOAPアダプタの場合)」に示すビジネスプロセスで使用するデータ変換アクティビティの設定例を次に示します。
ここでは,変換元に「ヘッダ要求データ」を,変換先に「接続先URL」を指定しています。
また,変換のマッピングは,次の図に示すとおりに定義します。
(b) 接続先情報ファイルの定義
Webサービスに接続するためのURLをサービスアダプタに設定するための接続先情報ファイル(XMLスキーマ)に定義します。
サービスプラットフォームでは,接続先情報ファイルを提供しています。
-
接続先情報ファイルの格納先
<サービスプラットフォームのインストールディレクトリ>/CSC/schema/connection/connection_soap_adapter.xsd
- 注意事項
-
SOAPアダプタの接続先情報を動的に変更する場合,サービスプラットフォームで提供している接続先情報ファイルを使用してください。提供している接続先情報ファイルを使用しなかった場合,動作は保証されません。
-
接続先情報ファイルの形式
<?xml version="1.0" encoding="UTF-8"?> <!-- DO NOT EDIT THIS FILE. --> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.hitachi.co.jp/soft/xml/cosminexus/csc/connection/change/soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="soapAddress"> <xsd:complexType> <xsd:sequence> <xsd:element name="endpointURL" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>
-
設定できる要素
- endpointURL 〜<文字列>
-
サービス部品の接続先URLを指定します。
(c) 接続先情報の設定
「図2-24 接続先情報ファイルを使用するビジネスプロセスの例(SOAPアダプタの場合)」に示すビジネスプロセスで使用する接続先情報の設定例を次に示します。なお,接続先情報は,サービス呼出アクティビティのヘッダ割当変数に設定します。ここで設定した情報が,SOAPアダプタで参照できる情報になります。
(4) 注意事項
-
ベーシック認証の利用可否,およびベーシック認証で利用するユーザIDとパスワードについては,接続先URLを使って動的に変更できません。ベーシック認証に関する情報は,開発環境の画面から設定した情報が有効となります。
-
次の場合,エラーメッセージが出力されて異常終了します。
-
開発環境で複数の接続先情報がヘッダ割当変数に設定された場合
XMLデータのシステム固有の名前空間,要素名が複数存在すると,接続先が特定できないためエラーになります。
-
設定された接続先情報が不正な場合
接続先URLに誤りがあると,サービス呼び出し時にエラーになります。
-
接続先情報を示すXMLデータのendpointURL要素が存在しない場合
endpointURL要素がない場合,接続先が特定できないためエラーになります。
-