XML_CancelReservation メッセージ・フローについて
XML_CancelReservation メッセージ・フローは、入力メッセージ内にリストされている予約を取り消し、ユーザー・データベースを更新して、予約が減って、空席が増えたことを示します。
XML_CancelReservation メッセージ・フローは、Reservation Numbers のリストを処理することができます。したがって、1 つずつ予約を取り消す必要はありません。
下の図は、XML_CancelReservation メッセージ・フローを示しています。

下の表では、XML_CancelReservation メッセージ・フローで使用されるノードのタイプをリストしています。
ノード・タイプ |
ノード名 |
MQInput |
XML_CANCELRESERVATION_IN |
Compute |
DeleteReservation; IncrementSeat |
Trace |
Trace; Trace1; Trace2 |
MQOutput |
XML_CANCELRESERVATION_FAIL1_1; XML_CANCELRESERVATION_FAIL1_2; XML_CANCELRESERVATION_FAIL2; XML_CANCELRESERVATION_OUT |
詳しくは、WebSphere Message Broker 資料で XML_CancelReservation メッセージ・フローのノードについて調べてください。
このメッセージ・フローで使用される ESQL については、XML_CancelReservation メッセージ・フローの作成を参照してください。
XML_CancelReservation メッセージ・フローは以下のアクションを実行します。
- XML_CANCELRESERVATION_IN ノードは、入力メッセージを XML_CANCELRESERVATION_IN キューから取得し、その入力メッセージが XML ドメインにあることを確認します。
したがってメッセージ・フローでは、XML パーサーを使用してメッセージを解析する必要があります。
- XML_CANCELRESERVATION_IN ノードは、Out ターミナルを通じて、メッセージを DeleteReservation ノードに渡します。
あるいは、例外がダウンストリームに発行され、メッセージがここにロールバックされたなら、Catch ターミナルを通じて、XML_CANCELRESERVATION_IN ノードから XML_CANCLERESERVATION_FAIL1_1 ノードにメッセージが渡され、これはメッセージを XML_CANCELRESERVATION_FAIL1 キューに書き込みます。
- DeleteReservation ノードは RESERVDB データベースの XMLPASSENGERTB 表を調べ、入力メッセージにリストされている予約が実際に存在するかどうかを確認します。
- 予約が存在する場合、DeleteReservation ノードは XMLPASSENGERTB 表から、入力メッセージにリストされた乗客を除去します。DeleteReservation ノードは、Out ターミナルを通じて、メッセージを Trace1 ノードに渡します。
Trace1 ノードは、DeleteReservation ノードから出たメッセージの状態をログに記録します。
トレースはローカル・エラー・ログに保管されます。これは Windows 上ではイベント・ビューアーで、Linux 上では syslog です。
Trace1 ノードは、メッセージを IncrementSeat ノードに渡します。
- 予約が存在しない場合、DeleteReservation ノードは Failure ターミナルから Trace にメッセージを渡します。
Trace ノードは、メッセージが Trace ノードに渡される原因となった問題 (無効な xml など) をトレースし、ログに記録します。
トレースはローカル・エラー・ログに保管されます。
. 次いで Trace ノードは、Out ターミナルを介してメッセージを XML_CANCELRESERVATION_FAIL1_2 に渡し、このノードはメッセージを XML_CANCELRESERVATION_FAIL1 キューに書き込みます。
- IncrementSeat ノードは RESERVDB データベースの XMLFLIGHTTB 表を更新し、4 つの空席 (各クラス 2 つ) が追加されたことを示します。
次いで IncrementSeat ノードは、Out ターミナルを介して出力メッセージを XML_CANCELRESERVATION_OUT ノードに渡し、このノードはそのメッセージを XML_CANCELRESERVATION_OUT キューに書き込みます。
あるいは、XMLFLIGHTTB 表の更新に問題があった場合、メッセージは Trace2 ノードに渡されます。
Trace2 ノードは、メッセージが IncrementSeat ノードと XML_CANCELRESERVATION_FAIL2 ノードとの間で受け渡されるときに、メッセージをトレースします。
トレースはローカル・エラー・ログに保管されます。
. XML_CANCELRESERVATION_FAIL2 ノードはメッセージを XML_CANCELRESERVATION_FAIL2 キューに入れます。
XML_CancelReservation メッセージ・フローは、真の非同期メッセージング (確実な送達設計) を例示しています。
メッセージ・フロー内に MQOutput ノードがありますが、それらのノードは、テストを目的としたものであり、サンプル・アプリケーション内での意味はありません。
XML_CancelReservation メッセージ・フローは、単に、メッセージの処理を終了したときに XML_CANCELRESERVATION_OUT キュー上に入力メッセージのコピーを書き込みます。
メッセージが永続メッセージである場合、安全にログ記録されているので、メッセージがその宛先に到着したことをメッセージ・フローが確認する必要はありません。
『Airline Reservations サンプルについて』に戻る