Crear el flujo de mensajes XML_FlightQueryIn

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:

  1. Cree un nuevo flujo de mensajes denominado XML_FlightQueryIn.
    Para obtener instrucciones, consulte Crear un flujo de mensajes en la documentación de WebSphere Message Broker.
  2. En el Editor de flujos de mensajes, añada y renombre los nodos que se listan en la tabla siguiente.
    Para obtener instrucciones, consulte Añadir un nodo en un flujo de mensajes en la documentación de WebSphere Message Broker.
    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
  3. Conecte los nodos tal como se muestra en la siguiente tabla.
    Para obtener instrucciones, consulte Conexión a nodos de flujo de mensajes en la documentación de WebSphere Message Broker.
    Para comprobar si ha conectado los nodos juntos correctamente, consulte el diagrama en Acerca del flujo de mensajes XML_FlightQueryIn.
    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
  4. Configure las propiedades del nodo, tal como se muestra en la siguiente tabla. Acepte los valores por omisión para todas las propiedades, a menos que en la tabla se muestre un valor alternativo.
    Para obtener instrucciones, consulte Configurar un nodo de flujo de mensajes en la documentación de WebSphere Message Broker.
    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
    (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_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.)
  5. En el proyecto XML Airline Message Flows, efectúe una doble pulsación en el archivo ESQL para abrirlo en el Editor ESQL. Copie y pegue los siguientes módulos de código ESQL en el archivo ESQL y luego guarde el archivo. Para obtener más información, consulte Desarrollo de ESQL en la documentación de WebSphere Message Broker.
    -- **************************************************************************************
    -- * 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;
    
  6. Guarde el flujo de mensajes.
Ha creado 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.

Volver a Acerca del Ejemplo Creación de reserva de vuelos