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:
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 |
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 |
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 |
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.) |
-- ********************************************************************************* -- * 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;