Utilize as instruções a seguir para criar o fluxo de mensagens XML_CancelReservation. Para obter instruções mais detalhadas, clique nos links fornecidos no final de cada etapa.
Para criar e configurar o fluxo de mensagens XML_CancelReservation:
Tipo do Nó | Nome do Nó |
---|---|
MQInput | XML_CANCELRESERVATION_IN |
MQOutput | XML_CANCELRESERVATION_OUT |
MQOutput | XML_CANCELRESERVATION_FAIL1_1 |
MQOutput | XML_CANCELRESERVATION_FAIL1_2 |
MQOutput | XML_CANCELRESERVATION_FAIL2 |
Compute | DeleteReservation |
Compute | IncrementSeat |
Trace | Trace |
Trace | Trace1 |
Trace | Trace2 |
Nome do Nó | Terminal | Conectar a |
---|---|---|
XML_CANCELRESERVATION_IN | Out | DeleteReservation |
Catch | XML_CANCELRESERVATION_FAIL1_1 | |
DeleteReservation | Failure | Trace |
Out | Trace1 | |
Trace | Out | XML_CANCELRESERVATION_FAIL1_2 |
Trace1 | Out | IncrementSeat |
IncrementSeat | Failure | Trace2 |
Out | XML_CANCELRESERVATION_OUT | |
Trace2 | Out | XML_CANCELRESERVATION_FAIL2 |
Nome do Nó | Ativo | Propriedade | Valor |
---|---|---|---|
XML_CANCELRESERVATION_IN | Básico | Nome da fila | XML_CANCELRESERVATION_IN (Essa é a fila local de onde o fluxo de mensagens obtém a mensagem.) |
Padrão | Domínio de Mensagens | XML
(Isso instrui o intermediário a utilizar o analisador XML genérico.) |
|
DeleteReservation | Básico | Fonte de Dados | RESERVDB (Esse é o banco de dados utilizado por esse nó.) |
Básico | Módulo ESQL | DeleteReservation (Esse é o nome do módulo ESQL utilizado por esse nó durante o processamento. O nome deve corresponder ao nome na instrução CREATE COMPUTE MODULE no arquivo ESQL.) |
|
Básico | Exceção Emitida em Erro do Banco de Dados | Limpe a caixa de opções para que você possa especificar no ESQL, como o fluxo de mensagens deve lidar com erros de banco de dados. Se a caixa de opções for selecionada, quando houver um erro de banco de dados, o fluxo de mensagens, por padrão, emitirá uma exceção e transmitirá a mensagem para a fila FAIL. | |
Trace | Básico | Destino | Local Error Log (Isso instrui o nó a gravar as informações de rastreio no registro de erros local. No Windows, o registro de erros local é o Visualizador de Eventos; no Linux, o registro de erros local é syslog.) |
Básico | Padrão | ==== Erro ao Excluir nó Reservation ================== ${ExceptionList} (Isso registra a parte da árvore ExceptionList da mensagem.) |
|
Básico | Número da Mensagem | 3051 | |
XML_CANCELRESERVATION_FAIL1_1 | Básico | Nome da fila
(Não é necessário especificar o nome do Gerenciador de Filas, porque a fila está definida no mesmo gerenciador de filas que o intermediário.) |
XML_CANCELRESERVATION_FAIL1 (Essa é a fila local na qual o fluxo de mensagens coloca a mensagem se o processamento falhar.) |
XML_CANCELRESERVATION_FAIL1_2 | Básico | Nome da fila
(Não é necessário especificar o nome do Gerenciador de Filas, porque a fila está definida no mesmo gerenciador de filas que o intermediário.) |
XML_CANCELRESERVATION_FAIL1 (Essa é a fila local na qual o fluxo de mensagens coloca a mensagem se o processamento falhar.) |
Trace1 | Básico | Destino | Local Error Log (Isso instrui o nó a gravar as informações de rastreio no registro de erros local. No Windows, o registro de erros local é o Visualizador de Eventos; no Linux, o registro de erros local é syslog.) |
Básico | Padrão | ========== Mensagem após Excluir nó Reservation =================== ${Root} ${Environment} (Isso registra a parte da árvore Mensagem e Ambiente da mensagem.) |
|
Básico | Número da Mensagem | 3051 | |
IncrementSeat | Básico | Fonte de Dados | RESERVDB (Esse é o banco de dados utilizado por esse nó.) |
Básico | Módulo ESQL | IncrementSeat (Esse é o nome do módulo ESQL utilizado por esse nó durante o processamento. O nome deve corresponder ao nome na instrução CREATE COMPUTE MODULE no arquivo XML_CancelReservation.esql.) |
|
Trace2 | Básico | Destino | Local Error Log (Isso instrui o nó a gravar as informações de rastreio no registro de erros local. No Windows, o registro de erros local é o Visualizador de Eventos; no Linux, o registro de erros local é syslog.) |
Básico | Padrão | ======== Erro ao Incrementar nó Seat =================== ${ExceptionList} (Isso registra a parte da árvore ExceptionList da mensagem.) |
|
Básico | Número da Mensagem | 3051 | |
XML_CANCELRESERVATION_FAIL2 | Básico | Nome da fila
(Não é necessário especificar o nome do Gerenciador de Filas, porque a fila está definida no mesmo gerenciador de filas que o intermediário.) |
XML_CANCELRESERVATION_FAIL2 (Essa é a fila local na qual o fluxo de mensagens coloca a mensagem se o processamento falhar.) |
XML_CANCELRESERVATION_OUT | Básico | Nome da fila
(Não é necessário especificar o nome do Gerenciador de Filas, porque a fila está definida no mesmo gerenciador de filas que o intermediário.) |
XML_CANCELRESERVATION_OUT (Essa é a fila local na qual o fluxo de mensagens coloca a mensagem.) |
-- ************************************************ -- * ESQL para o fluxo de mensagens 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.XML.CancelReservation.ListOfReservations; DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(cancel.ReservationNumber[]); WHILE I <= J DO -- loop through the reservations to be cancelled -- check that the requested reservation exists 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 record to delete'); END IF; -- delete the record from the database 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;
Agora você criou o fluxo de mensagens XML_CancelReservation, que cancela reservas feitas anteriormente pelo fluxo de mensagens XML_Reservation.