Criando o Fluxo de Mensagens XML_FlightQueryIn

Utilize as instruções a seguir para criar o fluxo de mensagens XML_FlightQueryIn. Para obter instruções mais detalhadas, clique nos links fornecidos no final de cada etapa.

Antes de criar o fluxo de mensagens XML_FlightQueryReply, é necessário criar os fluxos de mensagens XML_FlightQueryOut e XML_FlightQueryReply. Para obter instruções, consulte Criando o Fluxo de Mensagens XML_FlightQueryOut e Criando o Fluxo de Mensagens XML_FlightQueryReply.

Para criar e configurar o fluxo de mensagens XML_FlightQueryIn:

  1. Crie um novo fluxo de mensagens denominado XML_FlightQueryIn.
    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_FLIGHTQUERY_REPLIES
    WebSphere MQ MQOutput XML_FLIGHTQUERY_OUT
    WebSphere MQ MQOutput XML_FLIGHTQUERY_TIMEOUT
    WebSphere MQ MQOutput XML_FLIGHTQUERY_FAIL
    Transformação Compute BuildOutputMessage
    Transformação Compute ProcessTimeout
    Roteamento AggregateReply AggregateReplies
  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_FlightQueryIn.
    Nome de Nó Terminal Conectar a
    XML_FLIGHTQUERY_REPLIES Out AggregateReplies (Em terminal)
    Catch XML_FLIGHTQUERY_FAIL
    AggregateReplies Out BuildOutputMessage
    Timeout ProcessTimeout
    BuildOutputMessage Out XML_FLIGHTQUERY_OUT
    ProcessTimeout Out XML_FLIGHTQUERY_TIMEOUT
  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_FLIGHTQUERY_REPLIES Básico Nome da fila XML_FLIGHTQUERY_REPLIES
    (Este valor é a fila na qual a mensagem de controle foi colocada pelo XML_FlightQueryOut.)
    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 instrui o intermediário a utilizar o analisador XML genérico.)
    AggregateReplies Básico Nome agregado FLIGHTDETAILSAGG
    (Este nome deve corresponder à propriedade Nome Agregado do nó Request Details no fluxo de mensagens FlightQuery_Out).
    Básico Tempo limite de mensagem desconhecido 60
    (Este valor é o período de tempo para o qual as mensagens que não podem ser identificadas como respostas são retidas antes de serem propagadas para o terminal Unknown.)
    Buildoutputmessage Básico Módulo ESQL BuildOutputMessage
    (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).
    XML_FLIGHTQUERY_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_FLIGHTQUERY_OUT
    (Esse valor é a fila local na qual o fluxo de mensagens coloca a mensagem.)
    Processtimeout Básico Módulo ESQL ProcessTimeout
    (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).
    XML_FLIGHTQUERY_TIMEOUT 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_FLIGHTQUERY_TIMEOUT
    (Este valor é a fila local na qual o fluxo de mensagens coloca a mensagem agregada incompleta caso todas as mensagens de resposta não atinjam o nó Aggregate Replies antes do tempo limite que foi especificado no nó Request Details no fluxo de mensagens XML_FlightQueryOut.)
    XML_FLIGHTQUERY_FAIL 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_FLIGHTQUERY_FAIL
    (Esse valor é onde o fluxo de mensagens coloca a mensagem se o processamento falhar.)
  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_FlightQueryIn -
    BuildOutputMessage/ProcessTimeout --
    **************************************************************************************
    
    CREATE COMPUTE MODULE BuildOutputMessage 	CREATE FUNCTION Main() RETURNS BOOLEAN 	BEGIN 		-- fix the
    aggregate reply message for output to a queue 		SET OutputRoot.Properties = InputRoot.Properties; 		CREATE
    NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD'; 		SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION;
    
    		DECLARE inflight REFERENCE TO
    InputRoot.ComIbmAggregateReplyBody.FlightDetails.XMLNSC.Flight;
    		DECLARE inpass REFERENCE TO
    InputRoot.ComIbmAggregateReplyBody.PassengerDetails.XMLNSC.ListOfPassengers;
    		CREATE FIELD OutputRoot.XMLNSC.FlightDetailsInfoResponse; 		DECLARE
    outresp REFERENCE TO OutputRoot.XMLNSC.FlightDetailsInfoResponse;
    
    		-- preenche a mensagem de saída com informações de vôo a partir da
    resposta agregada --		CREATE FIRSTCHILD OF outresp.Flight TYPE
    NameValue NAME 'number' VALUE inflight.FLIGHTNO; 		SET
    outresp.Flight.(XMLNSC.Attribute)number VALUE = inflight.FLIGHTNO;
    		SET outresp.Flight.(XMLNSC.Attribute)Flightdate VALUE =
    inflight.FLIGHTDATE; 		SET outresp.Flight.FirstClass.Capacity =
    inflight.TOTALFIRST; 		SET outresp.Flight.FirstClass.Used =
    inflight.FIRSTCLASS; 		SET outresp.Flight.FirstClass.Price =
    inflight.FIRSTPRICE; 		SET outresp.Flight.EconomyClass.Capacity =
    inflight.TOTALECONOMIC; 		SET outresp.Flight.EconomyClass.Used =
    inflight.ECONOMICCLASS; 		SET outresp.Flight.EconomyClass.Price =
    inflight.ECONOMICPRICE; 		SET outresp.Flight.Origin =
    inflight.STARTPOINT; 		SET outresp.Flight.Destination =
    inflight.ENDPOINT;
    
    		-- populate the output message with passenger info from the aggregate reply		
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER CARDINALITY(inpass.*[]);
    		WHILE I <= J DO
    			SET outresp.ListOfPassengers.Passenger[I].ReservationNumber = inpass.PassengerDetails[I].RESERVATIONNO;
    			SET outresp.ListOfPassengers.Passenger[I].FirstName = inpass.PassengerDetails[I].FIRSTNAME;
    			SET outresp.ListOfPassengers.Passenger[I].LastName = inpass.PassengerDetails[I].LASTNAME;
    			SET outresp.ListOfPassengers.Passenger[I].Class = inpass.PassengerDetails[I].CLASSTYPE;
    			SET I = I + 1;
    		END WHILE;
    	RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE ProcessTimeout 	CREATE FUNCTION Main() RETURNS BOOLEAN 	BEGIN 		SET
    OutputRoot.Properties = InputRoot.Properties; 		CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
    		SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION; 		CREATE FIELD
    OutputRoot.XMLNSC.ComIbmAggregateReplyBody; 		DECLARE timedout REFERENCE TO
    OutputRoot.XMLNSC.ComIbmAggregateReplyBody; 		DECLARE reps REFERENCE TO InputRoot.ComIbmAggregateReplyBody;
    		MOVE reps FIRSTCHILD; 		IF LASTMOVE(reps) THEN -- there will either be one reply, or none 			SET
    timedout.TimedOut = reps.XMLNSC; 		END IF; 		RETURN TRUE; 	END; END MODULE;
    
  6. Salve o fluxo de mensagens.
Você criou o fluxo de mensagens XML_FlightQueryIn, que está agregado na parte fan-in do fluxo de mensagens XML_FlightQuery message. O fluxo de mensagens XML_FlightQueryIn funciona com os fluxos de mensagens XML_FlightQueryOut e XML_FlightQueryReply para solicitar informações sobre um vôo específico ou sobre passageiros que reservaram assentos naquele vôo.

Voltar para a amostra Construindo Reservas Aéreas