Crear el flujo de mensajes XML_PassengerQuery

Utilice las instrucciones siguientes para crear el flujo de mensajes XML_PassengerQuery. Para obtener instrucciones más detalladas, pulse en los enlaces que se proporcionan al final de cada paso.

Para crear y configurar el flujo de mensajes XML_PassengerQuery:

  1. Cree un nuevo flujo de mensajes denominado XML_PassengerQuery.
    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_PASSENGERQUERY_IN
    WebSphere MQ MQOutput XML_PASSENGERQUERY_OUT
    WebSphere MQ MQOutput XML_PASSENGERQUERY_FAIL_1
    WebSphere MQ MQOutput XML_PASSENGERQUERY_FAIL_2
    Transformación Compute DecideOnQuery
    Transformación Compute GetPassengerInformation
    Transformación Compute GetReservationsInformation
    Direccionamiento Label SinglePassenger
    Direccionamiento Label AllReservations
    Direccionamiento RouteToLabel RouteToLabel

    El nodo RouteToLabel direcciona dinámicamente el mensaje según el contenido del entorno local que está asociado con el mensaje. El entorno local contiene la identidad de uno o más nodos Label de destino, identificados por la propiedad Nombre etiqueta (no el nombre del nodo).

  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_PassengerQuery.
    Nombre de nodo Terminal Conectar a
    XML_PASSENGERQUERY_IN Failure (de anomalías) XML_PASSENGERQUERY_FAIL_1
    Out DecideOnQuery
    Catch XML_PASSENGERQUERY_FAIL_2
    DecideOnQuery Out RouteToLabel
    SinglePassenger Out GetPassengerInformation
    AllReservations Out GetReservationsInformation
    GetPassengerInformation Out XML_PASSENGERQUERY_OUT
    GetReservationsInformation Out XML_PASSENGERQUERY_OUT
  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_PASSENGERQUERY_IN Básicas Nombre de cola XML_PASSENGERQUERY_IN
    (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_PASSENGERQUERY_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_PASSENGERQUERY_FAIL
    (Este valor es la cola local en la que el flujo de mensajes coloca el mensaje si el proceso falla.)
    XML_PASSENGERQUERY_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_PASSENGERQUERY_FAIL
    (Este valor es la cola local en la que el flujo de mensajes coloca el mensaje si el proceso falla.)
    DecideOnQuery Básicas Módulo ESQL DecideOnQuery
    (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.)
    Básicas Modalidad de cálculo Entorno local y mensaje
    (Este valor hace que tanto el entorno local como el mensaje se pasen al nodo RouteToLabel después de ser modificados.)
    RouteToLabel Básicas Modalidad Direccionar a primero
    (Este valor hace que el nodo RouteToLabel empiece a procesar la lista de destinos a partir del primer elemento, en la parte superior de la lista.)
    SinglePassenger Básicas Nombre de etiqueta SinglePassenger
    (Este valor es el nombre del nodo Label al que el flujo de mensajes pasa el mensaje. El nombre debe coincidir con el nombre de etiqueta establecido en el nodo Decide On The Query. Consulte el ESQL en el módulo Decide_on_query.)
    AllReservations Básicas Nombre de etiqueta AllReservations
    (Este valor es el nombre del nodo Label al que el flujo de mensajes pasa el mensaje. El nombre debe coincidir con el nombre de etiqueta establecido en el nodo Decide On The Query. Consulte el ESQL en el módulo Decide_on_query.)
    GetPassengerInformation Básicas Origen de datos RESERVDB
    (Este valor es la base de datos que utiliza este nodo.)
    Básicas Módulo ESQL GetPassengerInformation
    (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.)
    Básicas Modalidad de cálculo Entorno local y mensaje
    (Este valor hace que tanto el entorno local como el mensaje se pasen al nodo XML_PASSENGERQUERY_OUT después de ser modificados.)
    GetReservationsInformation Básicas Origen de datos RESERVDB
    (Este valor es la base de datos que utiliza este nodo.)
    Básicas Módulo ESQL GetReservationsInformation
    (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.)
    Básicas Modalidad de cálculo Entorno local y mensaje
    (Este valor hace que tanto el entorno local como el mensaje se pasen al nodo XML_PASSENGERQUERY_OUT después de ser modificados.)
    XML_PASSENGERQUERY_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_PASSENGERQUERY_OUT
    (Este valor es la cola local en la que el flujo de mensajes coloca el 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 el flujo de mensajes XML_PassengerQuery
    -- *******************************************************
    
    CREATE COMPUTE MODULE DecideOnQuery
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		IF InputRoot.XMLNSC.PassengerQuery.ReservationNumber <> '' THEN
    			SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname = 'SinglePassenger';
    		ELSE
    			SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname = 'AllReservations';
    		END IF;
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE GetPassengerInformation
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XMLNSC.PassengerQuery = NULL;
    		-- llenar el entorno con información sobre pasajeros de la base de datos
    		SET Environment.Variables =
    			THE (SELECT T.* FROM Database.XMLPASSENGERTB AS T
    				WHERE T.RESERVATIONNO = InputRoot.XMLNSC.PassengerQuery.ReservationNumber);
    
    		-- llenar el mensaje de salida con información de la consulta de base de datos
    		CREATE FIELD OutputRoot.XMLNSC.PassengerInfoResponse.PassengerInfo;
    		DECLARE outpass REFERENCE TO OutputRoot.XMLNSC.PassengerInfoResponse.PassengerInfo;
    		SET outpass.ReservationNumber = Environment.Variables.RESERVATIONNO;
    		SET outpass.FirstName = Environment.Variables.FIRSTNAME;
    		SET outpass.LastName = Environment.Variables.LASTNAME;
    		SET outpass.FlightNumber = Environment.Variables.FLIGHTNO;
    		SET outpass.Date = Environment.Variables.FLIGHTDATE;
    		SET outpass.Class = Environment.Variables.CLASSTYPE;
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE GetReservationsInformation
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XMLNSC.PassengerQuery = NULL;
    		-- llenar el entorno con información sobre reservas de la base de datos
    		SET Environment.Variables.Reservation[] =
    			(SELECT T.* FROM Database.XMLPASSENGERTB AS T
    				WHERE T.FIRSTNAME = InputRoot.XMLNSC.PassengerQuery.FirstName
    				AND T.LASTNAME = InputRoot.XMLNSC.PassengerQuery.LastName);
    
    		-- llenar el mensaje de salida con ínformación de la consulta de base de datos
    		CREATE FIELD OutputRoot.XMLNSC.PassengerInfoResponse.ListOfReservations;
    		DECLARE outres REFERENCE TO OutputRoot.XMLNSC.PassengerInfoResponse.ListOfReservations;
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER CARDINALITY(Environment.Variables.*[]);
    		WHILE I <= J DO
    			SET outres.Reservation[I].FlightNumber = Environment.Variables.Reservation[I].FLIGHTNO;
    			SET outres.Reservation[I].Date = Environment.Variables.Reservation[I].FLIGHTDATE;
    			SET outres.Reservation[I].Class = Environment.Variables.Reservation[I].CLASSTYPE;
    			SET I = I + 1;
    		END WHILE;
    		RETURN TRUE;
    	END;
    END MODULE;
  6. Guarde el flujo de mensajes.
Ha creado el flujo de mensajes XML_PassengerQuery, que recupera información sobre pasajeros específicos que han reservado asientos en un vuelo.

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