WebService - WebService(SOAP)の呼び出し

WSDLファイルを読み込んでSOAPメソッドを実行します。

WSDLの定義はインポート機能によって本コンポーネントに設定することができます。詳しくは、下記トピック「WSDLインポート機能」を参照してください。

SSL通信を行う場合、管理コンソールで登録された証明書を使用してPKI基盤に従って通信を行います。

■ストリーム情報

入力フォーマットXML,ParameterList
接続数1
説明WSDL読み込みによって定義されたストリーム
出力フォーマットMIME,XML,ParameterList
説明出力形式 に応じたストリームが出力されます。

■コンポーネントプロパティ

名前プロパティ型マッピング説明
WSDL指定方法choice- 使用するWSDLの場所をファイルパスで指定するかURLで指定するかを設定します。
ファイル [file] - WSDLをホームフォルダー上のファイルから読み込みます。
URL [url] - WSDLをhttp(s)通信で読み込みます。
WSDLファイルパスremoteFile-WSDL指定方法ファイルの場合に使用するWSDLファイルを指定します。
ここで指定するWSDLファイルは実行時および設計時に読み込まれ、使用されます。
WSDL URLstring-WSDL指定方法URLの場合に使用するWSDLのURLを指定します。
ここで指定するWSDLファイルは実行時および設計時に読み込まれ、使用されます。
サービス名string- 実行するWebサービスのサービス名。(WSDLファイル内のservice要素)
通常はWSDLインポート機能で設定されます。
ポートstring- 実行するWebサービスのポート。(指定したサービスで定義されているport)
通常はWSDLインポート機能で設定されます。
メソッド名string- 実行するWebサービスのメソッド名。(指定したポートにバインディングされているoperation)
通常はWSDLインポート機能で設定されます。
出力形式choice- 出力ストリームを指定します。
「RequestXXXX」を指定した場合はSOAPリクエストは実行されません。デバッグ時や、このコンポーネントの出力をさらに加工して後でHTTP(Post)コンポーネントで送信する場合などに使用します。
「ResponseXXXX」を指定した場合はSOAPリクエストが実行され、そのレスポンスが出力ストリームとなります。
要求メッセージ(MIME) [RequestMIME]
出力ストリームはSOAPリクエストのMIMEになります。
要求メッセージ(エンベロープ) [RequestEnvelope]
出力ストリームはSOAPリクエストのEnvelopeになります。
応答メッセージ(MIME) [ResponseMIME]
出力ストリームはSOAPレスポンスのMIMEになります。
応答メッセージ(エンベロープ) [ResponseEnvelope]
出力ストリームはSOAPレスポンスのEnvelopeになります。
応答メッセージ(ParameterList形式) [ResponseType]
出力ストリームはSOAPBodyの内容になります。
出力ストリーム型がParameterListの場合、SOAPレスポンスをRPCとしてデコードしたParameterListになります。
その場合、ParameterListのフィールドとパラメーターの対応はフィールド名(要素名)ではなく定義順によってとられます。
出力ストリーム型がXMLの場合、SOAP:Body要素直接の子要素が単一の要素の場合はその要素をDocumentElementとしたXMLになります。
SOAP:Body要素直接の子要素に複数要素が含まれる場合はSOAP:Body要素をDocumentElementとしたXMLになります。
Cookiechoice- SOAPサーバーがCookieを使用する場合のCookieの維持期間を指定します。
なし [None] - Cookieは設定されません
リクエスト [Request] - 同一リクエスト内でCookieが維持されます
セッション [Session] - 同一セッション内でCookieが維持されます
コネクション名connection- http(s)での通信にコネクション設定を使用する場合に指定します。
以下の場合には、コネクションを参照するようにして、接続設定でプロキシや認証の設定を行います。
(または、このコンポーネントではメッセージを作成するだけとして、HTTP(Post)コンポーネントで送信するという方法があります。)
  • プロキシサーバーを使用する場合
  • 接続先のSOAPサーバーがユーザー認証を行う場合
エンドポイントstring入力&出力 WSDLで指定されているEndpointとは異なるEndpointで通信する場合にそのURLを指定します。
SOAPヘッダー(送信)category入力    実行するメソッドにSOAPヘッダーが必要な場合に、そのヘッダーに設定する値を指定します。
SOAPヘッダー(受信)category   出力 実行したメソッドのレスポンスにSOAPヘッダーがある場合に、そのヘッダーの値を取得します。

■トランザクション処理

コミット何もしません。
ロールバック何もしません。

■エラー処理

タイプパラメーターエラー処理フロー
へのストリーム
エラー
コード
説明
SOAPフォルト なし SOAPFaultのSOAPEnvelope(XML) なし 実行中にSOAPFaultが発生した場合や、通信先のWebサービスがSOAPFaultを返した場合
汎用 なし コンポーネントの入力ストリーム なし WSDLの読み込みに失敗した場合
なし 入力ストリームの形式が不正な場合
なし Webサービスが実行できなかった場合
なし 実行したWebサービスがSOAP以外のレスポンスを返した場合

■制限事項

DynamicConnectionコンポーネントMapperコンポーネントを使用してエンドポイントを変更しながら同時に同じフローを実行することはできません。

