この例では、Web Service から返されるデータ収集からデータを抽出する方法について説明します。
この例で使用する LocInfo ZipCode Web Service は Tilisoft によって提供されており、XMethods.com からアクセスできます。実行時、起動ユーザーが市外局番を入力し、Invoke ステップが指定された Web Service に要求メッセージを送信すると、指定された市外局番に該当するすべての地域の郵便番号データが返されます。2 つのユーザー・ステップを使用して、返された郵便番号のデータを表示し、抽出したアイテムを表示します。
デモ用ワークフローを作成するには、以下の手順を実行します。
- 「プロセス構成コンソール」で次の手順を実行すると、ワークフローの作成者が直接、Web Services へのリンクを入力できます。 「プロセス構成コンソール」で次の手順を実行すると、ワークフローの作成者が直接、Web Services へのリンクを入力できます。
- アイソレート・リージョンを右クリックして、表示されるメニューの「プロパティー」をクリックします。
- 「UDDI レジストリー・リスト」タブの「Process Designer で、Web Services を参照せずに WSDL リンクを入力できるようにする」を選択します。
- 構成の変更を保存します。
- 「Process Designer」でこのワークフローの名前と Web Service を指定します。 Process Designer でこのワークフローの名前と Web Service を指定します。
- 「ワークフローのプロパティー」>>「一般」タブで、ワークフローの名前と件名 (ZipDataCollection) を指定します。
- Web Services を指定します。
- 「Web サービス」>>「パートナー・リンク」タブで、パートナー・リンクの名前 (inv1) を入力します。
- 「WSDL URL」フィールドで次のように入力します。
http://www.tilisoft.com/ws/LocInfo/ZipCode.asmx?WSDL
- 「ポート・タイプ」フィールドをクリックします。サービスに接続されるまで数秒ほど待ちます。
返されたポート「ZipCodeSoap」を選択します。
ヒント: 「タイプ」フィールドで「実行」をクリックしてデータを更新してください。「パートナー・リンク」テーブルに新しいブランク行が表示されます。
- 「ワークフローのプロパティー」を開いたままにしておきます。
- Web Services ステップ・パレットから、Invoke ステップをワークフロー・マップに追加します。
- 「ステップのプロパティー」ペインの「一般」タブで、「パートナー・リンク」の inv1 を選択し、「オペレーション」の ListByAreaCode を選択します。
- 「メッセージ・タイプ」では XML を選択します。
- 「発信メッセージ」を見ると、この Web サービスで AreaCode のデータ (ストリング) の入力を要求していることがわかります。また、「受信 XML データ・フィールド」では、応答メッセージに XML データ・フィールドが必要であることがわかります。
「ワークフローのプロパティー」タブの「データ・フィールド」タブで、2 つのストリング・フィールドを作成します。AreaCode および XMLReturn
(この例では、XMLReturn を XML データ・フィールドではなくストリング・フィールドとして定義し、返されたデータをステップ・プロセッサー内で参照できるようにしています。デフォルトの HTML ステップ・プロセッサーでは、XML データ・フィールドを表示できません。ステップ・プロセッサー内で XML データ・フィールドを表示するには、後述の CheckReturn ステップに Java™ ステップ・プロセッサーを使用します。)
- InvokeZip ステップ・プロパティーの「一般」タブで、「発信メッセージ」の _string を AreaCode で置き換え、「受信 XML データ・フィールド」に XMLReturn を指定します。
- ワークフローのマップで、Launch ステップを選択し、AreaCode をパラメーターとして指定します。当該サービスのユーザーは、この Web サービスへの入力として有効な電話番号の市外局番を指定します。
- 返されたデータをユーザーが確認できるように、Invoke ステップの後に Activity ステップを追加します。Activity ステップに、CheckReturn という名前を付けます。
- このステップの参加者として自分自身 (または F_Originator) を指定します。
- AreaCode と XMLReturn をパラメーターとして指定します。XMLReturn フィールドには、実行時に Web サービスから返されるデータが指定されます。
- 別の Activity ステップ (ViewValues) を追加し、ユーザー自身を参加者として指定します。このステップで「割り当て」タブを使用すれば、Web サービスによって返された XML データからデータを抽出できます。
- 「ワークフローのプロパティー」タブの「データ・フィールド」タブで、次のフィールドを作成します。
- ArrayOfAll (ストリングの配列) - この配列の各要素には、返されたデータ収集から抽出された、個々の要素のデータが入れられます。
- ArrayOfZips (文字列配列) - この配列の各要素には、データ収集のうち該当する要素から抽出された郵便番号が入れられます。
- SingleStructure (ストリング) - このフィールドには、データ収集の中の特定 (指定された) 要素のすべてのデータが入れられます。
- ViewValue ステップを選択し、このステップのパラメーターとして、これらの 3 つのデータ・フィールドを選択します。
- この ViewValues ステップを選択したまま「割り当て」タブをクリックし、「完了前」に次のフィールド割り当てを指定します。
名前 |
式 |
ArrayOfAll |
xmlstringarrayexpr(XMLReturn, "/",
"/*[local-name()=""ListByAreaCodeResponse""]/*[local-name()=""ListByAreaCodeResult""]/*[local-name()=""diffgram""]/*[local-name()=""ZipCodeData""]/*[local-name
()=""ZipCodeInfo""]") |
ArrayOfZips |
xmlstringarrayexpr(XMLReturn, "/",
"/*[local-name()=""ListByAreaCodeResponse""]/*[local-name()=""ListByAreaCodeResult""]/*[local-name()=""diffgram""]/*[local-name()=""ZipCodeData""]/*[local-name()=""ZipCodeInfo""]/*[local-name()=""ZIPCODE""]") |
SingleStructure |
ArrayOfAll[5] |
- ステップ間に適正なルートを追加します。
- ワークフローを検証、保存、転送、および起動します。
- 受信トレイの CheckReturn ステップを開き、Web サービスから返されたデータがあるかどうかを XMLReturn で確認します。
このデータの最初の部分はスキーマです。データの残りの部分には、入力した市外局番に関する情報が入れられます。データの量は、市外局番によってはかなり多くなる場合があります。
ステップを完了します。
- ViewValues ステップを開き、抽出されて 3 つのデータ・フィールドに入れられたデータを確認します。
- 場所ArrayOfAll では、市外局番のそれぞれの郵便番号に関するデータが抽出されて、文字列配列の各要素の中に入れられます。
- 場所ArrayOfZips では、それぞれの郵便番号が抽出されて要素の中に入れられます。
- SingleStructure には、ArrayOfAll の単一要素のすべてのデータが入れられます。