SOAP コネクターを使用した Web サービスの呼び出し
Web サービスが正しく動作することを確認したら、Process Designer 内から Web サービスをテストする必要があります。
始める前に
このタスクを実行するには、IBM® Process Designer デスクトップ・エディター (非推奨) で作業している必要があります。
手順
- Process Designer デスクトップ・エディター (非推奨) を開きます。
- Designer ビューでプロセス・アプリケーションを開きます。
- 「実装」カテゴリーの横の正符号をクリックして「実装サービス (Implementation Service)」を選択します。
- 開いたダイアログで、名前を入力して「終了」をクリックします。
- TOOLKITS の下で、「SystemData」を展開し、「実装」を選択します。 「SOAP 経由での WebService の呼び出し」コンポーネントを見つけて、ダイアグラム上にドラッグします。
- 右側のパレットから「サーバー・スクリプトレット」をダイアグラムへとドラッグします。 それを、「SOAP 経由での WebService の呼び出し」の左側に配置します。
- 線を接続します。 「開始」を、「タイトルなし」サーバー・スクリプトレットに接続します。 「タイトルなし」サーバー・スクリプトレットを、「SOAP 経由での WebService の呼び出し」に接続します。 「SOAP 経由での WebService の呼び出し」を「終了」に接続します。
- 「SOAP 経由での WebService の呼び出し」コンポーネントを選択します。
「プロパティー」ビューで「データ・マッピング」タブを選択します。
「要求」入力を除き、必要なすべての入力が確認できるはずです。
- wsdlURL は URL アドレスにマップされます。
- serviceNS は「ターゲット名前空間」の値にマップされます。
- serviceName は「サービス名」の値にマップされます。
- destinationAddress は soap:address location の値にマップされます。
- soapAction は soap:operation soapAction の値にマップされます。
- 「要求」入力には、変数入力が格納されています。 この例では、サーバー・スクリプトレットを使用して XML 入力を作成します。
- 「変数」タブを開いて、「XMLElement」タイプの新規プライベート変数を request という名前で作成します。
- ダイアグラム・ビューに戻って、サーバー・スクリプトレットの名前を Set Request に変更します。
- サーバー・スクリプトレットの「プロパティー」ビューから「実装」タブを選択し、実装を request 変数にバインドします。 「選択」をクリックし、メニューから request 変数をクリックします。
- soapUI から XML 入力全体をコピーし、それをサーバー・スクリプトレット実装内に貼り付けます。
- request 変数を、SOAP コネクターの要求入力にバインドします。 「SOAP 経由での WebService の呼び出し」コンポーネントの「データ・マッピング」セクションに戻り、「選択」を使用して、request (XMLElement) を、作成した request 変数にマップします。
- 同様に、XMLElement タイプの変数を response という名前で作成し、それを SOAP コネクターの出力 (つまり「SOAP 経由での WebService の呼び出し」コンポーネント) の出力にバインドします。 この時点で、ハードコーディングされた値を使用してサービスのテストが行えます。
- サービスをデバッグ・モードで実行し、応答が response 変数に格納されることを確認します。 正常に動作した場合は、サービスに入力変数を追加し、それらをサーバー・スクリプトレット内の request 変数にマップできます。 以下の例では入力は 1 つのみです。
- 入力変数をサービスに追加します。
- <#= #> 表記を使用して、サーバー・スクリプトレットに JavaScript を含めます。 例えば、入力変数が degreesF の場合、それを参照する実装コードは <# = tw.local.degreesF #> となります。 これで、サービス入力により SOAP コネクターへの入力が決定されます。
- Xpath を使用して、response 変数を適切な出力へとマップします。
この例では、単一の出力変数 (_degreesC) を使用します。
- サービスの最後に「サーバー・スクリプト」を追加します。
- Xpath を使用して、XML 応答を出力変数にマップします。
例:
- 以下の Xpath 式は、VisioDocument/Pages ノードの前のすべての「Page」ノードのノード・リストを返します。
XML の構造によっては、先頭にスラッシュを付けたり、スラッシュをはずしたりしてテストする必要がある場合があります。xml.xpath("VisioDocument/Pages/Page"); - 以下の Xpath 式は、NameU 属性が「Horizontal holder」であるすべての「Master」ノードのノード・リストを返します。
xml.xpath("VisioDocument/Masters/Master[@NameU='Horizontal holder']"); - 上記いずれの場合も、ノード・パスと名前空間を知っている必要があります。
以下の XPath 式では、項目数と名前空間を無視しています。
i と同じですが、名前空間と「Page」ノードの項目数を無視している点が異なります。
xml.xpath = "//*[local-name()='Page']";どの場合でも、結果は以下の例のように使用できるノード・リストです。var nodeList = xml.xpath(...); tw.local.objArray = new tw.object.listOf.myObj(); for (var i=0;i<nodeList.length;i++) { var obj = new tw.object.myObj(); //If name node always exists as a child obj.name = nodeList[i].name[0].getText(); tw.local.objArray[tw.local.objArray.listLength] = obj; }
- 以下の Xpath 式は、VisioDocument/Pages ノードの前のすべての「Page」ノードのノード・リストを返します。
親トピック: Web サービスの互換性