■WSDLインポート機能

WSDLの定義から簡単にプロパティや入出力ストリームの設定を行うために、本コンポーネントにはインポート機能を用意しています。

WSDLファイルを選択する

WSDLをインポートするためのダイアログボックスを表示するには、以下の2つの方法があります。

コンポーネントから

  1. 以下のいずれかの操作でWSDLファイルを選択するダイアログボックスを表示します。
    • コンポーネントをダブルクリック
    • コンポーネントを右クリックして表示されるメニューの「WSDLインポート」をクリック
  2. WSDL指定方法の設定に従って、ホームフォルダー下のファイルを選択するダイアログから読み込むWSDLファイルを選択するか、読み込み先のURLを指定します。
  3. WSDLのインポートダイアログボックスが表示されます。

インスペクタから

  1. インスペクタ上でWSDLファイルパス またはWSDL URL に値を設定します。
  2. 以下のいずれかの操作でWSDLのインポートダイアログボックスを表示します。
    • コンポーネントをダブルクリック
    • コンポーネントを右クリックして表示されるメニューの「WSDLインポート」をクリック
  3. WSDLのインポートダイアログボックスが表示されます。

インポートする

WSDLのインポートダイアログボックスでは、各リストから選択して「OK」をクリックすると自動的にインスペクタのサービス名ポートメソッド名SOAPヘッダー(送信)SOAPヘッダー(受信) が設定されます。また、ストリームペインの入力タブと出力タブのフィールドが自動的に定義されます。

入力または出力のストリーム型にParameterListが選択できるのは選択したオペレーションが以下の条件を満たしている場合です。

つまり、Documentスタイルのオペレーションや構造体を含む複雑なパラメーターがある場合はXMLしか選択できなくなります。

■Endpointについて

通信に使用されるEndpointは以下の優先順位で決定されます。

  1. エンドポイントプロパティに値が設定されている場合はそのURLを使用する
  2. コネクション名プロパティに値が設定されている場合はそのコンクションに設定されているURLを使用する
  3. いずれも設定されていない場合はWSDLファイルのsoap:address要素で指定されているURLを使用する

■DocumentスタイルとRPCスタイル

このコンポーネントは呼び出すSOAPのWebServiceがRPCスタイルであるか、ドキュメントスタイルであるかにより異なる動作をします。SOAPのスタイルはWSDLの「soap:operation/style」属性により明示されます。

以下に、それぞれの場合でのコンポーネントの動作について解説します。

Documentスタイルの場合

Documentスタイルの場合は、入力ストリームはXMLに限定されます。(ParameterListをとることはできません。)
Operationが1つのパラメーターを持つ場合(つまりSOAP:Body要素の直下の要素が1つになる場合)には、その要素をDocumentElementとしたXMLとしてインポートされ、Operationが複数の要素を持つ場合はSOAP:Body要素をDocumentElementとしたXMLとしてインポートされます。
WSDLインポート時には実行するSOAPメソッドの入力メッセージ定義がインポートされてストリームペインの入力タブに設定されますが、実際にはDocumentスタイルのSOAPサービス実行時にはコンポーネントは入力ストリームの定義は使用しません。

Documentスタイルの場合、本コンポーネントは入力のXMLをSOAPBodyに差し込んで送信するのみの動作となります。
そのため、FileGetコンポーネントでXMLファイルを読み込んで、それをそのままSOAPで送信するといったようなフローも書くことができ、 そのスキーマがWSDLでの定義と異なる場合でも送信前にエラーとなることはありません。(実行した先のSOAPサーバーによってエラーが返される場合があります。)

ストリームペインの入力タブは、このコンポーネントの直前にマッパーを接続し、マッパーによって入力のXMLを作成する場合にのみ使用されます。

RPCスタイルの場合

RPCの場合、実行するメソッドのパラメーターがParameterListまたはXMLのフィールド定義としてストリームペインの入力タブに読み込まれ、それを元にコンポーネントが送信メッセージを組み立てます。そのため、入力ストリームのスキーマがストリームペインの定義と異なる場合エラーが発生します。

RPCの場合、原則的には直前に接続したマッパーで入力ストリームを組み立てるようにしてください。

■Binary型の扱い

フィールド定義をParameterListとして読み込む場合はBinary型はBinary型のままでインポートされるので、そのまま値を差し込むことができます。しかし、フィールド定義をXMLとして読み込む場合はBinary型はString型としてインポートされるため、別途Base64Binaryなどにエンコードする作業が必要になります。

■入力ストリームがXMLの場合の型変換について

入力ストリームがXMLの場合、フローサービスが自動で行う型変換がWSDLの指定する形式にマッチしないことがあります。例えば、xsd:dateTime型の書式は「yyyy-MM-dd'T'HH:mm:ss'Z'」ですが、フローサービスの自動変換ではこの形式の日付文字列は生成されません。そのため、この場合はフィールド定義の型をString型に変更した上で、FORMATDATEなどの関数を使用して変換した値を差し込む必要があります。

xsd:date、xsd:time、桁数が指定された数値型でも同様な問題が起こる場合があるため、その場合はフィールド型をString型に変更した上でマッパー関数でWSDLの指定する形式に書式変換した文字列を差し込んでください。