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:
Tipo do Nó | Nome do Nó |
---|---|
MQInput | XML_FLIGHTQUERY_REPLIES |
MQOutput | XML_FLIGHTQUERY_OUT |
MQOutput | XML_FLIGHTQUERY_TIMEOUT |
MQOutput | XML_FLIGHTQUERY_FAIL |
Compute | BuildOutputMessage |
Compute | ProcessTimeout |
AggregateReply | AggregateReplies |
Nome do Nó | Terminal | Conectar a |
---|---|---|
XML_FLIGHTQUERY_REPLIES | Out | AggregateReplies (Terminal Entrada) |
Catch | XML_FLIGHTQUERY_FAIL | |
AggregateReplies | Out | BuildOutputMessage |
Timeout | ProcessTimeout | |
BuildOutputMessage | Out | XML_FLIGHTQUERY_OUT |
ProcessTimeout | Out | XML_FLIGHTQUERY_TIMEOUT |
Nome do Nó | Ativo | Propriedade | Valor |
---|---|---|---|
XML_FLIGHTQUERY_REPLIES | Básico | Nome da fila | XML_FLIGHTQUERY_REPLIES (Essa é a fila na qual a mensagem de controle foi colocada pelo XML_FlightQueryOut.) |
Padrão | Domínio de Mensagens | XML
(Isso instrui o intermediário a utilizar o analisador XML genérico.) |
|
Aggregate Replies | 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 Mensagens Desconhecido | 60 (Esse é 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 Desconhecido.) |
|
Build output message | Básico | Módulo ESQL | BuildOutputMessage (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_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 (Essa é a fila local na qual o fluxo de mensagens coloca a mensagem.) |
Process timeout | Básico | Módulo ESQL | ProcessTimeout (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_TIMEOUT | Básico | Nome da fila
|
XML_FLIGHTQUERY_TIMEOUT (Essa á a fila local na qual o fluxo de mensagens coloca a mensagem agregada incompleta se todas as mensagens de resposta não atingirem o nó Aggregate Replies antes do tempo limite 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 (É onde o fluxo de mensagens coloca a mensagem se o processamento falhar.) |
-- ************************************************ -- * ESQL para o fluxo de mensagens XML_FlightQueryIn -- ************************************************ 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.StrucId = MQMD_STRUC_ID; SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION; DECLARE inflight REFERENCE TO InputRoot.ComIbmAggregateReplyBody.FlightDetails.XML.Flight; DECLARE inpass REFERENCE TO InputRoot.ComIbmAggregateReplyBody.PassengerDetails.XML.ListOfPassengers; CREATE FIELD OutputRoot.XML.FlightDetailsInfoResponse; DECLARE outresp REFERENCE TO OutputRoot.XML.FlightDetailsInfoResponse; -- populate the output message with flight info from the aggregate reply CREATE FIRSTCHILD OF outresp.Flight TYPE NameValue NAME 'number' VALUE inflight.FLIGHTNO; SET outresp.Flight.(XML.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.StrucId = MQMD_STRUC_ID; SET OutputRoot.MQMD.Version = MQMD_CURRENT_VERSION; CREATE FIELD OutputRoot.XML.ComIbmAggregateReplyBody; DECLARE timedout REFERENCE TO OutputRoot.XML.ComIbmAggregateReplyBody; DECLARE reps REFERENCE TO InputRoot.ComIbmAggregateReplyBody; MOVE reps FIRSTCHILD; IF LASTMOVE(reps) THEN -- haverá uma resposta ou nenhuma SET timedout.TimedOut = reps.XML; END IF; RETURN TRUE; END; END MODULE;
Agora, você criou o fluxo de mensagens XML_FlightQueryIn, que é a parte de recepção agregada do fluxo de mensagens XML_FlightQuery. 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.