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

  1. "「ブローカー開発」"ビューで、Airline XML Message Flows プロジェクトを展開し、「フロー・テスト」の下の reservation1.mbtest ファイルをダブルクリックしてそれをテスト・クライアントで開きます。
  2. テスト・クライアントで、「エンキュー」をクリックします。
  3. 「メッセージの送信」をクリックします。最初の入力メッセージが XML_RESERVATION_IN キューに書き込まれます。
  4. テスト・クライアントで「デキュー」をクリックします。
  5. 「メッセージの取得」をクリックして最初のメッセージをキューから読み取り、Mary Smith の予約を確認します。 応答メッセージには、一人の乗客の予約の確認と、乗客の氏名、予約した座席のクラス、および固有の予約番号が含まれています。 以下の例は応答メッセージの形式を示しています。
    <PassengerReservationResponse>
    <ListOfConfirmations>
    <Confirmation>
    <FirstName>Mary</FirstName>
    <LastName>Smith</LastName>
    <Class>F</Class>
    <ReservationNumber>CA937200305251</ReservationNumber>
    </Confirmation>
    </ListOfConfirmations>
    </PassengerReservationResponse>
  6. ここまでの手順を繰り返して残る 3 つのメッセージを XML_RESERVATION_OUT キューからそれぞれ取得し、Diane Rose、Debra Wiess、および Atila Wiess の予約を確認します。
  7. RESERVDB データベースの XMLFLIGHTTB 表を確認します。 すべての行で、RESERVATIONSEQNO フィールドの値が 4 ずつ加算されます。2003 年 5 月 23 日の CA937 便に対応する行で、XML_Reservation メッセージ・フローは次のように変更されています。
  8. RESERVDB データベースの XMLPASSENGERTB 表を確認します。 XML_Reservation メッセージ・フローは、次のように変更されています。
  9. テスト・クライアントで reservation2.mbtest を開き、「エンキュー」をクリックします。
  10. 「メッセージの送信」をクリックして、XML_RESERVATION_IN キューに 2 番目の入力メッセージを入れます。
  11. テスト・クライアントで「デキュー」をクリックします。
  12. 「メッセージの取得」をクリックして、XML_RESERVATION_OUT キューから応答メッセージを 1 つ取得します。
    応答メッセージには、Mary Smith の 2 度目の予約の確認と、彼女の氏名、予約されている座席のクラス、および乗客固有の予約番号が含まれています。 応答メッセージの構造は、最初の入力メッセージへの応答の場合と同じです。
  13. RESERVDB データベースの XMLFLIGHTTB 表を確認します。 すべての行で RESERVATIONSEQNO に 1 ずつ加算されています。 2003 年 5 月 23 日の BA039 便に対応する行で、XML_Reservation メッセージ・フローは次のように変更されています。
  14. RESERVDB データベースの XMLPASSENGERTB 表を確認します。 XML_Reservation メッセージ・フローは、次のように変更されています。

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

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

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

  1. テスト・クライアントで passengerquery1.mbtest を開き、「エンキュー」をクリックします。
  2. 「メッセージの送信」をクリックします。最初の入力メッセージが XML_PASSENGERQUERY_IN キューに書き込まれます。
  3. テスト・クライアントで「デキュー」をクリックします。
  4. 「メッセージの取得」をクリックして、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>
  5. テスト・クライアントで passengerquery2.mbtest を開き、「エンキュー」をクリックします。
  6. 「メッセージの送信」をクリックして、XML_PASSENGERQUERY_IN キューに 2 番目の入力メッセージを入れます。
  7. テスト・クライアントで「デキュー」をクリックします。
  8. 「メッセージの取得」をクリックして、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>
  9. RESERVDB データベースを調べて、XML_PassengerQuery メッセージ・フローによってどのデータも変更されていないことを確認します。

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

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

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

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

  1. テスト・クライアントで flightdetailsquery.mbtest を開き、「エンキュー」をクリックします。
  2. 「メッセージの送信」をクリックして、XML_FLIGHTQUERY_IN キューに入力メッセージを入れます。
  3. テスト・クライアントで「デキュー」をクリックします。
  4. 「メッセージの取得」をクリックして、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>
  5. RESERVDB データベースを調べて、XML_FlightQuery メッセージ・フローによってどのデータも変更されていないことを確認します。

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

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

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

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

サンプルのホームに戻る