Criando o Fluxo de Mensagens XML_CancelReservation

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:

  1. Crie um novo fluxo de mensagens denominado XML_CancelReservation.
    Para obter instruções, consulte Criando um fluxo de mensagens na documentação do WebSphere Message Broker.
  2. No editor de Fluxo de Mensagens, inclua e renomeie os nós listados na tabela a seguir.
    Para obter instruções, consulte Incluindo um nó do fluxo de mensagens na documentação do WebSphere Message Broker.
    Gavetas de Paleta Tipo de nó Nome do Nó
    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
    Transformação Compute DeleteReservation
    Transformação Compute IncrementSeat
    Construção Rastrear Rastrear
    Construção Rastrear Trace1
    Construção Rastrear Trace2
  3. Conecte os nós conforme mostrado na tabela a seguir.
    Para obter instruções, consulte Conectando nós de fluxo de mensagens na documentação do WebSphere Message Broker.
    Para verificar se você conectou os nós corretamente, consulte o diagrama em Sobre o fluxo de mensagens XML_CancelReservation.
    Nome de Nó Terminal Conectar a
    XML_CANCELRESERVATION_IN Out DeleteReservation
    Catch XML_CANCELRESERVATION_FAIL1_1
    DeleteReservation Falha Rastrear
    Out Trace1
    Rastrear Out XML_CANCELRESERVATION_FAIL1_2
    Trace1 Out IncrementSeat
    IncrementSeat Falha Trace2
    Out XML_CANCELRESERVATION_OUT
    Trace2 Out XML_CANCELRESERVATION_FAIL2
  4. Configure as propriedades do nó, conforme mostradas na tabela a seguir. Aceite os valores padrão para todas as propriedades, a menos que seja mostrado um valor alternativo na tabela.
    Para obter instruções, consulte Configurando um nó do fluxo de mensagens na documentação do WebSphere Message Broker.
    Nome de Nó Ativo Propriedade Valor
    XML_CANCELRESERVATION_IN Básico Nome da fila XML_CANCELRESERVATION_IN
    (Esse valor é a fila local a partir da qual o fluxo de mensagens obtém a mensagem.)
    Análise de Mensagem de Entrada Domínio de mensagem XMLNSC: Para mensagens XML (conhecimento de espaço de nomes, validação, baixa utilização de memória)
    (Esse valor informa ao intermediário para utilizar o analisador XML genérico otimizado.)
    DeleteReservation Básico Origem de dados RESERVDB
    (Esse valor é o banco de dados utilizado por esse nó).
    Básico Módulo ESQL DeleteReservation
    (Esse valor é o nome do módulo ESQL usado 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 seleção estiver marcada, quando há um erro no banco de dados, o fluxo de mensagens por padrão produz uma exceção e transmite a mensagem para a fila FAIL.
    Rastrear Básico Destino Log de Erros Local
    (Esse valor instrui o nó a gravar as informações de rastreio no log 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}

    (Esse valor registra a parte da árvore ExceptionList da mensagem.)
    Básico Número de 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
    (Esse valor é 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
    (Esse valor é a fila local na qual o fluxo de mensagens coloca a mensagem se o processamento falhar).
    Trace1 Básico Destino Log de Erros Local
    (Esse valor instrui o nó a gravar as informações de rastreio no log 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}

    (Esse valor registra a parte da árvore Mensagem e Ambiente da mensagem.)
    Básico Número de mensagem 3051
    IncrementSeat Básico Origem de dados RESERVDB
    (Esse valor é o banco de dados utilizado por esse nó).
    Básico Módulo ESQL IncrementSeat
    (Esse valor é o nome do módulo ESQL usado por esse nó durante o processamento. O nome deve corresponder ao nome da instrução CREATE COMPUTE MODULE no arquivo XML_CancelReservation.esql).
    Trace2 Básico Destino Log de Erros Local
    (Esse valor instrui o nó a gravar as informações de rastreio no log 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}


    (Esse valor registra a parte da árvore ExceptionList da mensagem.)
    Básico Número de 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
    (Esse valor é 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
    (Esse valor é a fila local na qual o fluxo de mensagens coloca a mensagem.)
  5. No projeto Fluxos de Mensagens de Linha Aérea XML, dê um clique duplo no arquivo ESQL para abri-lo no editor ESQL. Copie e cole os seguintes módulos de código ESQL no arquivo ESQL e salve o arquivo. Para obter mais informações, consulte Desenvolvendo ESQL na documentação do WebSphere Message Broker.
    -- ************************************************
    -- * 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.XMLNSC.CancelReservation.ListOfReservations; 		DECLARE I
    INTEGER 1; 		DECLARE J INTEGER
    CARDINALITY(cancel.ReservationNumber[]); 		WHILE I <= J DO -- loop
    através de reservas a serem canceladas 			-- verifique se a 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('Nenhum registro para excluir'); 			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;
    
  6. Salve o fluxo de mensagens.
Você criou o fluxo de mensagens XML_CancelReservation que cancela reservas feitas pelo fluxo de mensagens XML_Reservation anteriormente.

Voltar para a amostra Construindo Reservas Aéreas