Crear el flujo de mensajes XML_CancelReservation

Utilice las siguientes instrucciones para crear el flujo de mensajes XML_CancelReservation. 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_CancelReservation:

  1. Cree un nuevo flujo de mensajes denominado XML_CancelReservation.
    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_CANCELRESERVATION_IN
    WebSphere MQ MQOutput XML_CANCELRESERVATION_OUT
    WebSphere MQ MQOutput XML_CANCELRESERVATION_FAIL1_1
    WebSphere MQ MQOutput XML_CANCELRESERVATION_FAIL1_2
    WebSphere MQ MQOutput XML_CANCELRESERVATION_FAIL2
    Transformación Compute DeleteReservation
    Transformación Compute IncrementSeat
    Construcción Trace Trace
    Construcción Trace Trace1
    Construcción Trace Trace2
  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_CancelReservation.
    Nombre de nodo Terminal Conectar a
    XML_CANCELRESERVATION_IN Out DeleteReservation
    Catch XML_CANCELRESERVATION_FAIL1_1
    DeleteReservation Failure (de anomalías) Trace
    Out Trace1
    Trace Out XML_CANCELRESERVATION_FAIL1_2
    Trace1 Out IncrementSeat
    IncrementSeat Failure (de anomalías) Trace2
    Out XML_CANCELRESERVATION_OUT
    Trace2 Out XML_CANCELRESERVATION_FAIL2
  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_CANCELRESERVATION_IN Básicas Nombre de cola XML_CANCELRESERVATION_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 optimizado.)
    DeleteReservation Básicas Origen de datos RESERVDB
    (Este valor es la base de datos que utiliza este nodo.)
    Básicas Módulo ESQL DeleteReservation
    (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 Generar excepción cuando se produce un error en la base de datos Quite la marca del recuadro de selección para poder especificar en el ESQL cómo debe gestionar el flujo de mensajes los errores de base de datos. Si el recuadro está seleccionado, cuando hay un error de base de datos, de forma predeterminada, se produce una excepción y se pasa el mensaje a la cola FAIL.
    Trace Básicas Destino Anotaciones de error locales
    (Este valor indica al nodo que escriba la información de rastreo en las anotaciones de error locales. En Windows, las anotaciones de error locales son el Visor de sucesos; en Linux, las anotaciones de error locales son el syslog.)
    Básicas Patrón ==== Error del nodo Delete Reservation ==================
    ${ExceptionList}

    (Este valor anota la parte del árbol correspondiente a la lista de excepciones del mensaje.)
    Básicas Número del mensaje 3051
    XML_CANCELRESERVATION_FAIL1_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_CANCELRESERVATION_FAIL1
    (Este valor es la cola local en la que el flujo de mensajes coloca el mensaje si el proceso falla.)
    XML_CANCELRESERVATION_FAIL1_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_CANCELRESERVATION_FAIL1
    (Este valor es la cola local en la que el flujo de mensajes coloca el mensaje si el proceso falla.)
    Trace1 Básicas Destino Anotaciones de error locales
    (Este valor indica al nodo que escriba la información de rastreo en las anotaciones de error locales. En Windows, las anotaciones de error locales son el Visor de sucesos; en Linux, las anotaciones de error locales son el syslog.)
    Básicas Patrón ========== Mensaje tras el nodo Delete Reservation ===================
    ${Root}
    ${Environment}

    (Este valor anota la parte de los árboles Mensaje y Entorno del mensaje.´)
    Básicas Número del mensaje 3051
    IncrementSeat Básicas Origen de datos RESERVDB
    (Este valor es la base de datos que utiliza este nodo.)
    Básicas Módulo ESQL IncrementSeat
    (Este valor es el nombre del módulo ESQL que utiliza este nodo durante el proceso. Debe coincidir el nombre en la sentencia CREATE COMPUTE MODULE del archivo XML_CancelReservation.esql.)
    Trace2 Básicas Destino Anotaciones de error locales
    (Este valor indica al nodo que escriba la información de rastreo en las anotaciones de error locales. En Windows, las anotaciones de error locales son el Visor de sucesos; en Linux, las anotaciones de error locales son el syslog.)
    Básicas Patrón ======== Error del nodo Increment Seat ===================
    ${ExceptionList}


    (Este valor anota la parte del árbol correspondiente a la ExceptionList del mensaje.)
    Básicas Número del mensaje 3051
    XML_CANCELRESERVATION_FAIL2 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_CANCELRESERVATION_FAIL2
    (Este valor es la cola local en la que el flujo de mensajes coloca el mensaje si el proceso falla.)
    XML_CANCELRESERVATION_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_CANCELRESERVATION_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_CancelReservation
    -- *******************************************************
    
    CREATE COMPUTE MODULE DeleteReservation
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		DECLARE SQLState1 CHARACTER;
    		DECLARE SQLErrorText1 CHARACTER;
    		DECLARE SQLCode1 INTEGER;
    		DECLARE SQLNativeError1 INTEGER;
    
    		SET OutputRoot = InputRoot;
    		DECLARE cancel REFERENCE TO InputRoot.XMLNSC.CancelReservation.ListOfReservations;
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER CARDINALITY(cancel.ReservationNumber[]);
    		WHILE I <= J DO -- realizar un bucle por las reservas que se han de cancelar
    			-- comprobar que la reserva solicitada existe
    			SET Environment.ListOfReservations.Info[I] =
    				THE(SELECT T.CLASSTYPE, T.FLIGHTNO, T.FLIGHTDATE
    					FROM Database.XMLPASSENGERTB AS T
    					WHERE T.RESERVATIONNO = cancel.ReservationNumber[I]);
    			IF (SELECT COUNT(*) FROM Environment.ListOfReservations.Info[I].*[] AS I1) IS NULL THEN
    				THROW USER EXCEPTION CATALOG 'MyCatalog' MESSAGE 1234 VALUES('No hay ningún registro a suprimir');
    			END IF;
    
    			-- suprima el registro de la base de datos
    			DELETE FROM Database.XMLPASSENGERTB AS T WHERE T.RESERVATIONNO = cancel.ReservationNumber[I];
    			SET I = I + 1;
    
    			SET SQLCode1 = SQLCODE;
    			IF SQLCode1 <> 0 THEN
    				SET SQLState1 = SQLSTATE;
    				SET SQLErrorText1 = SQLERRORTEXT;
    				SET SQLNativeError1 = SQLNATIVEERROR;
    				THROW USER EXCEPTION MESSAGE 2950 VALUES('The SQL State' , SQLState1 , SQLCode1 , SQLNativeError1 , SQLErrorText1);
    			END IF;
    		END WHILE;
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE IncrementSeat
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		DECLARE SQLState1 CHARACTER;
    		DECLARE SQLErrorText1 CHARACTER;
    		DECLARE SQLCode1 INTEGER;
    		DECLARE SQLNativeError1 INTEGER;
    
    		SET OutputRoot = InputRoot;
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER CARDINALITY(Environment.ListOfReservations.*[]);
    		-- loop through the cancellations, updating the seat availability
    		WHILE I <= J DO
    			IF Environment.ListOfReservations.Info[I].CLASSTYPE = 'Y' THEN
    				UPDATE Database.XMLFLIGHTTB AS T 
    					SET ECONOMICCLASS = T.ECONOMICCLASS-1, TOTALECONOMIC = T.TOTALECONOMIC+1
    					WHERE T.FLIGHTNO = Environment.ListOfReservations.Info[I].FLIGHTNO
    					AND T.FLIGHTDATE = Environment.ListOfReservations.Info[I].FLIGHTDATE;
    			END IF;
    			IF Environment.ListOfReservations.Info[I].CLASSTYPE = 'F' THEN
    				UPDATE Database.XMLFLIGHTTB AS T 
    					SET FIRSTCLASS = T.FIRSTCLASS-1, TOTALFIRST= T.TOTALFIRST+1
    					WHERE T.FLIGHTNO = Environment.ListOfReservations.Info[I].FLIGHTNO
    					AND T.FLIGHTDATE = Environment.ListOfReservations.Info[I].FLIGHTDATE;
    			END IF;
    			SET I = I + 1;
    
    			SET SQLCode1 = SQLCODE;
    			IF SQLCode1 <> 0 THEN
    				SET SQLState1 = SQLSTATE;
    				SET SQLErrorText1 = SQLERRORTEXT;
    				SET SQLNativeError1 = SQLNATIVEERROR;
    				THROW USER EXCEPTION MESSAGE 2950 VALUES('The SQL State' , SQLState1 , SQLCode1 , SQLNativeError1 , SQLErrorText1);
    			END IF;
    		END WHILE;
    		RETURN TRUE;
    	END;
    END MODULE;
    
  6. Guarde el flujo de mensajes.
Ha creado el flujo de mensajes XML_CancelReservation, que cancela las reservas que ha realizado el flujo de mensajes XML_Reservation anteriormente.

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