Crear el flujo de mensajes XML_FlightQueryReply

Utilice las siguientes instrucciones para crear el flujo de mensajes XML_FlightQueryReply. 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 el flujo de mensajes XML_FlightQueryOut. Para obtener instrucciones, consulte Crear el flujo de mensajes XML_FlightQueryOut.

Para crear y configurar el flujo de mensajes XML_FlightQueryReply:

  1. Cree un nuevo flujo de mensajes denominado XML_FlightQueryReply.
    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 siguiente tabla.
    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_FLIGHT
    WebSphere MQ MQInput XML_FLIGHTQUERY_PASSENGERS
    WebSphere MQ MQOutput XML_FLIGHTQUERY_FAIL_1
    WebSphere MQ MQOutput XML_FLIGHTQUERY_FAIL_2
    WebSphere MQ MQReply MQMD_ReplyToQ
    Transformación Compute GetFlightDetails
    Transformación Compute GetPassengerDetails
  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 correctamente, consulte el diagrama en Acerca del flujo de mensajes XML_FlightQueryReply.
    Nombre de nodo Terminal Conectar a
    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
  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_FLIGHT Básicas Nombre de cola XML_FLIGHTQUERY_FLIGHT
    (Este valor es la cola local desde la que el flujo de mensajes toma el mensaje.)
    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.)
    XML_FLIGHTQUERY_PASSENGERS Básicas Nombre de cola XML_FLIGHTQUERY_PASSENGERS
    (Este valor es la cola local desde la que el flujo de mensajes toma el mensaje.)
    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.)
    GetFlightDetails Básicas Origen de datos RESERVDB
    (Este valor es la base de datos que utiliza este nodo.)
    Básicas Módulo ESQL GetFlightDetails
    (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.)
    GetPassengerDetails Básicas Origen de datos RESERVDB
    (Este valor es la base de datos que utiliza este nodo.)
    Básicas Módulo ESQL GetPassengerDetails
    (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_FAIL_1 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.)
    XML_FLIGHTQUERY_FAIL_2 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.)
    MQMD_ReplyToQ Para este nodo no es necesario establecer ninguna propiedad.
    El nodo utiliza los campos ReplyToQ y ReplyToQMgr en la cabecera MQMD del mensaje.
  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 los flujos de mensajes XML_FlightQuery
    -- **************************************************
    
    CREATE COMPUTE MODULE GetFlightDetails
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XMLNSC.FlightQuery = NULL;
    		CREATE FIELD OutputRoot.XMLNSC.Flight;
    		DECLARE outflight REFERENCE TO OutputRoot.XMLNSC.Flight;
    		DECLARE query REFERENCE TO InputRoot.XMLNSC.FlightQuery;		
    		-- llenar el mensaje de salida con información del vuelo de la base de datos
    		SET OutputRoot.XMLNSC.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.XMLNSC.FlightQuery = NULL;		
    		CREATE FIELD OutputRoot.XMLNSC.ListOfPassengers;
    		DECLARE outpass REFERENCE TO OutputRoot.XMLNSC.ListOfPassengers;
    		DECLARE query REFERENCE TO InputRoot.XMLNSC.FlightQuery;
    		-- llenar el mensaje de salida con información sobre pasajeros de la base de datos
    		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;
    
  6. Guarde el flujo de mensajes.
Ha creado el flujo de mensajes XML_FlightQueryReply, que es la parte de respuesta agregada del flujo de mensajes XML_FlightQuery. El flujo de mensajes XML_FlightQueryReply trabaja con los flujos de mensajes XML_FlightQueryOut y XML_FlightQueryIn 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