Nachrichtenfluss 'XML_PassengerQuery' erstellen

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

So erstellen und konfigurieren Sie den Nachrichtenfluss 'XML_PassengerQuery':

  1. Erstellen Sie einen Nachrichtenfluss namens 'XML_PassengerQuery'.
    Anweisungen hierzu finden Sie in der Dokumentation zu WebSphere Message Broker im Abschnitt Nachrichtenfluss erstellen.
  2. Fügen Sie im Nachrichtenflusseditor die in der folgenden Tabelle aufgelisteten Knoten hinzu und benennen Sie diese um.
    Die entsprechenden Anweisungen finden Sie in der WebSphere Message Broker-Dokumentation unter Nachrichtenflussknoten hinzufügen.
    Palettenfächer Knotentyp Knotenname
    WebSphere MQ MQInput XML_PASSENGERQUERY_IN
    WebSphere MQ MQOutput XML_PASSENGERQUERY_OUT
    WebSphere MQ MQOutput XML_PASSENGERQUERY_FAIL_1
    WebSphere MQ MQOutput XML_PASSENGERQUERY_FAIL_2
    Transformation Rechnen DecideOnQuery
    Transformation Rechnen GetPassengerInformation
    Transformation Rechnen GetReservationsInformation
    Routing Label SinglePassenger
    Routing Label AllReservations
    Routing RouteToLabel RouteToLabel

    Der RouteToLabel-Knoten leitet die Nachricht basierend auf den Inhalten der ihr zugeordneten lokalen Umgebung dynamisch weiter. In der lokalen Umgebung ist die Identität mindestens eines Label-Zielknotens enthalten. Diese Knoten werden über ihre Eigenschaft 'Label Name' (Zielbezeichnung), nicht über den Knotennamen identifiziert.

  3. Verbinden Sie die Knoten anhand der nachfolgenden Tabelle miteinander.
    Die entsprechenden Anweisungen finden Sie in der WebSphere Message Broker-Dokumentation unter Nachrichtenflussknoten verbinden.
    Überprüfen Sie anhand des Diagramms unter Informationen zum Nachrichtenfluss 'XML_PassengerQuery', ob Sie die Knoten richtig miteinander verbunden haben.
    Knotenname Terminal Verbinden mit
    XML_PASSENGERQUERY_IN Fehlerterminal XML_PASSENGERQUERY_FAIL_1
    Ausgangsterminal DecideOnQuery
    Abfangterminal XML_PASSENGERQUERY_FAIL_2
    DecideOnQuery Ausgangsterminal RouteToLabel
    SinglePassenger Ausgangsterminal GetPassengerInformation
    AllReservations Ausgangsterminal GetReservationsInformation
    GetPassengerInformation Ausgangsterminal XML_PASSENGERQUERY_OUT
    GetReservationsInformation Ausgangsterminal XML_PASSENGERQUERY_OUT
  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.
    Die entsprechenden Anweisungen finden Sie in der WebSphere Message Broker-Dokumentation unter Nachrichtenflussknoten konfigurieren.
    Knotenname Seite Eigenschaft Wert
    XML_PASSENGERQUERY_IN Grundeinstellung Name der Warteschlange XML_PASSENGERQUERY_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 generischen XML-Parser zu verwenden.)
    XML_PASSENGERQUERY_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_PASSENGERQUERY_FAIL
    (Dieser Wert gibt die lokale Warteschlange an, in die der Nachrichtenfluss die Nachricht einreiht, wenn die Verarbeitung fehlschlägt.)
    XML_PASSENGERQUERY_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_PASSENGERQUERY_FAIL
    (Dieser Wert gibt die lokale Warteschlange an, in die der Nachrichtenfluss die Nachricht einreiht, wenn die Verarbeitung fehlschlägt.)
    DecideOnQuery Grundeinstellung ESQL-Modul DecideOnQuery
    (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 Rechenmodus 'LocalEnvironment' und 'Message'
    (Dieser Wert sorgt dafür, dass 'LocalEnvironment' (Lokale Umgebung) und die Nachricht nach der Änderung an den RouteToLabel-Knoten übergeben werden.)
    RouteToLabel Grundeinstellung Modus Route to First
    (Veranlasst den RouteToLabel-Knoten dazu, die Zieladressenliste beginnend mit dem ersten Element zu verarbeiten.)
    SinglePassenger Grundeinstellung Zielbezeichnung SinglePassenger
    (Dieser Wert gibt den Namen des Label-Knotens an, an den der Nachrichtenfluss die Nachricht übergibt. Der Name muss mit der im Knoten 'Decide On The Query' festgelegten Zielbezeichnung übereinstimmen. Siehe ESQL im Modul 'Decide_on_query'.)
    AllReservations Grundeinstellung Zielbezeichnung AllReservations
    (Dieser Wert gibt den Namen des Label-Knotens an, an den der Nachrichtenfluss die Nachricht übergibt. Der Name muss mit der im Knoten 'Decide On The Query' festgelegten Zielbezeichnung übereinstimmen. Siehe ESQL im Modul 'Decide_on_query'.)
    GetPassengerInformation Grundeinstellung Datenquelle RESERVDB
    (Dieser Wert gibt die von diesem Knoten verwendete Datenbank an.)
    Grundeinstellung ESQL-Modul GetPassengerInformation
    (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 Rechenmodus 'LocalEnvironment' und 'Message'
    (Dieser Wert sorgt dafür, dass 'LocalEnvironment' (Lokale Umgebung) und die Nachricht nach der Änderung an den Knoten 'XML_PASSENGERQUERY_OUT' übergeben werden.)
    GetReservationsInformation Grundeinstellung Datenquelle RESERVDB
    (Dieser Wert gibt die von diesem Knoten verwendete Datenbank an.)
    Grundeinstellung ESQL-Modul GetReservationsInformation
    (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 Rechenmodus 'LocalEnvironment' und 'Message'
    (Dieser Wert sorgt dafür, dass 'LocalEnvironment' (Lokale Umgebung) und die Nachricht nach der Änderung an den Knoten 'XML_PASSENGERQUERY_OUT' übergeben werden.)
    XML_PASSENGERQUERY_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_PASSENGERQUERY_OUT
    (Dieser Wert gibt die lokale Warteschlange an, in die der Nachrichtenfluss die Nachricht einreiht.)
  5. Klicken Sie im Projekt 'XML Airline Message Flows' doppelt auf die ESQL-Datei, um sie im ESQL-Editor zu öffnen. Kopieren Sie die im Folgenden wiedergegebenen ESQL-Code-Module in die ESQL-Datei und speichern Sie dann die Datei. Weitere Informationen hierzu finden Sie in der WebSphere Message Broker-Dokumentation unter ESQL erstellen.
    -- ************************************************
    -- * ESQL for the XML_PassengerQuery message flow
    -- ************************************************
    
    CREATE COMPUTE MODULE DecideOnQuery
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		IF InputRoot.XMLNSC.PassengerQuery.ReservationNumber <> '' THEN
    			SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname = 'SinglePassenger';
    		ELSE
    			SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname = 'AllReservations';
    		END IF;
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE GetPassengerInformation
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XMLNSC.PassengerQuery = NULL;
    		-- Umgebung mit Passagierangaben aus der Datenbank füllen
    		SET Environment.Variables =
    			THE (SELECT T.* FROM Database.XMLPASSENGERTB AS T
    				WHERE T.RESERVATIONNO = InputRoot.XMLNSC.PassengerQuery.ReservationNumber);
    
    		-- Ausgabenachricht mit Informationen aus der Datenbankabfrage füllen
    		CREATE FIELD OutputRoot.XMLNSC.PassengerInfoResponse.PassengerInfo;
    		DECLARE outpass REFERENCE TO OutputRoot.XMLNSC.PassengerInfoResponse.PassengerInfo;
    		SET outpass.ReservationNumber = Environment.Variables.RESERVATIONNO;
    		SET outpass.FirstName = Environment.Variables.FIRSTNAME;
    		SET outpass.LastName = Environment.Variables.LASTNAME;
    		SET outpass.FlightNumber = Environment.Variables.FLIGHTNO;
    		SET outpass.Date = Environment.Variables.FLIGHTDATE;
    		SET outpass.Class = Environment.Variables.CLASSTYPE;
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE GetReservationsInformation
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XMLNSC.PassengerQuery = NULL;
    		-- Umgebung mit Reservierungsangaben aus der Datenbank füllen
    		SET Environment.Variables.Reservation[] =
    			(SELECT T.* FROM Database.XMLPASSENGERTB AS T
    				WHERE T.FIRSTNAME = InputRoot.XMLNSC.PassengerQuery.FirstName
    				AND T.LASTNAME = InputRoot.XMLNSC.PassengerQuery.LastName);
    
    		-- Ausgabenachricht mit Informationen aus der Datenbankabfrage füllen
    		CREATE FIELD OutputRoot.XMLNSC.PassengerInfoResponse.ListOfReservations;
    		DECLARE outres REFERENCE TO OutputRoot.XMLNSC.PassengerInfoResponse.ListOfReservations;
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER CARDINALITY(Environment.Variables.*[]);
    		WHILE I <= J DO
    			SET outres.Reservation[I].FlightNumber = Environment.Variables.Reservation[I].FLIGHTNO;
    			SET outres.Reservation[I].Date = Environment.Variables.Reservation[I].FLIGHTDATE;
    			SET outres.Reservation[I].Class = Environment.Variables.Reservation[I].CLASSTYPE;
    			SET I = I + 1;
    		END WHILE;
    		RETURN TRUE;
    	END;
    END MODULE;
  6. Speichern Sie den Nachrichtenfluss.
Sie haben den Nachrichtenfluss 'XML_PassengerQuery' erstellt, der Informationen zu bestimmten Passagieren abruft, die Sitzplätze für einen Flug reserviert haben.

Zurück zur Erstellung des Mustercodes 'Airline Reservations'