Airline Reservations サンプルの実行
以下のタスクをシミュレートするために Airline Reservations サンプルを実行することができます。
- 飛行機の座席の予約
- 乗客に関する情報の要求
- 特定のフライトおよびその乗客リストに関する情報の要求
- 予約の取り消し
それぞれのタスクごとに、特定の WebSphere MQ キューにメッセージを書き込みます。
適切なメッセージ・フローがメッセージをキューから取得し、それを処理します。
以下の手順では、提供されている自己定義 XML メッセージを Airline Reservations サンプル・メッセージ・フローにより書き込む方法と、そのメッセージ・フローから受け取ることを予期できる出力を説明しています。
メッセージ・フローはデータベースを更新するので、以下の手順でリストされている順序でメッセージ・フローを実行する必要があります。
サンプルを実行する際、Message Brokers Toolkit の「問題」ビューに「Unresolvable database table reference T.CLASSTYPE」というようなエラー・メッセージが表示される場合があります。この警告は、データベース表の定義がプロジェクトにインポートされていないことを示します。
これは、実行時のサンプルの振る舞いには影響しません。
サンプルのデータベースの内容を表示する方法は、インストールされているデータベース製品によって異なります。
これは、DB2 データベースであれば、DB2 が提供するツール (DB2 Control Center など) が使用されるためです。
ユーザーがデータベース製品をインストールしていない場合、サンプルでは Apache Derby データベースが使用されます。
Derby データベースにあるデータを表示する方法については、『Derby データベースの内容の表示』を
参照してください。
サンプルを実行するときに問題が発生する場合は、『サンプルの実行時に発生する問題の診断』を
参照してください。
1. XML_Reservation メッセージ・フローの実行
XML_Reservation メッセージ・フローは、入力メッセージ内にリストされているフライトでの座席を予約し、乗客が予約を確認するための応答メッセージを生成します。
XML_Reservation メッセージ・フローを実行するには、次のようにします。
- Message Brokers Toolkit で、「アプリケーション開発」パースペクティブに切り替えます。
- 「リソース・ナビゲーター」ビューで、Airline XML Message Flows プロジェクトを拡張し、reservation1.enqueue ファイルをダブルクリックしてそれを Enqueue エディターで開きます。
- Enqueue エディターの「ポート」フィールドに 2414 を入力します。
- 「キューへ書き込み」をクリックします。
最初の入力メッセージが XML_RESERVATION_IN キューに書き込まれます。
- Message Brokers Toolkit ツールバーで、「メッセージをキューから取得」アイコン
上の矢印をクリックし、次いで「メッセージの取得...」をクリックして「メッセージのデキュー」ダイアログを開きます。
- 「メッセージのデキュー」ダイアログで、WBRK6_DEFAULT_QUEUE_MANAGER キュー・マネージャー上の XML_RESERVATION_OUT キューから 4 つの応答メッセージを取得します。
ポート番号は 2414 です。
応答メッセージごとに、一人の乗客の予約の確認と、乗客の氏名、予約した座席のクラス、および固有の予約番号が含まれています。
以下の例は応答メッセージの形式を示しています。
<PassengerReservationResponse>
<ListOfConfirmations>
<Confirmation>
<FirstName>Mary</FirstName>
<LastName>Smith</LastName>
<Class>F</Class>
<ReservationNumber>CA937200305251</ReservationNumber>
</Confirmation>
</ListOfConfirmations>
</PassengerReservationResponse>
- RESERVDB データベースの XMLFLIGHTTB 表を確認します。
すべての行で、RESERVATIONSEQNO の値が 4 ずつ加算されます。
2003 年 5 月 23 日の CA937 便に対応する行で、XML_Reservation メッセージ・フローは次のように変更されています。
- ECONOMICCLASS の値が 2 加算されています。
- FIRSTCLASS の値が 2 加算されています。
- TOTALECONOMIC の値が 2 減算されています。
- TOTALFIRST の値が 2 減算されています。
- RESERVDB データベースの XMLPASSENGERTB 表を確認します。
XML_Reservation メッセージ・フローは、次のように変更されています。
- XMLPASSENGERTB 表に、入力メッセージに指定されている人について 1 人につき 1 行ずつ、4 つの新しい行が追加されています。
- 各予約に固有の予約番号が割り振られています。
- Enqueue エディターで reservation2.enqueue を開き、「キューへ書き込み」をクリックします。
2 番目の入力メッセージが XML_RESERVATION_IN キューに書き込まれます。
- 「メッセージのデキュー」ダイアログを使用して、XML_RESERVATION_OUT キューから応答メッセージを 1 つ取得します。
応答メッセージには、Mary Smith の 2 度目の予約の確認と、彼女の氏名、予約されている座席のクラス、および乗客固有の予約番号が含まれています。
応答メッセージの構造は、最初の入力メッセージへの応答の場合と同じです。
- RESERVDB データベースの XMLFLIGHTTB 表を確認します。
すべての行で RESERVATIONSEQNO に 1 ずつ加算されています。
2003 年 5 月 23 日の BA039 便に対応する行で、XML_Reservation メッセージ・フローは次のように変更されています。
- FIRSTCLASS の値に 1 加算されています。
- TOTALFIRST の値が 1 減算されています。
- RESERVDB データベースの XMLPASSENGERTB 表を確認します。
XML_Reservation メッセージ・フローは、次のように変更されています。
- XMLPASSENGERTB 表に、入力メッセージに指定されている人のための行が 1 行追加されています。
- 予約に固有の予約番号が割り振られています。
2. XML_PassengerQuery メッセージ・フローの実行
XML_PassengerQuery メッセージ・フローは、入力メッセージ内に指定されている乗客の予約詳細情報を検索します。
出力メッセージ内の情報のタイプは、入力メッセージ内に提供されている情報によって異なります。
XML_PassengerQuery メッセージ・フローを実行するには、次のようにします。
- Enqueue エディターで passengerquery1.enqueue を開きます。
- 「ポート」フィールドに 2414 と入力した後、「キューへ書き込み」をクリックします。
最初の入力メッセージが XML_PASSENGERQUERY_IN キューに書き込まれます。
- 「メッセージのデキュー」ダイアログを使用して、XML_PASSENGERQUERY_OUT キューから出力メッセージを 1 つ取得します。
その出力メッセージには、入力メッセージで指定された予約番号を割り当てられた Debra Weiss の氏名と予約の詳細が含まれています。
以下の例は出力メッセージの形式を示しています。
<PassengerInfoResponse>
<PassengerInfo>
<ReservationNumber>CA937200305253</ReservationNumber>
<FirstName>Debra</FirstName>
<LastName>Weiss</LastName>
<FlightNumber>CA937</FlightNumber>
<Date>20030525</Date>
<Class>Y</Class>
</PassengerInfo>
<PassengerInfoResponse>
- Enqueue エディターで passengerquery2.enqueue を開きます。
- 「ポート」フィールドに 2414 と入力した後、「キューへ書き込み」をクリックします。
2 番目の入力メッセージが XML_PASSENGERQUERY_IN キューに書き込まれます。
- 「メッセージのデキュー」ダイアログを使用して、XML_PASSENGERQUERY_OUT キューから出力メッセージを 1 つ取得します。
その出力メッセージには、入力メッセージで指定された Mary Smith の 2 つの予約の名前と予約に関する情報が含まれています。
以下の例は出力メッセージの形式を示しています。
<PassengerInfoResponse>
<ListOfReservations>
<Reservation>
<FlightNumber>CA937</FlightNumber>
<Date>20030525</Date>
<Class>F</Class>
</Reservation>
<Reservation>
<FlightNumber>BA039</FlightNumber>
<Date>20030525</Date>
<Class>F</Class>
</Reservation>
</ListOfReservations>
</PassengerInfoResponse>
- RESERVDB データベースを調べて、XML_PassengerQuery メッセージ・フローによってどのデータも変更されていないことを確認します。
3. XML_FlightQuery メッセージ・フローの実行
XML_FlightQuery メッセージ・フローは、3 つの小さなメッセージ・フローで構成されています。
XML_FlightQuery が動作するためには、3 つのメッセージ・フローがすべてブローカーにデプロイされ、開始されていなければなりません。
- XML_FlightQueryOut
- XML_FlightQueryReply
- XML_FlightQueryIn
XML_FlightQuery メッセージ・フローは、入力メッセージで指定されたフライトに関する情報を取り出し、そのフライトに予約をしている乗客をリストします。
XML_FlightQuery メッセージ・フローを実行するには、次のようにします。
- Enqueue エディターで flightdetailsquery.enqueue を開きます。
- 「ポート」フィールドに 2414 と入力した後、「キューへ書き込み」をクリックします。
入力メッセージが XML_FLIGHTQUERY_IN キューに書き込まれます。
- 「メッセージのデキュー」ダイアログを使用して、XML_FLIGHTQUERY_OUT キューから応答メッセージを 1 つ取得します。
応答メッセージには、ファースト・クラスとエコノミー・クラスの座席数、座席の料金、および空席数の情報が含まれています。
以下の例は応答メッセージの形式を示しています。
<FlightDetailsInfoResponse>
<Flight number="CA937" Flightdate="20030525">
<FirstClass>
<Capacity>38</Capacity>
<Used>6</Used>
<Price>300</Price>
</FirstClass>
<EconomyClass>
<Capacity>188</Capacity>
<Used>6</Used>
<Price>200</Price>
</EconomyClass>
<Origin>BEIJING</Origin>
<Destination>LONDON</Destination>
</Flight>
<ListOfPassengers>
<Passenger>
<ReservationNumber>CA937200305251</ReservationNumber>
<FirstName>Mary</FirstName>
<LastName>Smith</LastName>
<Class>F</Class>
</Passenger>
<Passenger>
<ReservationNumber>CA937200305252</ReservationNumber>
<FirstName>Diane</FirstName>
<LastName>Rose</LastName>
<Class>Y</Class>
</Passenger>
<Passenger>
<ReservationNumber>CA937200305253</ReservationNumber>
<FirstName>Debra</FirstName>
<LastName>Wiess</LastName>
<Class>Y</Class>
</Passenger>
<Passenger>
<ReservationNumber>CA937200305254</ReservationNumber>
<FirstName>Atila</FirstName>
<LastName>Wiess</LastName>
<Class>F</Class>
</Passenger>
</ListOfPassengers>
</FlightDetailsInfoResponse>
- RESERVDB データベースを調べて、XML_PassengerQuery メッセージ・フローによってどのデータも変更されていないことを確認します。
4. XML_CancelReservation メッセージ・フローの実行
XML_CancelReservation メッセージ・フローは、入力メッセージに予約番号を使用して、リストされている予約をキャンセルします。
XML_CancelReservation メッセージ・フローを実行するには、次のようにします。
- Enqueue エディターで cancelreservation.enqueue を開きます。
- 「ポート」フィールドに 2414 を入力します。
- RESERVDB ユーザー・データベースを調べて、cancelreservation.enqueue 内の予約番号が XMLPASSENGERTB 表の中に存在していることを確認します。
cancelreservation.enqueue 内に予約番号が存在しない場合は、「メッセージ・データ」フィールドを編集してください。
- 「キューへ書き込み」をクリックします。
入力メッセージが XML_CANCELRESERVATION_IN キューに書き込まれます。
- 「メッセージのデキュー」ダイアログを使用して、XML_CANCELRESERVATION_OUT キューから出力メッセージを 1 つ取得します。
この場合の出力メッセージは、入力メッセージを単にコピーしたものです。
- RESERVDB データベースの XMLFLIGHTTB 表を確認します。
2003 年 5 月 23 日の CA937 便に対応する行で、XML_CancelReservation メッセージ・フローは次のように変更されています。
- ECONOMICCLASS の値が 2 減算されています。
- FIRSTCLASS の値が 2 減算されています。
- TOTALECONOMIC の値が 2 加算されています。
- TOTALFIRST の値が 2 加算されています。
- RESERVDB データベースの XMLPASSENGERTB 表を確認します。
XML_Reservation メッセージ・フローは、次のように変更されています。
- XMLPASSENGERTB 表から、入力メッセージに指定されている人について 1 人につき 1 行ずつ、4 つの新しい行が削除されています。
サンプルのホームに戻る