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 メッセージ・フローを実行するには、次のようにします。

  1. Message Brokers Toolkit で、「アプリケーション開発」パースペクティブに切り替えます。
  2. 「リソース・ナビゲーター」ビューで、Airline XML Message Flows プロジェクトを拡張し、reservation1.enqueue ファイルをダブルクリックしてそれを Enqueue エディターで開きます。
  3. Enqueue エディターの「ポート」フィールドに 2414 を入力します。
  4. 「キューへ書き込み」をクリックします。 最初の入力メッセージが XML_RESERVATION_IN キューに書き込まれます。
  5. Message Brokers Toolkit ツールバーで、「メッセージをキューから取得」アイコン デキュー・アイコン 上の矢印をクリックし、次いで「メッセージの取得...」をクリックして「メッセージのデキュー」ダイアログを開きます。
  6. 「メッセージのデキュー」ダイアログで、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>
  7. RESERVDB データベースの XMLFLIGHTTB 表を確認します。 すべての行で、RESERVATIONSEQNO の値が 4 ずつ加算されます。 2003 年 5 月 23 日の CA937 便に対応する行で、XML_Reservation メッセージ・フローは次のように変更されています。
  8. RESERVDB データベースの XMLPASSENGERTB 表を確認します。 XML_Reservation メッセージ・フローは、次のように変更されています。
  9. Enqueue エディターで reservation2.enqueue を開き、「キューへ書き込み」をクリックします。 2 番目の入力メッセージが XML_RESERVATION_IN キューに書き込まれます。
  10. 「メッセージのデキュー」ダイアログを使用して、XML_RESERVATION_OUT キューから応答メッセージを 1 つ取得します。
    応答メッセージには、Mary Smith の 2 度目の予約の確認と、彼女の氏名、予約されている座席のクラス、および乗客固有の予約番号が含まれています。 応答メッセージの構造は、最初の入力メッセージへの応答の場合と同じです。
  11. RESERVDB データベースの XMLFLIGHTTB 表を確認します。 すべての行で RESERVATIONSEQNO に 1 ずつ加算されています。 2003 年 5 月 23 日の BA039 便に対応する行で、XML_Reservation メッセージ・フローは次のように変更されています。
  12. RESERVDB データベースの XMLPASSENGERTB 表を確認します。 XML_Reservation メッセージ・フローは、次のように変更されています。

2. XML_PassengerQuery メッセージ・フローの実行

XML_PassengerQuery メッセージ・フローは、入力メッセージ内に指定されている乗客の予約詳細情報を検索します。 出力メッセージ内の情報のタイプは、入力メッセージ内に提供されている情報によって異なります。

XML_PassengerQuery メッセージ・フローを実行するには、次のようにします。

  1. Enqueue エディターで passengerquery1.enqueue を開きます。
  2. 「ポート」フィールドに 2414 と入力した後、「キューへ書き込み」をクリックします。 最初の入力メッセージが XML_PASSENGERQUERY_IN キューに書き込まれます。
  3. 「メッセージのデキュー」ダイアログを使用して、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>
  4. Enqueue エディターで passengerquery2.enqueue を開きます。
  5. 「ポート」フィールドに 2414 と入力した後、「キューへ書き込み」をクリックします。 2 番目の入力メッセージが XML_PASSENGERQUERY_IN キューに書き込まれます。
  6. 「メッセージのデキュー」ダイアログを使用して、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>
  7. RESERVDB データベースを調べて、XML_PassengerQuery メッセージ・フローによってどのデータも変更されていないことを確認します。

3. XML_FlightQuery メッセージ・フローの実行

XML_FlightQuery メッセージ・フローは、3 つの小さなメッセージ・フローで構成されています。 XML_FlightQuery が動作するためには、3 つのメッセージ・フローがすべてブローカーにデプロイされ、開始されていなければなりません。

XML_FlightQuery メッセージ・フローは、入力メッセージで指定されたフライトに関する情報を取り出し、そのフライトに予約をしている乗客をリストします。

XML_FlightQuery メッセージ・フローを実行するには、次のようにします。

  1. Enqueue エディターで flightdetailsquery.enqueue を開きます。
  2. 「ポート」フィールドに 2414 と入力した後、「キューへ書き込み」をクリックします。 入力メッセージが XML_FLIGHTQUERY_IN キューに書き込まれます。
  3. 「メッセージのデキュー」ダイアログを使用して、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>
  4. RESERVDB データベースを調べて、XML_PassengerQuery メッセージ・フローによってどのデータも変更されていないことを確認します。

4. XML_CancelReservation メッセージ・フローの実行

XML_CancelReservation メッセージ・フローは、入力メッセージに予約番号を使用して、リストされている予約をキャンセルします。

XML_CancelReservation メッセージ・フローを実行するには、次のようにします。

  1. Enqueue エディターで cancelreservation.enqueue を開きます。
  2. 「ポート」フィールドに 2414 を入力します。
  3. RESERVDB ユーザー・データベースを調べて、cancelreservation.enqueue 内の予約番号が XMLPASSENGERTB 表の中に存在していることを確認します。 cancelreservation.enqueue 内に予約番号が存在しない場合は、「メッセージ・データ」フィールドを編集してください。
  4. 「キューへ書き込み」をクリックします。 入力メッセージが XML_CANCELRESERVATION_IN キューに書き込まれます。
  5. 「メッセージのデキュー」ダイアログを使用して、XML_CANCELRESERVATION_OUT キューから出力メッセージを 1 つ取得します。 この場合の出力メッセージは、入力メッセージを単にコピーしたものです。
  6. RESERVDB データベースの XMLFLIGHTTB 表を確認します。 2003 年 5 月 23 日の CA937 便に対応する行で、XML_CancelReservation メッセージ・フローは次のように変更されています。
  7. RESERVDB データベースの XMLPASSENGERTB 表を確認します。 XML_Reservation メッセージ・フローは、次のように変更されています。

メインページのアイコン   サンプルのホームに戻る