Airline Reservations サンプルの実行
以下のタスクをシミュレートするために Airline Reservations サンプルを実行することができます。
- 飛行機の座席の予約
- 乗客に関する情報の要求
- 特定のフライトおよびその乗客リストに関する情報の要求
- 予約の取り消し
それぞれのタスクごとに、特定の WebSphere MQ キューにメッセージを書き込みます。
適切なメッセージ・フローがメッセージをキューから取得し、それを処理します。
以下の手順では、提供されている自己定義 XML メッセージを Airline Reservations サンプル・メッセージ・フローにより書き込む方法と、そのメッセージ・フローから受け取ることを予期できる出力を説明しています。
メッセージ・フローはデータベースを更新するので、以下の手順でリストされている順序でメッセージ・フローを実行する必要があります。
サンプルを実行する際、WebSphere Message Brokers Toolkit の「問題」ビューに「Unresolvable database table reference T.CLASSTYPE」というようなエラー・メッセージが表示される場合があります。
この警告は、データベース表の定義がプロジェクトにインポートされていないことを示します。
この警告は、実行時のサンプルの振る舞いには影響しません。
サンプルのデータベースの内容を表示する方法は、インストールされているデータベース製品によって異なります。
これは、DB2 データベースであれば、DB2 が提供するツール (DB2 コントロール・センターなど) が使用されるためです。
サンプルの実行時に問題を検出した場合は、
WebSphere Message Broker 資料の『サンプル実行時の問題の解決』を参照してください。
注: フローを使って複数のテスト・メッセージを実行すると、失敗したように見える場合があります。
失敗したように見える原因は、しきい値を超えたことで、フローでのメッセージの経路が変わったためです。
この見かけ上の失敗を解決するには、データベースを元の内容に戻します。
XML_Reservation メッセージ・フローの実行
XML_Reservation メッセージ・フローは、入力メッセージ内にリストされているフライトでの座席を予約し、乗客が予約を確認するための応答メッセージを生成します。
XML_Reservation メッセージ・フローを実行するには、次のようにします。
- "「ブローカー開発」"ビューで、Airline XML Message Flows プロジェクトを展開し、「フロー・テスト」の下の reservation1.mbtest ファイルをダブルクリックしてそれをテスト・クライアントで開きます。
- テスト・クライアントで、「エンキュー」をクリックします。
- 「メッセージの送信」をクリックします。最初の入力メッセージが XML_RESERVATION_IN キューに書き込まれます。
- テスト・クライアントで「デキュー」をクリックします。
- 「メッセージの取得」をクリックして最初のメッセージをキューから読み取り、Mary Smith の予約を確認します。
応答メッセージには、一人の乗客の予約の確認と、乗客の氏名、予約した座席のクラス、および固有の予約番号が含まれています。
以下の例は応答メッセージの形式を示しています。
<PassengerReservationResponse>
<ListOfConfirmations>
<Confirmation>
<FirstName>Mary</FirstName>
<LastName>Smith</LastName>
<Class>F</Class>
<ReservationNumber>CA937200305251</ReservationNumber>
</Confirmation>
</ListOfConfirmations>
</PassengerReservationResponse>
- ここまでの手順を繰り返して残る 3 つのメッセージを XML_RESERVATION_OUT キューからそれぞれ取得し、Diane Rose、Debra Wiess、および Atila Wiess の予約を確認します。
- 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 つの新しい行が追加されています。
- 各予約に固有の予約番号が割り振られています。
- テスト・クライアントで reservation2.mbtest を開き、「エンキュー」をクリックします。
- 「メッセージの送信」をクリックして、XML_RESERVATION_IN キューに 2 番目の入力メッセージを入れます。
- テスト・クライアントで「デキュー」をクリックします。
- 「メッセージの取得」をクリックして、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 行追加されています。
- 予約に固有の予約番号が割り振られています。
XML_PassengerQuery メッセージ・フローの実行
XML_PassengerQuery メッセージ・フローは、入力メッセージ内に指定されている乗客の予約詳細情報を検索します。
出力メッセージ内の情報のタイプは、入力メッセージ内に提供されている情報によって異なります。
XML_PassengerQuery メッセージ・フローを実行するには、次のようにします。
- テスト・クライアントで passengerquery1.mbtest を開き、「エンキュー」をクリックします。
- 「メッセージの送信」をクリックします。最初の入力メッセージが 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>
- テスト・クライアントで passengerquery2.mbtest を開き、「エンキュー」をクリックします。
- 「メッセージの送信」をクリックして、XML_PASSENGERQUERY_IN キューに 2 番目の入力メッセージを入れます。
- テスト・クライアントで「デキュー」をクリックします。
- 「メッセージの取得」をクリックして、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 メッセージ・フローによってどのデータも変更されていないことを確認します。
XML_FlightQuery メッセージ・フローの実行
XML_FlightQuery メッセージ・フローは、3 つの小さなメッセージ・フローで構成されています。
XML_FlightQuery が動作するためには、3 つのメッセージ・フローがすべてブローカーにデプロイされ、開始されていなければなりません。
- XML_FlightQueryOut
- XML_FlightQueryReply
- XML_FlightQueryIn
XML_FlightQuery メッセージ・フローは、入力メッセージで指定されたフライトに関する情報を取り出し、そのフライトに予約をしている乗客をリストします。
XML_FlightQuery メッセージ・フローを実行するには、次のようにします。
- テスト・クライアントで flightdetailsquery.mbtest を開き、「エンキュー」をクリックします。
- 「メッセージの送信」をクリックして、XML_FLIGHTQUERY_IN キューに入力メッセージを入れます。
- テスト・クライアントで「デキュー」をクリックします。
- 「メッセージの取得」をクリックして、XML_FLIGHTQUERY_OUT キューから出力メッセージを 1 つ取得します。応答メッセージには、ファースト・クラスとエコノミー・クラスの座席数、座席の料金、および空席数の情報が含まれています。
以下の例は応答メッセージの形式を示しています。
<FlightDetailsInfoResponse>
<Flight number="CA937" Flightdate="20030525">
<FirstClass>
<Capacity>48</Capacity>
<Used>2</Used>
<Price>300</Price>
</FirstClass>
<EconomyClass>
<Capacity>198</Capacity>
<Used>2</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_FlightQuery メッセージ・フローによってどのデータも変更されていないことを確認します。
XML_CancelReservation メッセージ・フローの実行
XML_CancelReservation メッセージ・フローは、入力メッセージに予約番号を使用して、リストされている予約をキャンセルします。
XML_CancelReservation メッセージ・フローを実行するには、次のようにします。
- テスト・クライアントで cancelreservation.mbtest を開き、「エンキュー」をクリックします。
- RESERVDB ユーザー・データベースを調べて、cancelreservation.mbtest 内の予約番号が XMLPASSENGERTB 表の中に存在していることを確認します。
cancelreservation.mbtest 内に予約番号が存在しない場合は、「メッセージ・データ」フィールドを編集してください。
- 「メッセージの送信」をクリックします。入力メッセージが 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_CancelReservation メッセージ・フローは、次のように変更されています。
- XMLPASSENGERTB 表から、入力メッセージに指定されている人について 1 人につき 1 行ずつ、4 つの新しい行が削除されています。
サンプルのホームに戻る