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':
Palettenfächer | Knotentyp | Knotenname |
---|---|---|
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 | Rechnen | DeleteReservation |
Transformation | Rechnen | IncrementSeat |
Aufbau | Traceknoten | Traceknoten |
Aufbau | Traceknoten | Trace1 |
Aufbau | Traceknoten | Trace2 |
Knotenname | Terminal | Verbinden mit |
---|---|---|
XML_CANCELRESERVATION_IN | Ausgangsterminal | DeleteReservation |
Abfangterminal | XML_CANCELRESERVATION_FAIL1_1 | |
DeleteReservation | Fehlerterminal | Traceknoten |
Ausgangsterminal | Trace1 | |
Traceknoten | Ausgangsterminal | XML_CANCELRESERVATION_FAIL1_2 |
Trace1 | Ausgangsterminal | IncrementSeat |
IncrementSeat | Fehlerterminal | Trace2 |
Ausgangsterminal | XML_CANCELRESERVATION_OUT | |
Trace2 | Ausgangsterminal | XML_CANCELRESERVATION_FAIL2 |
Knotenname | Seite | Eigenschaft | Wert |
---|---|---|---|
XML_CANCELRESERVATION_IN | Grundeinstellung | Name der Warteschlange | XML_CANCELRESERVATION_IN (Dieser Wert bezeichnet die lokale Warteschlange, aus der der Nachrichtenfluss die Nachricht abruft.) |
Syntaxanalyse der Eingabenachricht | Nachrichtendomäne | XMLNSC: Für XML-Nachrichten (Berücksichtigung von Namensbereichen, Überprüfung, geringe Speicherbelegung) (Mit diesem Wert wird der Broker angewiesen, den optimierten generischen XML-Parser zu verwenden.) |
|
DeleteReservation | Grundeinstellung | Datenquelle | RESERVDB (Dieser Wert gibt die von diesem Knoten verwendete Datenbank an.) |
Grundeinstellung | ESQL-Modul | DeleteReservation (Dieser Wert gibt den Namen des vom Knoten während der Verarbeitung verwendeten ESQL-Moduls an. Der Name muss dem Namen in der Anweisung CREATE COMPUTE MODULE in der ESQL-Datei entsprechen.) |
|
Grundeinstellung | Ausnahmebedingung für Datenbankfehler ausgeben | Inaktivieren Sie das Kontrollkästchen, damit Sie in ESQL angeben können, wie der Nachrichtenfluss mit Datenbankfehlern umgehen soll. Ist das Kontrollkästchen aktiviert, erzeugt der Nachrichtenfluss bei einem Datenbankfehler standardmäßig eine Ausnahmebedingung und reiht die Nachricht in die FAIL-Warteschlange ein. | |
Traceknoten | Grundeinstellung | Destination (Zieladresse) | lokales Fehlerprotokoll (Mit diesem Wert wird der Knoten angewiesen, die Trace-Informationen im lokalen Fehlerprotokoll zu speichern. Unter Windows ist 'Event Viewer' das lokale Fehlerprotokoll; unter Linux 'syslog'.) |
Grundeinstellung | Muster (Pattern) | ==== Fehler von Knoten 'DeleteReservation' ================== ${ExceptionList} (Mit diesem Wert wird der Teil der Nachricht mit der ExceptionList-Baumstruktur protokolliert.) |
|
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 (Dieser Wert gibt die lokale Warteschlange an, in die der Nachrichtenfluss die Nachricht einreiht, 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 (Dieser Wert gibt die lokale Warteschlange an, in die der Nachrichtenfluss die Nachricht einreiht, wenn die Verarbeitung fehlschlägt.) |
Trace1 | Grundeinstellung | Destination (Zieladresse) | lokales Fehlerprotokoll (Mit diesem Wert wird der Knoten angewiesen, die Trace-Informationen im lokalen Fehlerprotokoll zu speichern. Unter Windows ist 'Event Viewer' das lokale Fehlerprotokoll; unter Linux 'syslog'.) |
Grundeinstellung | Muster (Pattern) | ========== Nachricht nach Knoten 'DeleteReservation' =================== ${Root} ${Environment} (Mit diesem Wert wird der Teil der Nachricht mit der Nachrichten- und Umgebungsbaumstruktur protokolliert.) |
|
Grundeinstellung | Nachrichtennummer | 3051 | |
IncrementSeat | Grundeinstellung | Datenquelle | RESERVDB (Dieser Wert gibt die von diesem Knoten verwendete Datenbank an.) |
Grundeinstellung | ESQL-Modul | IncrementSeat (Dieser Wert gibt den Namen des vom Knoten während der Verarbeitung verwendeten ESQL-Moduls an. Dieser Name muss mit dem Namen in der Anweisung CREATE COMPUTE MODULE in der Datei XML_CancelReservation.esql übereinstimmen.) |
|
Trace2 | Grundeinstellung | Destination (Zieladresse) | lokales Fehlerprotokoll (Mit diesem Wert wird der Knoten angewiesen, die Trace-Informationen im lokalen Fehlerprotokoll zu speichern. Unter Windows ist 'Event Viewer' das lokale Fehlerprotokoll; unter Linux 'syslog'.) |
Grundeinstellung | Muster (Pattern) | ========== Fehler von Knoten 'IncrementSeat' =================== ${ExceptionList} Mit diesem Wert wird der Teil der Nachricht mit der ExceptionList-Baumstruktur protokolliert.) |
|
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 (Dieser Wert gibt die lokale Warteschlange an, in die der Nachrichtenfluss die Nachricht einreiht, 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 (Dieser Wert gibt die lokale Warteschlange an, 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.XMLNSC.CancelReservation.ListOfReservations; DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(cancel.ReservationNumber[]); WHILE I <= J DO -- in einer Schleife die Reservierungen durchlaufen, die storniert werden sollen -- Überprüfen, ob die angeforderte Reservierung vorhanden ist 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; -- Datensatz aus Datenbank löschen 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;
Zurück zur Erstellung des Mustercodes 'Airline Reservations'