Utilice las siguientes instrucciones para crear el flujo de mensajes XML_FlightQueryIn. Para obtener instrucciones más detalladas, pulse en los enlaces que se proporcionan al final de cada paso.
Antes de crear el flujo de mensajes XML_FlightQueryReply, debe crear los flujos de mensajes XML_FlightQueryOut y XML_FlightQueryReply. Para ver las instrucciones, consulte los apartados Crear el flujo de mensajes XML_FlightQueryOut y Crear el flujo de mensajes XML_FlightQueryReply.
Para crear y configurar el flujo de mensajes XML_FlightQueryIn:
Tipo de nodo | Nombre de nodo |
---|---|
MQInput | XML_FLIGHTQUERY_REPLIES |
MQOutput | XML_FLIGHTQUERY_OUT |
MQOutput | XML_FLIGHTQUERY_TIMEOUT |
MQOutput | XML_FLIGHTQUERY_FAIL |
Compute | BuildOutputMessage |
Compute | ProcessTimeout |
AggregateReply | AggregateReplies |
Nombre de nodo | Terminal | Conectar a |
---|---|---|
XML_FLIGHTQUERY_REPLIES | Out (de salida) | AggregateReplies (terminal In) |
Catch (de captación) | XML_FLIGHTQUERY_FAIL | |
AggregateReplies | Out (de salida) | BuildOutputMessage |
Timeout (de tiempo de espera) | ProcessTimeout | |
BuildOutputMessage | Out (de salida) | XML_FLIGHTQUERY_OUT |
ProcessTimeout | Out (de salida) | XML_FLIGHTQUERY_TIMEOUT |
Nombre de nodo | Página | Propiedad | Valor |
---|---|---|---|
XML_FLIGHTQUERY_REPLIES | Básico | Nombre de cola | XML_FLIGHTQUERY_REPLIES (Esta es la cola donde XML_FlightQueryOut ha colocado el mensaje de control.) |
Valor por omisión | Dominio del mensaje | XML (Indica al intermediario que utilice el analizador XML genérico.) |
|
Aggregate Replies | Básico | Nombre de agregación | FLIGHTDETAILSAGG (Este nombre debe coincidir con la propiedad Nombre de agregación del nodo Request details del flujo de mensajes FlightQuery_Out.) |
Básico | Tiempo de espera excedido de mensaje desconocido | 60 (Es el tiempo durante el cual se retienen los mensajes que no pueden identificarse como respuestas antes de propagarlos al terminal desconocido (Unknown).) |
|
Build output message | Básico | Módulo ESQL | BuildOutputMessage (Este es el nombre del módulo ESQL que utiliza este nodo durante el proceso. El nombre ha de coincidir con el nombre que aparece en la sentencia CREATE COMPUTE en el archivo ESQL.) |
XML_FLIGHTQUERY_OUT | Básico | Nombre de cola (No es necesario especificar el nombre del gestor de colas porque la cola está definida en el mismo gestor de colas que el intermediario.) |
XML_FLIGHTQUERY_OUT (Esta es la cola local en la que el flujo de mensajes coloca el mensaje.) |
Process timeout | Básico | Módulo ESQL | ProcessTimeout (Este es el nombre del módulo ESQL que utiliza este nodo durante el proceso. El nombre ha de coincidir con el nombre que aparece en la sentencia CREATE COMPUTE en el archivo ESQL.) |
XML_FLIGHTQUERY_TIMEOUT | Básico | Nombre de cola |
XML_FLIGHTQUERY_TIMEOUT (Esta es la cola local en la que el flujo de mensajes coloca el mensaje agregado incompleto si algún mensaje de respuesta no llega al nodo Aggregate Replies antes del tiempo de espera especificado en el nodo Request Details del flujo de mensajes XML_FlightQueryOut.) |
XML_FLIGHTQUERY_FAIL | Básico | Nombre de cola (No es necesario especificar el nombre del gestor de colas porque la cola está definida en el mismo gestor de colas que el intermediario.) |
XML_FLIGHTQUERY_FAIL (Es donde el flujo de mensajes coloca el mensaje si el proceso falla.) |
-- ************************************************ -- * ESQL para el flujo de mensajes XML_FlightQueryIn -- ******************************************************* CREATE COMPUTE MODULE BuildOutputMessage CREATE FUNCTION Main() RETURNS BOOLEAN BEGIN -- fije el mensaje de respuesta agregado a una cola para su salida SET OutputRoot.Properties = InputRoot.Properties; CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD'; SET OutputRoot.MQMD.StrucId = MQMD_STRUC_ID; SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION; DECLARE inflight REFERENCE TO InputRoot.ComIbmAggregateReplyBody.FlightDetails.XML.Flight; DECLARE inpass REFERENCE TO InputRoot.ComIbmAggregateReplyBody.PassengerDetails.XML.ListOfPassengers; CREATE FIELD OutputRoot.XML.FlightDetailsInfoResponse; DECLARE outresp REFERENCE TO OutputRoot.XML.FlightDetailsInfoResponse; -- llene el mensaje de salida con información del vuelo de la respuesta agregada CREATE FIRSTCHILD OF outresp.Flight TYPE NameValue NAME 'number' VALUE inflight.FLIGHTNO; SET outresp.Flight.(XML.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; -- llene el menaje de salida con información sobre los pasajeros de la respuesta agregada 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.StrucId = MQMD_STRUC_ID; SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION; CREATE FIELD OutputRoot.XML.ComIbmAggregateReplyBody; DECLARE timedout REFERENCE TO OutputRoot.XML.ComIbmAggregateReplyBody; DECLARE reps REFERENCE TO InputRoot.ComIbmAggregateReplyBody; MOVE reps FIRSTCHILD; IF LASTMOVE(reps) THEN -- habrá una respuesta o ninguna SET timedout.TimedOut = reps.XML; END IF; RETURN TRUE; END; END MODULE;
Acaba de crear el flujo de mensajes XML_FlightQueryIn, que es la parte de abanico de entrada agregada del flujo de mensajes XML_FlightQuery. El flujo de mensajes XML_FlightQueryIn trabaja con los flujos de mensajes XML_FlightQueryOut y XML_FlightQueryReply para solicitar información sobre un vuelo específico y los pasajeros que han reservado asientos en ese vuelo.