Criando o Fluxo de Mensagens XML_FlightQueryReply

Utilize as instruções a seguir para criar o fluxo de mensagens XML_FlightQueryReply. 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 o fluxo de mensagens XML_FlightQueryOut. Para obter instruções, consulte Criando o Fluxo de Mensagens XML_FlightQueryOut.

Para criar e configurar o fluxo de mensagens XML_FlightQueryReply:

  1. Crie um novo fluxo de mensagens denominado XML_FlightQueryReply.
    Para obter instruções, consulte Criando um Fluxo de Mensagens.
  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ó.
    Tipo de Nó Nome do Nó
    MQInput XML_FLIGHTQUERY_FLIGHT
    MQInput XML_FLIGHTQUERY_PASSENGERS
    MQOutput XML_FLIGHTQUERY_FAIL_1
    MQOutput XML_FLIGHTQUERY_FAIL_2
    MQReply MQMD_ReplyToQ
    Compute GetFlightDetails
    Compute GetPassengerDetails
  3. Conecte os nós conforme mostrado na tabela a seguir.
    Para obter instruções, consulte Conectando Nós.
    Para verificar se os nós foram conectados corretamente, veja a figura em Sobre o Fluxo de Mensagens XML_FlightQueryReply.
    Nome do Nó Terminal Conectar a
    XML_FLIGHTQUERY_FLIGHT Out GetFlightDetails
    Catch XML_FLIGHTQUERY_FAIL_1
    XML_FLIGHTQUERY_PASSENGERS Out GetPassengerDetails
    Catch XML_FLIGHTQUERY_FAIL_2
    GetFlightDetails Out MQMD_ReplyToQ
    GetPassengerDetails Out MQMD_ReplyToQ
  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ó.
    Nome do Nó Ativo Propriedade Valor
    XML_FLIGHTQUERY_FLIGHT Básico Nome da fila XML_FLIGHTQUERY_FLIGHT
    (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.)
    XML_FLIGHTQUERY_PASSENGERS Básico Nome da fila XML_FLIGHTQUERY_PASSENGERS
    (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.)
    Get Flight Details Básico Fonte de Dados RESERVDB
    (Esse é o banco de dados utilizado por esse nó.)
    Básico Módulo ESQL GetFlightDetails
    (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).
    Get Passenger Details Básico Fonte de Dados RESERVDB
    (Esse é o banco de dados utilizado por esse nó.)
    Básico Módulo ESQL GetPassengerDetails
    (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).
    XML_FLIGHTQUERY_FAIL_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_FLIGHTQUERY_FAIL
    (É onde o fluxo de mensagens coloca a mensagem se o processamento falhar).
    XML_FLIGHTQUERY_FAIL_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_FLIGHTQUERY_FAIL
    (É onde o fluxo de mensagens coloca a mensagem se o processamento falhar).
    MQMD_ReplyToQ Não é necessário definir nenhuma propriedade para este nó.
    O nó utiliza os campos ReplyToQ e ReplyToQMgr no cabeçalho MQMD da mensagem.
  5. No projeto XML Airline Messageflows, dê um clique duplo no projeto do arquivo ESQL para abri-lo no editor ESQL e, em seguida, copie e cole os seguintes módulos do código ESQL no arquivo ESQL. Para obter informações adicionais, consulte Desenvolvendo ESQL.
    -- ************************************************
    -- * ESQL para o fluxo de mensagens XML_FlightQueryReply
    -- ************************************************
    
    CREATE COMPUTE MODULE GetFlightDetails
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XML.FlightQuery = NULL;
    		CREATE FIELD OutputRoot.XML.Flight;
    		DECLARE outflight REFERENCE TO OutputRoot.XML.Flight;
    		DECLARE query REFERENCE TO InputRoot.XML.FlightQuery;		
    		-- ocupar a mensagem de saída com informações sobre o vôo do banco de dados
    		SET OutputRoot.XML.Flight[] =
    			(SELECT T.* FROM Database.XMLFLIGHTTB AS T
    				WHERE T.FLIGHTNO = query.FlightNumber
    				AND T.FLIGHTDATE = query.FlightDate);
    		SET outflight.STARTPOINT = TRIM(outflight.STARTPOINT);
    		SET outflight.ENDPOINT = TRIM(outflight.ENDPOINT);
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE GetPassengerDetails
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XML.FlightQuery = NULL;		
    		CREATE FIELD OutputRoot.XML.ListOfPassengers;
    		DECLARE outpass REFERENCE TO OutputRoot.XML.ListOfPassengers;
    		DECLARE query REFERENCE TO InputRoot.XML.FlightQuery;
    		-- populate the output message with passenger info from the database
    		SET outpass.PassengerDetails[] =
    			(SELECT T.* FROM Database.XMLPASSENGERTB AS T
    				WHERE T.FLIGHTNO = query.FlightNumber
    				AND T.FLIGHTDATE = query.FlightDate);
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER CARDINALITY(outpass.*[]);
    		WHILE I <= J DO
    			SET outpass.PassengerDetails[I].LASTNAME = TRIM(outpass.PassengerDetails[I].LASTNAME);
    			SET outpass.PassengerDetails[I].FIRSTNAME = TRIM(outpass.PassengerDetails[I].FIRSTNAME);
    			SET I = I + 1;
    		END WHILE;
    		RETURN TRUE;
    	END;
    END MODULE;

Agora, você criou o fluxo de mensagens XML_FlightQueryReply, que é a parte de resposta agregada do fluxo de mensagens XML_FlightQuery. O fluxo de mensagens XML_FlightQueryReply funciona com os fluxos de mensagens XML_FlightQueryOut e XML_FlightQueryIn para solicitar informações sobre um vôo específico ou sobre passageiros que reservaram assentos naquele vôo.

Ícone Página Principal   Voltar para Construção da Amostra Reservas Aéreas