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:
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 |
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 |
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.) |
-- ************************************************ -- * 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;