WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Calcular un intervalo de tiempo

Puede usar ESQL para calcular el intervalo de tiempo entre dos sucesos, así como para establecer un temporizador que se deberá desencadenar después de un intervalo especificado.

Este ejemplo ESQL calcula el intervalo de tiempo entre un mensaje WebSphere MQ de entrada que se coloca en la cola de entrada y la hora en que se procesa en el nodo Compute actual.

(Cuando efectúa una llamada a una función CURRENT_ datetime, el valor que se devuelve es idéntico al valor que devuelve otra llamada del mismo nodo. Esto garantiza que puede utilizar la función de forma coherente en un solo nodo.)

 CALL CopyMessageHeaders();
 Declare PutTime INTERVAL;

 SET PutTime = (CURRENT_GMTTIME - InputRoot.MQMD.PutTime) MINUTE TO SECOND;
 
 SET OutputRoot.XMLNS.Test.PutTime = PutTime;

El mensaje de salida tiene el formato (aunque los valores reales varían):

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

La siguiente sección de código establece un temporizador, que se debe desencadenar después de un intervalo especificado a partir del inicio del proceso, a fin de comprobar que el proceso se ha completado. Si el proceso no se ha completado una vez que ha transcurrido el tiempo, es posible que la activación del temporizador desencadene, por ejemplo, algún proceso de recuperación.

El campo StartTime del mensaje de petición de tiempo de espera se establece en la hora actual más el periodo de retardo permitido, definido por una propiedad definida por el usuario en el flujo. (El administrador ha establecido la propiedad definida por el usuario en una serie de caracteres con el formato "HH:MM:SS".)

DECLARE StartDelyIntervalStr EXTERNAL CHARACTER '01:15:05';

	CREATE PROCEDURE ValidateTimeoutRequest() BEGIN

		-- Establecer el periodo de tiempo de espera
		DECLARE timeoutStartTimeRef REFERENCE TO 
          OutputRoot.XMLNSC.Envelope.Header.TimeoutRequest.StartTime;
		IF LASTMOVE(timeoutStartTimeRef)
			THEN
			-- Ya establecido
		ELSE
			-- Establecerlo a partir de UDP StartDelyIntervalStr 
			DECLARE startAtTime TIME CURRENT_TIME 
          + CAST(StartDelyIntervalStr AS INTERVAL HOUR TO SECOND);
						
			-- Convertir "TIME 'hh.mm.ss.fff'" en el formato hh.mm.ss 
       -- necesario en el 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;
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Última actualización:
        
        Última actualización: 2015-02-28 16:58:25


Tema de tareaTema de tarea | Versión 8.0.0.5 | ac16755_