Criando o Fluxo de Mensagens XML_PassengerQuery

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

Para criar e configurar o fluxo de mensagens XML_PassengerQuery:

  1. Crie um novo fluxo de mensagens denominado XML_PassengerQuery.
    Para obter instruções, consulte Criando um Fluxo de Mensagens.
  2. No editor Message Flow, 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_PASSENGERQUERY_IN
    MQOutput XML_PASSENGERQUERY_OUT
    MQOutput XML_PASSENGERQUERY_FAIL_1
    MQOutput XML_PASSENGERQUERY_FAIL_2
    Compute DecideOnQuery
    Compute GetPassengerInformation
    Compute GetReservationsInformation
    Label SinglePassenger
    Label AllReservations
    RouteToLabel RouteToLabel

    O nó RouteToLabel roteia dinamicamente a mensagem com base no conteúdo do LocalEnvironment associado à mensagem. O LocalEnvironment contém a identidade de um ou mais nós Label de destino, identificado pela propriedade Label Name (não o nome do nó).

  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_PassengerQuery.
    Nome do Nó Terminal Conectar a
    XML_PASSENGERQUERY_IN Failure XML_PASSENGERQUERY_FAIL_1
    Out DecideOnQuery
    Catch XML_PASSENGERQUERY_FAIL_2
    DecideOnQuery Out RouteToLabel
    SinglePassenger Out GetPassengerInformation
    AllReservations Out GetReservationsInformation
    GetPassengerInformation Out XML_PASSENGERQUERY_OUT
    GetReservationsInformation Out XML_PASSENGERQUERY_OUT
  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_PASSENGERQUERY_IN Básico Nome da Fila XML_PASSENGERQUERY_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.)
    XML_PASSENGERQUERY_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_PASSENGERQUERY_FAIL
    (Essa é a fila local na qual o fluxo de mensagens coloca a mensagem se o processamento falhar).
    XML_PASSENGERQUERY_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_PASSENGERQUERY_FAIL
    (Essa é a fila local na qual o fluxo de mensagens coloca a mensagem se o processamento falhar).
    DecideOnQuery Básico Módulo ESQL DecideOnQuery
    (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 Modo de Computação LocalEnvironment e Message
    (Isto faz com que LocalEnvironment e a mensagem sejam transmitidos ao nó RouteToLabel depois de serem modificados).
    RouteToLabel Básico Mode Route to First
    (Faz com que o nó RouteToLabel comece a processar a lista de destinos a partir do primeiro item, no início da lista).
    SinglePassenger Básico Nome do Rótulo SinglePassenger
    (É o nome do nó Label para o qual o fluxo de mensagens transmite a mensagem. Esse nome deve corresponder ao nome do rótulo definido no nó Decide On The Query. Consulte o ESQL no módulo Decide_on_query a seguir).
    AllReservations Básico Nome do Rótulo AllReservations
    (É o nome do nó Label para o qual o fluxo de mensagens transmite a mensagem. Esse nome deve corresponder ao nome do rótulo definido no nó Decide On The Query. Consulte o ESQL no módulo Decide_on_query a seguir).
    GetPassengerInformation Básico Fonte de Dados RESERVDB
    (Esse é o banco de dados utilizado por esse nó).
    Básico Módulo ESQL GetPassengerInformation
    (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 Modo de Computação LocalEnvironment e Message
    (Isto faz com que LocalEnvironment e a mensagem sejam transmitidos ao nó XML_PASSENGERQUERY_OUT depois de serem modificados).
    GetReservationsInformation Básico Fonte de Dados RESERVDB
    (Esse é o banco de dados utilizado por esse nó).
    Básico Módulo ESQL GetReservationsInformation
    (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 Modo de Computação LocalEnvironment e Message
    (Isto faz com que LocalEnvironment e a mensagem sejam transmitidos ao nó XML_PASSENGERQUERY_OUT depois de serem modificados).
    XML_PASSENGERQUERY_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_PASSENGERQUERY_OUT
    (Essa é a fila local na qual o fluxo de mensagens coloca a 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_PassengerQuery
    -- ************************************************
    
    CREATE COMPUTE MODULE DecideOnQuery
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		IF InputRoot.XML.PassengerQuery.ReservationNumber <> '' THEN
    			SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname = 'SinglePassenger';
    		ELSE
    			SET OutputLocalEnvironment.Destination.RouterList.DestinationData[1].labelname = 'AllReservations';
    		END IF;
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE GetPassengerInformation
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XML.PassengerQuery = NULL;
    		-- populate the environment with passenger info from the database
    		SET Environment.Variables =
    			THE (SELECT T.* FROM Database.XMLPASSENGERTB AS T
    				WHERE T.RESERVATIONNO = InputRoot.XML.PassengerQuery.ReservationNumber);
    
    		-- populate the output message with info from the database query
    		CREATE FIELD OutputRoot.XML.PassengerInfoResponse.PassengerInfo;
    		DECLARE outpass REFERENCE TO OutputRoot.XML.PassengerInfoResponse.PassengerInfo;
    		SET outpass.ReservationNumber = Environment.Variables.RESERVATIONNO;
    		SET outpass.FirstName = Environment.Variables.FIRSTNAME;
    		SET outpass.LastName = Environment.Variables.LASTNAME;
    		SET outpass.FlightNumber = Environment.Variables.FLIGHTNO;
    		SET outpass.Date = Environment.Variables.FLIGHTDATE;
    		SET outpass.Class = Environment.Variables.CLASSTYPE;
    		RETURN TRUE;
    	END;
    END MODULE;
    
    CREATE COMPUTE MODULE GetReservationsInformation
    	CREATE FUNCTION Main() RETURNS BOOLEAN
    	BEGIN
    		SET OutputRoot = InputRoot;
    		SET OutputRoot.XML.PassengerQuery = NULL;
    		-- populate the environment with reservations info from the database
    		SET Environment.Variables.Reservation[] =
    			(SELECT T.* FROM Database.XMLPASSENGERTB AS T
    				WHERE T.FIRSTNAME = InputRoot.XML.PassengerQuery.FirstName
    				AND T.LASTNAME = InputRoot.XML.PassengerQuery.LastName);
    
    		-- populate the output message with info from the database query
    		CREATE FIELD OutputRoot.XML.PassengerInfoResponse.ListOfReservations;
    		DECLARE outres REFERENCE TO OutputRoot.XML.PassengerInfoResponse.ListOfReservations;
    		DECLARE I INTEGER 1;
    		DECLARE J INTEGER CARDINALITY(Environment.Variables.*[]);
    		WHILE I <= J DO
    			SET outres.Reservation[I].FlightNumber = Environment.Variables.Reservation[I].FLIGHTNO;
    			SET outres.Reservation[I].Date = Environment.Variables.Reservation[I].FLIGHTDATE;
    			SET outres.Reservation[I].Class = Environment.Variables.Reservation[I].CLASSTYPE;
    			SET I = I + 1;
    		END WHILE;
    		RETURN TRUE;
    	END;
    END MODULE;

Agora você criou o fluxo de mensagens XML_PassengerQuery, que recupera informações sobre passageiros específicos que reservaram assentos em um vôo.

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