Web Services の使用: XML メッセージの例
この例では、ワークフロー・パラメーターではなく、XML スキーマを利用する Web Services を使用するワークフローのペアを作成する手順を概説します。

簡単な車両登録プロセスでの次の機能を図に示します。
- SubmitVehicleReg
- このワークフローは、Launch ステップで車両データの入力を促し、Invoke ステップで VehicleReg Web Service を呼び出して、発信メッセージに車両データを送信します。
- RegFeeInfo ステップで、ユーザーは応答メッセージを表示します。
- RegisterVehicles
- このワークフローは、車両データ (所有者名、価格など) を入力とする VehicleReg Web Service を定義します。着信メッセージでは、Receive ステップのデータ収集スキーマを使用します。Assign システム関数により、XPath 式を使用して、受信 XML メッセージからワークフローのデータ・フィールドにデータを抽出します。
- AssignReg ステップで、ユーザーは応答メッセージ用の登録番号を入力します。
- Reply ステップで、登録番号と計算した手数料を呼び出し側のプロセスに返します。
VehicleReg Web Service を提供するワークフローを作成
- Process Designer で、新しいワークフローの定義を始めます。
- 「ワークフローのプロパティー」>>「一般」タブで、名前と件名 (RegisterVehicles) を入力します。
- Web Service を定義します。
- 「Web Services」の「パートナー・リンク」で、Web Service を作成します。
名前: VRegistration 受信/応答: このチェック・ボックスを選択します。 実行: このチェック・ボックスをクリアします。 プロセス・ポート・タイプ: VRegPort
ヒント: データを更新するには、「タイプ」フィールドの「受信/応答」をクリックします。「パートナー・リンク」テーブルに新しいブランク行が表示されます。
- 「XML スキーマ」タブで、着信データ用と応答メッセージ用の 2 つのスキーマを定義します。
注: この 2 つの XML スキーマは非常に簡単なので、Process Designer でパラメーターとして解釈可能ですが、ここでは XML メッセージを使用する例として使用しています。
表 1. 着信データと応答メッセージのスキーマ 着信 発信 名前: VehicleReceiveSchema スキーマ定義 : 定義するテキストは、ここをクリックしてください。 名前: VehicleReplySchema スキーマ定義 : 定義するテキストは、ここをクリックしてください。 ヒント: テキストがスキーマ定義で別個の行として表示されない場合は、「確認」をクリックします。
- 「XML データ・フィールド」タブで、受信する車両データ・メッセージを保持する XMLVehicleData を指定します。
名前: XMLVehicleData スキーマ: VehicleReceiveSchema エレメント: VehicleReg
- 「Web Services」の「一般」タブでは、「既存の Web Services オペレーションを確定」を選択しないでください。Web サービスの入力パラメーターと出力パラメーターを、適宜何回でも変更できるようにしておく必要があるためです。
- 「Web Services」の「パートナー・リンク」で、Web Service を作成します。
- XML スキーマ (「Web Services」の「XML スキーマ」タブ) を調べると、着信メッセージと発信メッセージのデータを保持する下記のようなワークフロー・フィールドが必要であることがわかります。以下のデータ・フィールドを、「ワークフローのプロパティー」の「データ・フィールド」で指定します。
表 2. 着信名と発信名のワークフロー・フィールド 着信名 (タイプ) 発信名 (タイプ) OwnerName (文字列型) ReplyRegNum (文字列型) VehicleNumber (文字列型) Fee (浮動小数点型) VehicleValue (浮動小数点型) - 車両登録 Web Service を提供するステップを作成します。
- 「BPM Palette」から、「System Step」を配置し、Receive システム関数を指定します。
名前: Receive
この Web Service の要求に応答して、このワークフローを自動的に起動するには、このステップを Launch ステップ後の最初のステップとし、ステップの中で Receive を最初の関数とする必要があります。
パートナー・リンク: VRegistration オペレーション: VRegOp メッセージ・タイプ: XML 受信 XML データ・フィールド: XMLVehicleData スキーマ: VehicleReceiveSchema エレメント: VehicleReg
- 「BPM Palette」から、「System Step」を配置し、Receive システム関数を指定します。
- 同じ System ステップ内に、Assign システム関数を追加して、受信 XML メッセージから対応するデータ・フィールドにデータを抽出します。
表 3. データ・フィールドとそれに関連する式 フィールド 式 OwnerName xmlstringexpr(XMLVehicleData, "/", "/*[local-name()=""VehicleReg""]/*[local-name()=""Owner""]") VehicleNumber xmlstringexpr(XMLVehicleData, "/", "/*[local-name()=""VehicleReg""]/*[local-name()=""Vehicle""]/*[local-name()=""VIN""]") VehicleValue convert(xmlstringexpr(XMLVehicleData, "/", "/*[local-name()=""VehicleReg""]/*[local-name()=""Vehicle""]/*[local-name()=""Value""]"),float) Fee VehicleValue * 0.01 (この値は、応答メッセージ用に計算します。) - BPM Palette から、登録担当者が車両データを調べ、応答用に登録番号を入力できるステップを作成します。
- ワークフロー・マップに Activity ステップをドラッグします。
名前: AssignReg
- 特定のユーザー (自分自身を割り当てられます) をステップの参加者として選択します。
Web Service が呼び出されると、ワークフロー・システムがこのワークフローを自動的に起動するので、このワークフローのステップでは、F_Originator を割り当てることはできません。システムは、受信トレイを持つ正当なユーザーとみなされないからです。
- 登録情報をこのステップのパラメーターとして指定し、登録担当者が車両データを調べて、応答用に登録番号を入力できるようにします。実際の呼び出しメッセージを表示する場合は、XML データ・フィールド XMLVehicleData もパラメーターとして指定できます。
パラメーター名: OwnerName パラメーター名: ReplyRegNum パラメーター名: VehicleNumber パラメーター名: VehicleValue パラメーター名: XMLVehicleData
- ワークフロー・マップに Activity ステップをドラッグします。
- Web Services ステップ・パレットから、Reply ステップをワークフロー・マップに配置するか、Reply システム関数を含む System ステップを使用します。このステップでは、Web サービスを呼び出すプロセスへの応答メッセージを指定します。
- 「プロパティー」ペインで、Receive ステップで定義したものと同じパートナー・リンクとオペレーションを選択します。
- 「メッセージ」を選択します。
- 「スキーマ」では VehicleReplySchema を選択し、「エレメント」では VehicleReply を選択します。
- 「メッセージ・テンプレートの作成」ボタンをクリックすると、発信メッセージがテンプレート形式で表示されます。
- 発信メッセージを編集して、上に示したように、プレースホルダーを該当するデータ・フィールドで置き換えます。
Fee データは、メッセージ用に浮動小数点型から文字列型に変換する必要があります。
- このワークフロー定義を検証、保存、および転送します。
Web Service を呼び出すワークフローを作成
- 新しいワークフロー定義を作成します。
- 「ワークフローのプロパティー」>>「一般」タブで、ワークフロー定義の名前と件名 (SubmitVehicleReg) を入力します。
- Web Services のパートナー・リンクを定義します。
- 「Web サービス」>>「パートナー・リンク」タブで、パートナー・リンクの名前 (VehicleReg) を入力します。
- 「実行」を選択し、「WSDL URL」内の「Web Services Explorer」をクリックします。
- 「Web Services Explorer」ダイアログ・ボックスの「Web Services ワークフロー」を選択してから、「実行」をクリックすると、ワークフロー・システムへ転送済みの、Receive システム関数を使用したワークフローが表示されます。
- 選択「RegisterVehicles」を選択してから「OK」をクリックします。
- 「パートナー・リンク」タブで、ポート (VRegPort) を選択します。
ヒント: 「タイプ」フィールドで「実行」をクリックしてデータを更新してください。「パートナー・リンク」テーブルに新しいブランク行が表示されます。
- Web Services Palette から、Invoke ステップをワークフロー・マップにドラッグします。
- 「プロパティー」ペインで、パートナー・リンク (VehicleReg) を選択します。
- オペレーション (VRegOp) を選択します。
呼び出される Web Service で必要なパラメーターが表示されます。
この例の残りの部分では、簡単な方法としてパラメーター・モードを使用します。より高度な方法として、XML モードを選択し、該当するデータ・フィールド名をメッセージ・テンプレートに指定することもできます。
- Invoke ステップの XML メッセージ用のデータ・フィールドを作成します。
- 「発信パラメーター」では、RegisterVehicles ワークフローへの呼び出しメッセージで使用するこのワークフローでのデータ・フィールドを作成します。
表 4. 発信パラメーターとデータ・フィールド 名前 タイプ 式 Owner ストリング <Create> Owner VIN ストリング <Create> VIN 値 浮動小数点型 <Create> 値 - 「着信パラメーター」では、RegisterVehicles ワークフローからの応答メッセージを保持するこのワークフローでのデータ・フィールドを作成します。
表 5. 着信パラメーターとデータ・フィールド パラメーター タイプ データ・フィールド Owner_reply ストリング <Create> Owner_reply VIN_reply ストリング <Create> VIN_reply RegNumber_reply ストリング <Create> RegNumber_reply RegFee_reply 浮動小数点型 <Create> RegFee_reply
- 「発信パラメーター」では、RegisterVehicles ワークフローへの呼び出しメッセージで使用するこのワークフローでのデータ・フィールドを作成します。
- 「BPM Palette」から、「Activity Step」をワークフロー・マップにドラッグし、応答メッセージを表示できるようにします。
ステップ名: RegFeeInfo 参加者: F_Originator パラメーター: すべてのデータ・フィールド
- Launch ステップを選択し、Owner、VIN、および Value をパラメーターとして指定します。
起動ユーザーがこれらの値を入力して、プロセスを開始します。
- このワークフローを検証、保存、および転送します。
- 続いて、SubmitVehicleReg ワークフローを実行します。
SubmitVehicleReg ワークフローを実行
- SubmitVehicleReg ワークフローを起動します。
- Launch ステップで、データ・フィールド Owner、VIN、および Value に適切な値を入力して、ワークフローを起動します。
- 「Workplace」の「タスク」で、登録番号を割り当てるユーザー (この例ではおそらく自分自身) としてログオンし、AssignReg タスクを開きます。
- データ・フィールドを調べて、RegNumber_reply フィールドに登録番号を表すテキストを入力します。
- ステップを完了します。
- 起動ユーザーとしてログオンし、受信トレイの RegFeeInfo ステップを開きます。
- データ・フィールド RegNumber と RegFee を確認します。