WSFLの仕組みを理解する(1)
■WSFLの位置付けと目的
WSFLの概要を、仕様書の付録Dにある図を使って、簡単に解説していこう。
サンプルのWSFLは非常に長いので、本稿ではすべてを引用しない。詳細に知りたい方は、原文をご参照いただきたい。
この図では、旅行者が旅行会社を通して航空券を入手する流れを定義している。旅行者(Traveler)が旅行の申し込み(TripOrder)を旅行会社(Agent)に渡すと、旅程(Leg)が決定され、航空会社(AirLine)にチケットの注文(TicketOrder)が出る。航空会社から席の確認(Confirm)が旅行会社に戻り、チケット(eTicket)が旅行者に戻されると同時に、旅行会社から旅程表(Itinerary)が送信される、という流れである。
図中の色の付いた丸(●●●)は、アクティビティ(activity)と呼ばれ、これ自体がそれぞれWebサービスとして位置付けられる。複数のWebサービスの処理をつなぎ合わせていく。
このようなビジネスプロセスをWSFLで定義するため、このサンプルでは以下のステップを踏んでいる。
- 取り交わされるメッセージ(図中の封筒や、アクティビティの間を流れるメッセージ)を定義。
- WSDLでポート・タイプを決定(破線矢印)。
- 旅行会社と航空会社がそれぞれどのようなビジネスプロセスを行うかを「フロー・モデル」で定義。
- 旅行会社と航空会社の複合Webサービスが、どのように組み立てられるかを「グローバル・モデル」で定義。
それぞれのステップの内容を紹介していこう。
■ステップ1 メッセージの定義
メッセージは、WSDLのmessage要素を使って定義する。長いので、Trip Orderに使われるメッセージに関連するところをサンプルコードから抜き出してみよう。重要なところは太字になっている。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
旅行の申し込みは、メッセージ(tripOrderMsg)と返答(tripOrderAck)からなる。それぞれは、tripOrderと、WSFLが定義しているFlowInstanceIdを中身として持っている。メッセージに含まれるtripOrderは、それより前の「types/schema」以下の要素で定義されている。
tripOrderはそれぞれ「Journey」「CreditCard」「Recipient(受取者)」を中に持っており、その中身もリストを上に追っていくと見つかる。原文を見ていただくと分かるが、フローの内側で使われるメッセージやタイプもこの中で定義している。
■ステップ2 ポート・タイプの定義
次もWSDLを使う。WSDLによって、先ほどのメッセージをやりとりする部分をポート・タイプとして定義していく。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
この定義を、下の図に示した。旅行会社(Agent)の左側を「旅行取り扱い業者(tripHandler)」、右側を「チケット要求者」としている。同様に、航空会社の左側を「チケット取り扱い業者(ticketHandler)」、配送部分を「チケット配送業者(ticketDelivery)」としている。さらに、購入者の右側を「チケット購入者(ticketBuyer)」として定義した。
Copyright © ITmedia, Inc. All Rights Reserved.