Nachrichtenfluss 'XML_CancelReservation' erstellen

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':

  1. Erstellen Sie einen Nachrichtenfluss namens 'XML_CancelReservation'.
    Anweisungen hierzu finden Sie unter Nachrichtenfluss erstellen.
  2. Fügen Sie im Nachrichtenflusseditor die in der folgenden Tabelle aufgelisteten Knoten hinzu, und benennen Sie diese um.
    Eine Anleitung hierfür finden Sie im Abschnitt Knoten hinzufügen.
    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
  3. Verbinden Sie die Knoten anhand der nachfolgenden Tabelle miteinander.
    Eine Anleitung hierfür finden Sie im Abschnitt Knoten verbinden.
    Überprüfen Sie anhand der Abbildung unter Informationen zum Nachrichtenfluss 'XML_CancelReservation', ob Sie die Knoten richtig miteinander verbunden haben.
    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
  4. Konfigurieren Sie die Knoteneigenschaften anhand der nachfolgenden Tabelle. Übernehmen Sie die Standardwerte für die Eigenschaften, sofern die Tabelle keinen davon abweichenden Wert enthält.
    Eine Anleitung hierfür finden Sie im Abschnitt Knoten konfigurieren.
    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.)
  5. Klicken Sie im Projekt 'XML-Nachrichtenflüsse für Airline' doppelt auf das ESQL-Dateiprojekt, um es im ESQL-Editor zu öffnen, und kopieren Sie folgende ESQL-Code-Module in die ESQL-Datei. Weitere Informationen hierzu finden Sie im Abschnitt ESQL entwickeln.
    -- ************************************************
    -- * 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.

Symbol Hauptseite   Zurück zu "Das Beispielprogramm 'Airline Reservations' erstellen"