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