XML_CancelReservation メッセージ・フローを作成するには、次のようにします。 詳細な指示については、各ステップの終わりにあるリンクをクリックしてください。
XML_CancelReservation メッセージ・フローを作成および構成するには、次のようにします。
ノードのタイプ | ノード名 |
---|---|
MQInput | XML_CANCELRESERVATION_IN |
MQOutput | XML_CANCELRESERVATION_OUT |
MQOutput | XML_CANCELRESERVATION_FAIL1_1 |
MQOutput | XML_CANCELRESERVATION_FAIL1_2 |
MQOutput | XML_CANCELRESERVATION_FAIL2 |
Compute | DeleteReservation |
Compute | IncrementSeat |
Trace | Trace |
Trace | Trace1 |
Trace | Trace2 |
ノード名 | ターミナル | 接続先 |
---|---|---|
XML_CANCELRESERVATION_IN | Out | DeleteReservation |
Catch | XML_CANCELRESERVATION_FAIL1_1 | |
DeleteReservation | Failure | Trace |
Out | Trace1 | |
Trace | Out | XML_CANCELRESERVATION_FAIL1_2 |
Trace1 | Out | IncrementSeat |
IncrementSeat | Failure | Trace2 |
Out | XML_CANCELRESERVATION_OUT | |
Trace2 | Out | XML_CANCELRESERVATION_FAIL2 |
ノード名 | ページ | プロパティー | 値 |
---|---|---|---|
XML_CANCELRESERVATION_IN | 基本 | キュー名 | XML_CANCELRESERVATION_IN (これは、メッセージ・フローがメッセージを取り出すローカル・キューです。) |
デフォルト | メッセージ・ドメイン | XML (これは、汎用 XML パーサーを使用するようにブローカーに指示します。) |
|
DeleteReservation | 基本 | データ・ソース | RESERVDB (これは、このノードで使用されるデータベースです。) |
基本 | ESQL モジュール | DeleteReservation (これは、処理中にこのノードによって使用される ESQL モジュールの名前です。 この名前は、ESQL ファイル中の CREATE COMPUTE MODULE ステートメント中の名前と一致していなければなりません。) |
|
基本 | データベース・エラー時に例外を送出 (Throw exception on database error) | チェック・ボックスをクリアして、メッセージ・フローがデータベース・エラーを扱う方法を ESQL で指定できるようにします。 チェック・ボックスが選択されている場合は、デフォルトにより、データベース・エラーがある場合にメッセージ・フローが例外をスローして、メッセージを FAIL キューに受け渡します。 | |
Trace | 基本 | 宛先 (Destination) | ローカル・エラー・ログ (これは、トレース情報をローカル・エラー・ログに書き込むように、ノードに指示します。 Windows 上では、ローカル・エラー・ログはイベント・ビューアーです。Linux 上では、ローカル・エラー・ログは syslog です。) |
基本 | パターン (Pattern) | ==== Error from Delete Reservation node ================== ${ExceptionList} (これはメッセージの ExceptionList ツリー部分をログ記録します。) |
|
基本 | メッセージ番号 | 3051 | |
XML_CANCELRESERVATION_FAIL1_1 | 基本 | キュー名 (キューはブローカーと同じキュー・マネージャーで定義されるので、キュー・マネージャーの名前を指定する必要はありません。) |
XML_CANCELRESERVATION_FAIL1 (これは、処理が失敗した場合にメッセージ・フローがメッセージを書き込むローカル・キューです。) |
XML_CANCELRESERVATION_FAIL1_2 | 基本 | キュー名 (キューはブローカーと同じキュー・マネージャーで定義されるので、キュー・マネージャーの名前を指定する必要はありません。) |
XML_CANCELRESERVATION_FAIL1 (これは、処理が失敗した場合にメッセージ・フローがメッセージを書き込むローカル・キューです。) |
Trace1 | 基本 | 宛先 (Destination) | ローカル・エラー・ログ (これは、トレース情報をローカル・エラー・ログに書き込むように、ノードに指示します。 Windows 上では、ローカル・エラー・ログはイベント・ビューアーです。Linux 上では、ローカル・エラー・ログは syslog です。) |
基本 | パターン (Pattern) | ========== Message after Delete Reservation node =================== ${Root} ${Environment} (これはメッセージの Message および Environment ツリー部分をログ記録します。) |
|
基本 | メッセージ番号 | 3051 | |
IncrementSeat | 基本 | データ・ソース | RESERVDB (これは、このノードで使用されるデータベースです。) |
基本 | ESQL モジュール | IncrementSeat (これは、処理中にこのノードによって使用される ESQL モジュールの名前です。 この名前は、XML_CancelReservation.esql ファイル中の CREATE COMPUTE MODULE ステートメント中の名前と一致していなければなりません。) |
|
Trace2 | 基本 | 宛先 (Destination) | ローカル・エラー・ログ (これは、トレース情報をローカル・エラー・ログに書き込むように、ノードに指示します。 Windows 上では、ローカル・エラー・ログはイベント・ビューアーです。Linux 上では、ローカル・エラー・ログは syslog です。) |
基本 | パターン (Pattern) | ======== Error from Increment Seat node =================== ${ExceptionList} (これはメッセージの ExceptionList ツリー部分をログ記録します。) |
|
基本 | メッセージ番号 | 3051 | |
XML_CANCELRESERVATION_FAIL2 | 基本 | キュー名 (キューはブローカーと同じキュー・マネージャーで定義されるので、キュー・マネージャーの名前を指定する必要はありません。) |
XML_CANCELRESERVATION_FAIL2 (これは、処理が失敗した場合にメッセージ・フローがメッセージを書き込むローカル・キューです。) |
XML_CANCELRESERVATION_OUT | 基本 | キュー名 (キューはブローカーと同じキュー・マネージャーで定義されるので、キュー・マネージャーの名前を指定する必要はありません。) |
XML_CANCELRESERVATION_OUT (これは、メッセージ・フローがメッセージを書き込むローカル・キューです。) |
-- ************************************************ -- * ESQL for the XML_CancelReservation message flow -- ************************************************ CREATE COMPUTE MODULE DeleteReservation CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN DECLARE SQLState1 CHARACTER; DECLARE SQLErrorText1 CHARACTER; DECLARE SQLCode1 INTEGER; DECLARE SQLNativeError1 INTEGER; SET OutputRoot = InputRoot; DECLARE cancel REFERENCE TO InputRoot.XML.CancelReservation.ListOfReservations; DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(cancel.ReservationNumber[]); WHILE I <= J DO -- loop through the reservations to be cancelled -- check that the requested reservation exists SET Environment.ListOfReservations.Info[I] = THE(SELECT T.CLASSTYPE, T.FLIGHTNO, T.FLIGHTDATE FROM Database.XMLPASSENGERTB AS T WHERE T.RESERVATIONNO = cancel.ReservationNumber[I]); IF (SELECT COUNT(*) FROM Environment.ListOfReservations.Info[I].*[] AS I1) IS NULL THEN THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1234 VALUES('No record to delete'); END IF; -- delete the record from the database DELETE FROM Database.XMLPASSENGERTB AS T WHERE T.RESERVATIONNO = cancel.ReservationNumber[I]; SET I = I + 1; SET SQLCode1 = SQLCODE; IF SQLCode1 <> 0 THEN SET SQLState1 = SQLSTATE; SET SQLErrorText1 = SQLERRORTEXT; SET SQLNativeError1 = SQLNATIVEERROR; THROW USER EXCEPTION MESSAGE 2950 VALUES('The SQL State' , SQLState1 , SQLCode1 , SQLNativeError1 , SQLErrorText1); END IF; END WHILE; RETURN TRUE; END; END MODULE; CREATE COMPUTE MODULE IncrementSeat CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN DECLARE SQLState1 CHARACTER; DECLARE SQLErrorText1 CHARACTER; DECLARE SQLCode1 INTEGER; DECLARE SQLNativeError1 INTEGER; SET OutputRoot = InputRoot; DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(Environment.ListOfReservations.*[]); -- loop through the cancellations, updating the seat availability WHILE I <= J DO IF Environment.ListOfReservations.Info[I].CLASSTYPE = 'Y' THEN UPDATE Database.XMLFLIGHTTB AS T SET ECONOMICCLASS = T.ECONOMICCLASS-1, TOTALECONOMIC = T.TOTALECONOMIC+1 WHERE T.FLIGHTNO = Environment.ListOfReservations.Info[I].FLIGHTNO AND T.FLIGHTDATE = Environment.ListOfReservations.Info[I].FLIGHTDATE; END IF; IF Environment.ListOfReservations.Info[I].CLASSTYPE = 'F' THEN UPDATE Database.XMLFLIGHTTB AS T SET FIRSTCLASS = T.FIRSTCLASS-1, TOTALFIRST= T.TOTALFIRST+1 WHERE T.FLIGHTNO = Environment.ListOfReservations.Info[I].FLIGHTNO AND T.FLIGHTDATE = Environment.ListOfReservations.Info[I].FLIGHTDATE; END IF; SET I = I + 1; SET SQLCode1 = SQLCODE; IF SQLCode1 <> 0 THEN SET SQLState1 = SQLSTATE; SET SQLErrorText1 = SQLERRORTEXT; SET SQLNativeError1 = SQLNATIVEERROR; THROW USER EXCEPTION MESSAGE 2950 VALUES('The SQL State' , SQLState1 , SQLCode1 , SQLNativeError1 , SQLErrorText1); END IF; END WHILE; RETURN TRUE; END; END MODULE;
これで、XML_CancelReservation メッセージ・フローの作成が終わりました。 このメッセージ・フローは、以前に XML_Reservation メッセージ・フローが以前に行った予約を取り消します。