XML_CancelReservation メッセージ・フローを作成するには、次のようにします。 詳細な指示については、各ステップの終わりにあるリンクをクリックしてください。
XML_CancelReservation メッセージ・フローを作成および構成するには、次のようにします。
パレット・ドロワー | ノードのタイプ | ノード名 |
---|---|---|
WebSphere MQ | MQInput | XML_CANCELRESERVATION_IN |
WebSphere MQ | MQOutput | XML_CANCELRESERVATION_OUT |
WebSphere MQ | MQOutput | XML_CANCELRESERVATION_FAIL1_1 |
WebSphere MQ | MQOutput | XML_CANCELRESERVATION_FAIL1_2 |
WebSphere MQ | MQOutput | XML_CANCELRESERVATION_FAIL2 |
Transformation | Compute | DeleteReservation |
Transformation | Compute | IncrementSeat |
Construction | Trace | Trace |
Construction | Trace | Trace1 |
Construction | 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 (この値は、メッセージ・フローがメッセージを取り出すローカル・キューです。) |
入力メッセージ構文解析 | メッセージ・ドメイン | XMLNSC : 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.XMLNSC.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;