Nachrichtenfluss 'XML_FlightQueryReply' erstellen

Befolgen Sie die nachfolgenden Anweisungen, um den Nachrichtenfluss 'XML_FlightQueryReply' zu erstellen. Ausführlichere Anweisungen erhalten Sie jeweils über die Links am Ende eines jeden Schritts.

Vor Erstellung des Nachrichtenflusses 'XML_FlightQueryReply' muss zunächst der Nachrichtenfluss 'XML_FlightQueryOut' erstellt werden. Anweisungen hierzu finden Sie unter Nachrichtenfluss 'XML_FlightQueryOut' erstellen.

So erstellen und konfigurieren Sie den Nachrichtenfluss 'XML_FlightQueryReply':

  1. Erstellen Sie einen Nachrichtenfluss namens 'XML_FlightQueryReply'.
    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_FLIGHTQUERY_FLIGHT
    MQEmpfang XML_FLIGHTQUERY_PASSENGERS
    MQSenden XML_FLIGHTQUERY_FAIL_1
    MQSenden XML_FLIGHTQUERY_FAIL_2
    MQAntwortknoten MQMD_ReplyToQ
    Rechnen GetFlightDetails
    Rechnen GetPassengerDetails
  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_FlightQueryReply', ob Sie die Knoten richtig miteinander verbunden haben.
    Knotenname Terminal Verbinden mit
    XML_FLIGHTQUERY_FLIGHT Out GetFlightDetails
    Catch XML_FLIGHTQUERY_FAIL_1
    XML_FLIGHTQUERY_PASSENGERS Out GetPassengerDetails
    Catch XML_FLIGHTQUERY_FAIL_2
    GetFlightDetails Out MQMD_ReplyToQ
    GetPassengerDetails Out MQMD_ReplyToQ
  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_FLIGHTQUERY_FLIGHT Grundeinstellung Name der Warteschlange XML_FLIGHTQUERY_FLIGHT
    (Die lokale Warteschlange, aus der der Nachrichtenfluss die Nachricht abruft.)
    Default Nachrichtendomäne XML
    (Weist den Broker an, den generischen XML-Parser zu verwenden.)
    XML_FLIGHTQUERY_PASSENGERS Grundeinstellung Name der Warteschlange XML_FLIGHTQUERY_PASSENGERS
    (Die lokale Warteschlange, aus der der Nachrichtenfluss die Nachricht abruft.)
    Default Nachrichtendomäne XML
    (Weist den Broker an, den generischen XML-Parser zu verwenden.)
    Get Flight Details (Flugdaten abrufen) Grundeinstellung Datenquelle RESERVDB
    (Die von diesem Knoten verwendete Datenbank.)
    Grundeinstellung ESQL-Modul GetFlightDetails
    (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.)
    Get Passenger Details (Passagierdaten abrufen) Grundeinstellung Datenquelle RESERVDB
    (Die von diesem Knoten verwendete Datenbank.)
    Grundeinstellung ESQL-Modul GetPassengerDetails
    (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.)
    XML_FLIGHTQUERY_FAIL_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_FLIGHTQUERY_FAIL
    (In diese Warteschlange reiht der Nachrichtenfluss die Nachricht ein, wenn die Verarbeitung fehlschlägt.)
    XML_FLIGHTQUERY_FAIL_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_FLIGHTQUERY_FAIL
    (In diese Warteschlange reiht der Nachrichtenfluss die Nachricht ein, wenn die Verarbeitung fehlschlägt.)
    MQMD_ReplyToQ Für diesen Knoten müssen keine Eigenschaften festgelegt werden.
    Der Knoten verwendet die Felder 'ReplyToQ`' und 'ReplyToQMgr' im MQMD-Header der Nachricht.
  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_FlightQueryReply message flow
    -- ************************************************
    
    CREATE COMPUTE MODULE GetFlightDetails
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XML.FlightQuery = NULL;
    		CREATE FIELD OutputRoot.XML.Flight;
    		DECLARE outflight REFERENCE TO OutputRoot.XML.Flight;
    		DECLARE query REFERENCE TO InputRoot.XML.FlightQuery;		
    		-- populate the output message with flight info from the database
    		SET OutputRoot.XML.Flight[] =
    			(SELECT T.* FROM Database.XMLFLIGHTTB AS T
    				WHERE T.FLIGHTNO = query.FlightNumber
    				AND T.FLIGHTDATE = query.FlightDate);
    		SET outflight.STARTPOINT = TRIM(outflight.STARTPOINT);
    		SET outflight.ENDPOINT = TRIM(outflight.ENDPOINT);
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE GetPassengerDetails
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XML.FlightQuery = NULL;		
    		CREATE FIELD OutputRoot.XML.ListOfPassengers;
    		DECLARE outpass REFERENCE TO OutputRoot.XML.ListOfPassengers;
    		DECLARE query REFERENCE TO InputRoot.XML.FlightQuery;
    		-- populate the output message with passenger info from the database
    		SET outpass.PassengerDetails[] =
    			(SELECT T.* FROM Database.XMLPASSENGERTB AS T
    				WHERE T.FLIGHTNO = query.FlightNumber
    				AND T.FLIGHTDATE = query.FlightDate);
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER CARDINALITY(outpass.*[]);
    		WHILE I <= J DO
    			SET outpass.PassengerDetails[I].LASTNAME = TRIM(outpass.PassengerDetails[I].LASTNAME);
    			SET outpass.PassengerDetails[I].FIRSTNAME = TRIM(outpass.PassengerDetails[I].FIRSTNAME);
    			SET I = I + 1;
    		END WHILE;
    		RETURN TRUE;
    	END;
    END MODULE;

Nun haben Sie den Nachrichtenfluss 'XML_FlightQueryReply' erstellt, der innerhalb des Aggregationsbeispiels die Antwortrolle im Nachrichtenfluss 'XML_FlightQuery' übernimmt. Der Nachrichtenfluss 'XML_FlightQueryReply' fordert in Verbindung mit den Nachrichtenflüssen 'XML_FlightQueryOut' und 'XML_FlightQueryIn' Informationen zu einem bestimmten Flug und zu den Passagieren, die auf diesem Flug Sitzplätze reserviert haben, an.

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