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':
Knotentyp | Knotenname |
---|---|
MQEmpfang | XML_PASSENGERQUERY_IN |
MQSenden | XML_PASSENGERQUERY_OUT |
MQSenden | XML_PASSENGERQUERY_FAIL_1 |
MQSenden | XML_PASSENGERQUERY_FAIL_2 |
Rechnen | DecideOnQuery |
Rechnen | GetPassengerInformation |
Rechnen | GetReservationsInformation |
Zieladressenknoten | SinglePassenger |
Zieladressenknoten | AllReservations |
Knoten 'Weiterleitung_an_Zieladresse' | Knoten 'Weiterleitung_an_Zieladresse' |
Der Knoten 'Weiterleitung_an_Zieladresse' leitet Nachrichten dynamisch auf Grundlage der mit der Nachricht verknüpften Inhalte der LocalEnvironment-Baumstruktur (lokale Umgebung) weiter. Die LocalEnvironment-Baumstruktur (lokale Umgebung) enthält die Identität mindestens eines Zieladressenknotens, die über die Eigenschaft 'Label Name' (Zielbezeichnung), nicht über den Knotennamen identifiziert werden.
Knotenname | Terminal | Verbinden mit |
---|---|---|
XML_PASSENGERQUERY_IN | Fehlerterminal | XML_PASSENGERQUERY_FAIL_1 |
Out | DecideOnQuery | |
Catch | XML_PASSENGERQUERY_FAIL_2 | |
DecideOnQuery | Out | Knoten 'Weiterleitung_an_Zieladresse' |
SinglePassenger | Out | GetPassengerInformation |
AllReservations | Out | GetReservationsInformation |
GetPassengerInformation | Out | XML_PASSENGERQUERY_OUT |
GetReservationsInformation | Out | XML_PASSENGERQUERY_OUT |
Knotenname | Seite | Eigenschaft | Wert |
---|---|---|---|
XML_PASSENGERQUERY_IN | Grundeinstellung | Name der Warteschlange | XML_PASSENGERQUERY_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.) |
|
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 (In diese lokale Warteschlange reiht der Nachrichtenfluss die Nachricht ein, 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 (In diese lokale Warteschlange reiht der Nachrichtenfluss die Nachricht ein, wenn die Verarbeitung fehlschlägt.) |
DecideOnQuery | Grundeinstellung | ESQL-Modul | DecideOnQuery (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 | Rechenmodus | 'LocalEnvironment' und 'Message'
('LocalEnvironment' (Lokale Umgebung) und Nachricht werden nach der Änderung an den Knoten 'Weiterleitung_an_Zieladresse' übergeben.) |
|
Knoten 'Weiterleitung_an_Zieladresse' | Grundeinstellung | Modus | Route to First (Veranlasst den Knoten 'Weiterleitung_an_Zieladresse' dazu, die Zieladressenliste beginnend mit dem ersten Element zu verarbeiten.) |
SinglePassenger | Grundeinstellung | Zielbezeichnung | SinglePassenger (Der Name des Zieladressenknotens, an den der Nachrichtenfluss die Nachricht übergibt. Dieser Name muss mit der im Knoten 'Decide On The Query' festgelegten Zielbezeichnung übereinstimmen. Siehe ESQL-Code im nachfolgenden Modul 'Decide_on_query'.) |
AllReservations | Grundeinstellung | Zielbezeichnung | AllReservations (Der Name des Zieladressenknotens, an den der Nachrichtenfluss die Nachricht übergibt. Dieser Name muss mit der im Knoten 'Decide On The Query' festgelegten Zielbezeichnung übereinstimmen. Siehe ESQL-Code im nachfolgenden Modul 'Decide_on_query'.) |
GetPassengerInformation | Grundeinstellung | Datenquelle | RESERVDB (Die von diesem Knoten verwendete Datenbank.) |
Grundeinstellung | ESQL-Modul | GetPassengerInformation (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 | Rechenmodus | 'LocalEnvironment' und 'Message'
('LocalEnvironment' (Lokale Umgebung) und Nachricht werden nach der Änderung an den Knoten 'XML_PASSENGERQUERY_OUT' übergeben.) |
|
GetReservationsInformation | Grundeinstellung | Datenquelle | RESERVDB (Die von diesem Knoten verwendete Datenbank.) |
Grundeinstellung | ESQL-Modul | GetReservationsInformation (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 | Rechenmodus | 'LocalEnvironment' und 'Message'
('LocalEnvironment' (Lokale Umgebung) und Nachricht werden nach der Änderung an den Knoten 'XML_PASSENGERQUERY_OUT' übergeben.) |
|
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 (Die lokale Warteschlange, in die der Nachrichtenfluss die Nachricht einreiht.) |
-- ************************************************ -- * ESQL for the XML_PassengerQuery message flow -- ************************************************ CREATE COMPUTE MODULE DecideOnQuery CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot = InputRoot; IF InputRoot.XML.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.XML.PassengerQuery = NULL; -- populate the environment with passenger info from the database SET Environment.Variables = THE (SELECT T.* FROM Database.XMLPASSENGERTB AS T WHERE T.RESERVATIONNO = InputRoot.XML.PassengerQuery.ReservationNumber); -- populate the output message with info from the database query CREATE FIELD OutputRoot.XML.PassengerInfoResponse.PassengerInfo; DECLARE outpass REFERENCE TO OutputRoot.XML.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.XML.PassengerQuery = NULL; -- populate the environment with reservations info from the database SET Environment.Variables.Reservation[] = (SELECT T.* FROM Database.XMLPASSENGERTB AS T WHERE T.FIRSTNAME = InputRoot.XML.PassengerQuery.FirstName AND T.LASTNAME = InputRoot.XML.PassengerQuery.LastName); -- populate the output message with info from the database query CREATE FIELD OutputRoot.XML.PassengerInfoResponse.ListOfReservations; DECLARE outres REFERENCE TO OutputRoot.XML.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;
Nun haben Sie den Nachrichtenfluss 'XML_PassengerQuery' erstellt, der Informationen zu bestimmten Passagieren, die Sitzplätze auf einem Flug reserviert haben, abruft.