Calculando um Intervalo de Tempo

Esse exemplo de ESQL calcula o intervalo de tempo desde quando uma mensagem de entrada do WebSphere MQ é colocada na fila de entrada até o momento em que ela é processada no nó Compute atual.

(Quando você faz uma chamada para a função de data/hora CURRENT_, o valor retornado é idêntico ao valor retornado a outra chamada no mesmo nó. Isso assegura que você possa utilizar a função consistentemente dentro de um único nó.)

CALL CopyMessageHeaders();
Declare PutTime INTERVAL;
SET PutTime = (CURRENT_GMTTIME - InputRoot.MQMD.PutTime) MINUTE TO SECOND;
SET OutputRoot.XML.Test.PutTime = PutTime;

A mensagem de saída possui o formato (embora os valores reais sejam variados):

<Test>
<PutTime>INTERVAL &apos;1:21.862&apos; MINUTE TO SECOND</PutTime>
</Test>

O trecho de código a seguir configura um cronômetro, a ser acionado após um intervalo especificado do início do processamento, para verificar se o processamento foi concluído. Se o processamento não tiver sido concluído dentro do tempo decorrido, o disparo do cronômetro pode, por exemplo, acionar algum processamento de recuperação.

O campo StartTime da mensagem de pedido de tempo limite está configurado para a hora atual, além do período de retardo permitido, que é definido por uma propriedade definida pelo usuário no fluxo. (A propriedade definida pelo usuário foi configurada como uma cadeia no formato "HH:MM:SS" pelo administrador).

DECLARE StartDelyIntervalStr EXTERNAL CHARACTER '01:15:05';
CREATE PROCEDURE ValidateTimeoutRequest() BEGIN
		-- Configurar o tempo limite
		DECLARE timeoutStartTimeRef REFERENCE TO
OutputRoot.XMLNSC.Envelope.Header.TimeoutRequest.StartTime;
IF LASTMOVE(timeoutStartTimeRef)
THEN
			-- Já configurado
       ELSE
			-- Configure-o a partir da UDP StartDelyIntervalStr
			DECLARE startAtTime TIME CURRENT_TIME
+ CAST(StartDelyIntervalStr AS INTERVAL HOUR TO SECOND);
			-- Converter "TIME 'hh.mm.ss.fff'" para o formato hh.mm.ss
-- necessário no campo StartTime
			DECLARE startAtTimeStr CHAR;
			SET startAtTimeStr = startAtTime;
SET startAtTimeStr = SUBSTRING(startAtTimeStr FROM 7 FOR 8);
SET OutputRoot.XMLNSC.Envelope.Header.TimeoutRequest.StartTime
= startAtTimeStr;
END IF;
  END;
Conceitos relacionados
Visão Geral de Fluxos de Mensagens
Visão Geral de Mapeamentos de Mensagens
Tarefas relacionadas
Desenvolvendo Fluxos de Mensagens
Desenvolvendo ESQL
Utilizando os Operadores Numéricos com Valores de Data/Hora
Referências relacionadas
Nós Internos
Referência de ESQL
Tipo de Dados ESQL INTERVAL
Operadores Numéricos ESQL
Regras para Precedência de Operadores ESQL
Função CAST
Notices | Trademarks | Downloads | Library | Support | Feedback
Copyright IBM Corporation 1999, 2006 Last updated: 5월 25, 2006
ac16755_