Befolgen Sie die nachfolgenden Anweisungen, um den Nachrichtenfluss 'XML_FlightQueryIn' zu erstellen. Ausführlichere Anweisungen erhalten Sie jeweils über die Links am Ende eines jeden Schritts.
Vor Erstellung des Nachrichtenflusses 'XML_FlightQueryReply' müssen zunächst die Nachrichtenflüsse 'XML_FlightQueryOut' und 'XML_FlightQueryReply' erstellt werden. Eine Anleitung dazu finden Sie unter Nachrichtenfluss 'XML_FlightQueryOut' erstellen und Nachrichtenfluss 'XML_FlightQueryReply' erstellen.
So erstellen und konfigurieren Sie den Nachrichtenfluss 'XML_FlightQueryIn':
Palettenfächer | Knotentyp | Knotenname |
---|---|---|
WebSphere MQ | MQInput | XML_FLIGHTQUERY_REPLIES |
WebSphere MQ | MQOutput | XML_FLIGHTQUERY_OUT |
WebSphere MQ | MQOutput | XML_FLIGHTQUERY_TIMEOUT |
WebSphere MQ | MQOutput | XML_FLIGHTQUERY_FAIL |
Transformation | Compute | BuildOutputMessage |
Transformation | Compute | ProcessTimeout |
Routing | AggregateReply | AggregateReplies |
Knotenname | Terminal | Verbinden mit |
---|---|---|
XML_FLIGHTQUERY_REPLIES | Ausgangsterminal | AggregateReplies (Eingangsterminal) |
Catch | XML_FLIGHTQUERY_FAIL | |
AggregateReplies | Ausgangsterminal | BuildOutputMessage |
Zeitlimit-Terminal | ProcessTimeout | |
BuildOutputMessage | Ausgangsterminal | XML_FLIGHTQUERY_OUT |
ProcessTimeout | Ausgangsterminal | XML_FLIGHTQUERY_TIMEOUT |
Knotenname | Seite | Eigenschaft | Wert |
---|---|---|---|
XML_FLIGHTQUERY_REPLIES | Grundeinstellung | Name der Warteschlange | XML_FLIGHTQUERY_REPLIES
(Dieser Wert gibt die Warteschlange an, in die der Nachrichtenfluss 'XML_FlightQueryOut' die Steuernachricht eingereiht hat.) |
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.) |
|
AggregateReplies | Grundeinstellung | Aggregationsname | FLIGHTDETAILSAGG (Dieser Name muss mit der Eigenschaft 'Aggregate Name' des Knotens 'RequestDetails' im Nachrichtenfluss 'FlightQuery_Out' übereinstimmen.) |
Grundeinstellung | Zeitlimit bei unbekannten Nachrichten | 60 (Dieser Wert gibt die Dauer an, während der Nachrichten, die nicht als Antworten identifizierbar sind, in der Warteschleife gehalten werden, bevor sie an das Unbekannt-Terminal weitergeleitet werden.) |
|
BuildOutputMessage | Grundeinstellung | ESQL-Modul | BuildOutputMessage (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.) |
XML_FLIGHTQUERY_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_FLIGHTQUERY_OUT (Dieser Wert gibt die lokale Warteschlange an, in die der Nachrichtenfluss die Nachricht einreiht.) |
ProcessTimeout | Grundeinstellung | ESQL-Modul | ProcessTimeout (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.) |
XML_FLIGHTQUERY_TIMEOUT | Grundeinstellung |
Name der Warteschlange |
XML_FLIGHTQUERY_TIMEOUT (Dieser Wert gibt die lokale Warteschlange an, in die der Nachrichtenfluss die unvollständige zusammengefasste Nachricht einreiht, wenn nicht alle Antwortnachrichten den Knoten 'AggregateReplies' erreichen, bevor das im Knoten 'RequestDetails' des Nachrichtenflusses 'XML_FlightQueryOut' angegebene Zeitlimit überschritten ist. |
XML_FLIGHTQUERY_FAIL | 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 (Dieser Wert gibt die Warteschlange an, in die der Nachrichtenfluss die Nachricht einreiht, wenn die Verarbeitung fehlschlägt.) |
-- ********************************************************************************* -- * ESQL for the XML_FlightQueryIn message flow - BuildOutputMessage/ProcessTimeout -- ********************************************************************************* CREATE COMPUTE MODULE BuildOutputMessage CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN -- Aggregationsantwortnachricht für Ausgabe in eine Warteschlange korrigieren SET OutputRoot.Properties = InputRoot.Properties; CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD'; SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION; DECLARE inflight REFERENCE TO InputRoot.ComIbmAggregateReplyBody.FlightDetails.XMLNSC.Flight; DECLARE inpass REFERENCE TO InputRoot.ComIbmAggregateReplyBody.PassengerDetails.XMLNSC.ListOfPassengers; CREATE FIELD OutputRoot.XMLNSC.FlightDetailsInfoResponse; DECLARE outresp REFERENCE TO OutputRoot.XMLNSC.FlightDetailsInfoResponse; -- Ausgabenachricht mit Fluginformationen aus Aggregationsantwort füllen -- CREATE FIRSTCHILD OF outresp.Flight TYPE NameValue NAME 'number' VALUE inflight.FLIGHTNO; SET outresp.Flight.(XMLNSC.Attribute)number VALUE = inflight.FLIGHTNO; SET outresp.Flight.(XMLNSC.Attribute)Flightdate VALUE = inflight.FLIGHTDATE; SET outresp.Flight.FirstClass.Capacity = inflight.TOTALFIRST; SET outresp.Flight.FirstClass.Used = inflight.FIRSTCLASS; SET outresp.Flight.FirstClass.Price = inflight.FIRSTPRICE; SET outresp.Flight.EconomyClass.Capacity = inflight.TOTALECONOMIC; SET outresp.Flight.EconomyClass.Used = inflight.ECONOMICCLASS; SET outresp.Flight.EconomyClass.Price = inflight.ECONOMICPRICE; SET outresp.Flight.Origin = inflight.STARTPOINT; SET outresp.Flight.Destination = inflight.ENDPOINT; -- Ausgabenachricht mit Passagierangaben aus Aggregationsnachricht füllen DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(inpass.*[]); WHILE I <= J DO SET outresp.ListOfPassengers.Passenger[I].ReservationNumber = inpass.PassengerDetails[I].RESERVATIONNO; SET outresp.ListOfPassengers.Passenger[I].FirstName = inpass.PassengerDetails[I].FIRSTNAME; SET outresp.ListOfPassengers.Passenger[I].LastName = inpass.PassengerDetails[I].LASTNAME; SET outresp.ListOfPassengers.Passenger[I].Class = inpass.PassengerDetails[I].CLASSTYPE; SET I = I + 1; END WHILE; RETURN TRUE; END; END MODULE;
CREATE COMPUTE MODULE ProcessTimeout CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN SET OutputRoot.Properties = InputRoot.Properties; CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD'; SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION; CREATE FIELD OutputRoot.XMLNSC.ComIbmAggregateReplyBody; DECLARE timedout REFERENCE TO OutputRoot.XMLNSC.ComIbmAggregateReplyBody; DECLARE reps REFERENCE TO InputRoot.ComIbmAggregateReplyBody; MOVE reps FIRSTCHILD; IF LASTMOVE(reps) THEN -- es gibt entweder eine oder keine Antwort SET timedout.TimedOut = reps.XMLNSC; END IF; RETURN TRUE; END; END MODULE;
Zurück zur Erstellung des Mustercodes 'Airline Reservations'