XML_PassengerQuery メッセージ・フローについて
XML_PassengerQuery メッセージ・フローは、入力メッセージ内に指定されている乗客の予約詳細情報を検索します。
出力メッセージ内の情報のタイプは、入力メッセージ内に提供されている情報によって異なります。
- 入力メッセージが予約番号のみを提供する場合、メッセージは SinglePassenger パスの後に続き、出力メッセージには、予約番号が関連付けられているフライトのみに関する情報が含まれています。
- 入力メッセージが乗客の名前のみを提供する場合、メッセージは AllReservations パスの後に続き、出力メッセージには、乗客が予約しているすべてのフライトに関する情報が含まれます。
ここでは、乗客のフルネームが固有であることを想定しています。これは現実的ではありませんが、サンプルを単純化するためです。
メッセージ・フローは RouteToLabel ノードと Label ノードを使用して、一連の Filter ノード (特定のパスに
メッセージを経路指定するには、真/偽のブール結果を必要とする) を作成することなくメッセージ自体にある情報に基づいて
動的にメッセージを経路指定します。
説明されている両方のタイプの情報の検索を例示するために、XML_PassengerQuery メッセージ・フローを実行するための 2 つの入力メッセージが提供されています。
下の図は、XML_PassengerQuery メッセージ・フローを示しています。

下の表では、XML_PassengerQuery メッセージ・フローで使用されるノードのタイプをリストしています。
ノード・タイプ |
ノード名 |
MQInput |
XML_PASSENGERQUERY_IN |
Compute |
DecideOnQuery; GetPassengerInformation; GetReservationsInformation |
RouteToLabel |
RouteToLabel
|
Label |
SinglePassenger; AllReservations |
MQOutput |
XML_PASSENGERQUERY_FAIL_1; XML_PASSENGERQUERY_FAIL_2; XML_PASSENGERQUERY_OUT |
詳しくは、WebSphere Message Broker 資料で XML_PassengerQuery メッセージ・フローのノードについて調べてください。このメッセージ・フローで使用される ESQL については、
XML_PassengerQuery メッセージ・フローの作成を参照してください。
XML_PassengerQuery メッセージ・フローは以下のアクションを実行します。
- XML_PASSENGERQUERY_IN ノードは、入力メッセージを XML_PASSENGERQUERY_IN キューから取得し、その入力メッセージが XML ドメインにあることを確認します。
したがってメッセージ・フローでは、XML パーサーを使用してメッセージを解析する必要があります。
- XML_PASSENGERQUERY_IN ノードは、メッセージを DecideOnQuery ノードに渡します。
あるいは、
- 入力メッセージの識別に問題がある場合、このノードは、Failure ターミナルを介してメッセージを XML_PASSENGERQUERY_FAIL ノードに渡し、このノードはメッセージを XML_PASSENGERQUERY_FAIL キューに書き込みます。
- 例外がダウンストリームに発行され、メッセージがロールバックされたなら、Catch ターミナルを通じて、XML_PASSENGERQUERY_IN ノードから XML_PASSENGERQUERY_FAIL ノードにメッセージが渡され、このノードはメッセージを XML_PASSENGERQUERY_FAIL キューに書き込みます。
- DecideOnQuery ノードは、メッセージをメッセージ・フローに流す際のパスを決定します。
メッセージが通るパスは、そのメッセージに含まれている情報のタイプに従って決定されます。
このノードは、宛先情報に基づいて LocalEnvironment を次のように更新します。
- メッセージに予約番号しか含まれていない場合、ノードは Single Passenger を LocalEnvironment に入れる。これにより RouteToLabel ノードは、最初の XML_PassengerQuery 入力メッセージ (passengerquery1.enqueue) を SinglePassenger ノードに渡します。
- メッセージに乗客の完全な氏名が含まれている場合、ノードは All Reservations を LocalEnvironment に入れる。これにより RouteToLabel ノードは、第 2 の XML_PassengerQuery 入力メッセージ (passengerquery2.enqueue) を AllReservations ノードに渡します。
- DecideOnQuery ノードは、Out ターミナルを通じて、メッセージと LocalEnvironment を RouteToLabel ノードに渡す。
- RouteToLabel ノードは、入力メッセージを関連 Label ノードに渡します。
このノードは、DecideOnQuery が LocalEnvironment に Single Passenger を登録した場合は
SinglePassenger ノードで、DecideOnQuery ノードが LocalEnvironment に All Reservations を
登録した場合は AllReservations ノードです。
- RouteToLabel ノードが入力メッセージを SinglePassenger ノードに渡した場合、SinglePassenger ノードは予約番号を含むその入力メッセージを、Out ターミナルを通じて GetPassengerInformation ノードに渡します。
GetPassengerInformation ノードは、RESERVDB データベースの XMLPASSENGERTB 表で予約番号を検索し、XMLPASSENGERTB 表で見つかった、予約番号、乗客の氏名、フライト番号、 フライトの日付、および座席クラスといった情報から、出力メッセージを作成します。
次いで GetPassengerInformation ノードは、Out ターミナルを介して出力メッセージを XML_PASSENGERQUERY_OUT ノードに渡します。
- RouteToLabel ノードが入力メッセージを AllReservations ノードに渡した場合、AllReservations ノードは乗客の名前を含むその入力メッセージを、Out ターミナルを通じて GetReservationsInformation に渡します。
GetReservationsInformation ノードは、RESERVDB データベースの XMLPASSENGERTB 表で乗客名を検索し、XMLPASSENGERTB 表で見つかった、乗客が行った各予約について、乗客の氏名、フライト番号、 フライトの日付、および座席クラスといった情報を含む出力メッセージを作成します。
次いで GetReservationsInformation ノードは、Out ターミナルを介して出力メッセージを XML_PASSENGERQUERY_OUT ノードに渡します。
- XML_PASSENGERQUERY_OUT ノードは出力メッセージを XML_PASSENGERQUERY_OUT キューに入れます。
『Airline Reservations サンプルについて』に戻る