Befolgen Sie die nachfolgenden Anweisungen, um den Nachrichtenfluss 'XML_CancelReservation' zu erstellen. Ausführlichere Anweisungen erhalten Sie jeweils über die Links am Ende eines jeden Schritts.
So erstellen und konfigurieren Sie den Nachrichtenfluss 'XML_CancelReservation':
Knotentyp | Knotenname |
---|---|
MQEmpfang | XML_CANCELRESERVATION_IN |
MQSenden | XML_CANCELRESERVATION_OUT |
MQSenden | XML_CANCELRESERVATION_FAIL1_1 |
MQSenden | XML_CANCELRESERVATION_FAIL1_2 |
MQSenden | XML_CANCELRESERVATION_FAIL2 |
Rechnen | DeleteReservation |
Rechnen | IncrementSeat |
Traceknoten | Traceknoten |
Traceknoten | Trace1 |
Traceknoten | Trace2 |
Knotenname | Terminal | Verbinden mit |
---|---|---|
XML_CANCELRESERVATION_IN | Out | DeleteReservation |
Catch | XML_CANCELRESERVATION_FAIL1_1 | |
DeleteReservation | Fehlerterminal | Traceknoten |
Out | Trace1 | |
Traceknoten | Out | XML_CANCELRESERVATION_FAIL1_2 |
Trace1 | Out | IncrementSeat |
IncrementSeat | Fehlerterminal | Trace2 |
Out | XML_CANCELRESERVATION_OUT | |
Trace2 | Out | XML_CANCELRESERVATION_FAIL2 |
Knotenname | Seite | Eigenschaft | Wert |
---|---|---|---|
XML_CANCELRESERVATION_IN | Grundeinstellung | Name der Warteschlange | XML_CANCELRESERVATION_IN (Die lokale Warteschlange, aus der der Nachrichtenfluss die Nachricht abruft.) |
Default | Nachrichtendomäne | XML (Weist den Broker an, den generischen XML-Parser zu verwenden.) |
|
DeleteReservation | Grundeinstellung | Datenquelle | RESERVDB (Die von diesem Knoten verwendete Datenbank.) |
Grundeinstellung | ESQL-Modul | DeleteReservation (Der Name des vom Knoten während der Verarbeitung verwendeten ESQL-Moduls. Der Name muss dem Namen in der Anweisung CREATE COMPUTE MODULE in der ESQL-Datei entsprechen.) |
|
Grundeinstellung | Ausnahmebedingung für Datenbankfehler ausgeben | Deaktivieren Sie das Kontrollkästchen, damit Sie in ESQL angeben können, wie der Nachrichtenfluss mit Datenbankfehlern umgehen soll. Ist das Kontrollkästchen aktiviert, gibt der Nachrichtenfluss bei einem Datenbankfehler standardmäßig eine Ausnahmebedingung aus und reiht die Nachricht in die FAIL-Warteschlange ein. | |
Traceknoten | Grundeinstellung | Zieladresse | lokales Fehlerprotokoll (Weist den Knoten an, die Trace-Informationen im lokalen Fehlerprotokoll zu speichern. Unter Windows ist 'Event Viewer' das lokale Fehlerprotokoll; unter Linux 'syslog'.) |
Grundeinstellung | Muster | ==== Fehler vom Knoten 'Delete Reservation' ================== ${ExceptionList} (Protokolliert die ExceptionList-Baumstruktur der Nachricht.) |
|
Grundeinstellung | Nachrichtennummer | 3051 | |
XML_CANCELRESERVATION_FAIL1_1 | Grundeinstellung | Name der Warteschlange (Die Angabe des WS-Managernamens ist nicht erforderlich, da die Warteschlange in demselben WS-Manager wie der Broker definiert ist.) |
XML_CANCELRESERVATION_FAIL1 (In diese lokale Warteschlange reiht der Nachrichtenfluss die Nachricht ein, wenn die Verarbeitung fehlschlägt.) |
XML_CANCELRESERVATION_FAIL1_2 | Grundeinstellung | Name der Warteschlange (Die Angabe des WS-Managernamens ist nicht erforderlich, da die Warteschlange in demselben WS-Manager wie der Broker definiert ist.) |
XML_CANCELRESERVATION_FAIL1 (In diese lokale Warteschlange reiht der Nachrichtenfluss die Nachricht ein, wenn die Verarbeitung fehlschlägt.) |
Trace1 | Grundeinstellung | Zieladresse | lokales Fehlerprotokoll (Weist den Knoten an, die Trace-Informationen im lokalen Fehlerprotokoll zu speichern. Unter Windows ist 'Event Viewer' das lokale Fehlerprotokoll; unter Linux 'syslog'.) |
Grundeinstellung | Muster | ========== Nachricht nach Knoten 'Delete Reservation' =================== ${Root} ${Environment} (Protokolliert die Message- und Environment-Baumstrukturen der Nachricht.) |
|
Grundeinstellung | Nachrichtennummer | 3051 | |
IncrementSeat | Grundeinstellung | Datenquelle | RESERVDB (Die von diesem Knoten verwendete Datenbank.) |
Grundeinstellung | ESQL-Modul | IncrementSeat (Der Name des vom Knoten während der Verarbeitung verwendeten ESQL-Moduls. Dieser Name muss mit dem Namen in der Anweisung CREATE COMPUTE MODULE in der Datei 'XML_CancelReservation.esql' übereinstimmen.) |
|
Trace2 | Grundeinstellung | Zieladresse | lokales Fehlerprotokoll (Weist den Knoten an, die Trace-Informationen im lokalen Fehlerprotokoll zu speichern. Unter Windows ist 'Event Viewer' das lokale Fehlerprotokoll; unter Linux 'syslog'.) |
Grundeinstellung | Muster | ========== Fehler vom Knoten 'Increment Seat' =================== ${ExceptionList} (Protokolliert die ExceptionList-Baumstruktur der Nachricht.) |
|
Grundeinstellung | Nachrichtennummer | 3051 | |
XML_CANCELRESERVATION_FAIL2 | Grundeinstellung | Name der Warteschlange (Die Angabe des WS-Managernamens ist nicht erforderlich, da die Warteschlange in demselben WS-Manager wie der Broker definiert ist.) |
XML_CANCELRESERVATION_FAIL2 (In diese lokale Warteschlange reiht der Nachrichtenfluss die Nachricht ein, wenn die Verarbeitung fehlschlägt.) |
XML_CANCELRESERVATION_OUT | Grundeinstellung | Name der Warteschlange (Die Angabe des WS-Managernamens ist nicht erforderlich, da die Warteschlange in demselben WS-Manager wie der Broker definiert ist.) |
XML_CANCELRESERVATION_OUT (Die lokale Warteschlange, in die der Nachrichtenfluss die Nachricht einreiht.) |
-- ************************************************ -- * 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;
Nun haben Sie den Nachrichtenfluss 'XML_CancelReservation' erstellt, mit dem Reservierungen storniert werden, die der Nachrichtenfluss 'XML_Reservation' zuvor getätigt hat.