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:
Cajones de la paleta | Tipo de nodo | Nombre de nodo |
---|---|---|
WebSphere MQ | MQInput | XML_FLIGHTQUERY_REPLIES |
WebSphere MQ | MQOutput | XML_FLIGHTQUERY_OUT |
WebSphere MQ | MQOutput | XML_FLIGHTQUERY_TIMEOUT |
WebSphere MQ | MQOutput | XML_FLIGHTQUERY_FAIL |
Transformación | Compute | BuildOutputMessage |
Transformación | Compute | ProcessTimeout |
Direccionamiento | AggregateReply | AggregateReplies |
Nombre de nodo | Terminal | Conectar a |
---|---|---|
XML_FLIGHTQUERY_REPLIES | Out | AggregateReplies (En el terminal) |
Catch | XML_FLIGHTQUERY_FAIL | |
AggregateReplies | Out | BuildOutputMessage |
Timeout (de tiempo de espera) | ProcessTimeout | |
BuildOutputMessage | Out | XML_FLIGHTQUERY_OUT |
ProcessTimeout | Out | XML_FLIGHTQUERY_TIMEOUT |
Nombre de nodo | Página | Propiedad | Valor |
---|---|---|---|
XML_FLIGHTQUERY_REPLIES | Básicas | Nombre de cola | XML_FLIGHTQUERY_REPLIES
(Este valor es la cola donde XML_FlightQueryOut ha colocado el mensaje de control.) |
Análisis de mensaje de entrada | Dominio del mensaje | XMLNSC : Para mensajes XML (preparado para
espacio de nombres, validación, poco uso de memoria) (Este valor indica al intermediario que utilice el analizador XML genérico.) |
|
AggregateReplies | Básicas | 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ásicas | Tiempo de espera excedido de mensaje desconocido | 60 (Este valor es el tiempo durante el cual se retienen los mensajes que no pueden identificarse como respuestas antes de propagarlos al terminal desconocido (Unknown).) |
|
Buildoutputmessage | Básicas | Módulo ESQL | BuildOutputMessage (Este valor 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ásicas | Nombre de cola (No es necesario que especifique el nombre del gestor de colas porque la cola está definida en el mismo gestor de colas que el intermediario.) |
XML_FLIGHTQUERY_OUT (Este valor es la cola local en la que el flujo de mensajes coloca el mensaje.) |
Processtimeout | Básicas | Módulo ESQL | ProcessTimeout (Este valor 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ásicas |
Nombre de cola |
XML_FLIGHTQUERY_TIMEOUT (Este valor 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ásicas | Nombre de cola (No es necesario que especifique el nombre del gestor de colas porque la cola está definida en el mismo gestor de colas que el intermediario.) |
XML_FLIGHTQUERY_FAIL (Este valor es el lugar en que el flujo de mensajes coloca el mensaje si el proceso falla.) |
-- ************************************************************************************** -- * ESQL para el flujo de mensajes XML_FlightQueryIn - BuildOutputMessage/ProcessTimeout -- ************************************************************************************** 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.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; -- 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.(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; -- 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.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 -- habrá una respuesta o ninguna SET timedout.TimedOut = reps.XMLNSC; END IF; RETURN TRUE; END; END MODULE;