El ejemplo Proceso de tiempo de espera excedido muestra el uso de la función de tiempo de espera excedido proporcionada por los nodos TimeoutControl y TimeoutNotification. Puede utilizar estos nodos para dirigir flujos de mensajes automáticamente a intervalos regulares, que se conocen como tiempos de espera excedidos automáticos, o puede proporcionar tiempos de espera excedidos controlados para aplicaciones en una base de mensajes.
Puede llevar a cabo tiempos de espera excedidos automáticos con un solo nodo TimeoutNotification que se ejecute en modalidad Automática. Ha de proporcionar un intervalo (en segundos) como parámetro de configuración para determinar el periodo entre invocaciones de flujos adyacentes. Los tiempos de espera excedidos automáticos incluyen:
Se pueden crear tiempos de espera excedidos con uno o más nodos TimeoutControl junto con un nodo TimeoutNotification. Es necesario asociar los nodos proporcionando el mismo identificador (Identifier) que en el parámetro de la configuración. (Hay una relación de muchos a uno entre los nodos TimeoutControl y TimeoutNotification, es decir un solo nodo TimeoutNotification procesa la solicitud de tiempo de espera excedido de todos los nodos TimeoutControl con un identificador que coincida.) Los nodos TimeoutControl reciben mensajes entrantes que contienen solicitudes de tiempo de espera en formato fijo, que seguidamente se validan y se almacenan, y los procesan los nodos TimeoutNotification cuando han caducado.
Una solicitud de tiempo de espera excedido tiene un identificador exclusivo dentro del ámbito de los nodos Timeout que la procesan. No es igual que el identificador que se utiliza para asociar nodos Timeout juntos. Una solicitud de tiempo de espera excedido se basa en una hora de inicio, un intervalo, y una cuenta. Las solicitudes de tiempo de espera excedido pueden configurarse para que se inicien en cualquier punto futuro, y para hacer ping una o más veces con una cuenta de 1 o más. Si la cuenta es mayor que 1, los ping consecutivos están separados por el número de segundos que se proporcionan en el intervalo.
El ejemplo Proceso de tiempo de espera excedido contiene dos flujos de mensajes: AutomaticTimeout y ControlledTimeout.
El diagrama muestra cómo utilizar un nodo TimeoutNotification en modalidad Automática:
Este flujo se establece para hacer ping una vez cada diez segundos mientras el nodo de integración se está ejecutando.
El diagrama muestra cómo utilizar los nodos TimeoutControl y TimeoutNotification juntos. Este único archivo . msgflow contiene dos flujos de mensajes: uno para solicitar los tiempos de espera excedidos y otro para procesarlos.
Estos flujos están dirigidos por los mensajes de prueba, que se describen más adelante en este tema, que contienen solicitudes de tiempo de espera excedido y que son procesados por los nodos TimeoutAll y TimeoutFragment TimeoutControl. Estos nodos validan las solicitudes de tiempo de espera y almacenan los mensajes para el nodo Controlled TimeoutNotification en el segundo flujo para procesarlos a medida que llegan.
El nodo TimeoutAll almacena todo el mensaje entrante y el nodo TimeoutFragment almacena una parte definida del mensaje entrante. Este comportamiento lo controlan las propiedades Mensaje propiedades del nodo TimeoutControl.
Los cuatro mensajes de prueba que se utilizan para dirigir el flujo de mensajes ControlledTimeout son mensajes XML sencillos que contienen detalles de una factura para un cliente. El siguiente XML es un ejemplo de uno de los cuatro mensajes:
<SaleEnvelope>
<Header>
<SaleListCount>1</SaleListCount>
<TimeoutRequest>
<Action>SET</Action>
<Identifier>tentimes</Identifier>
<Count>10</Count>
<Interval>10</Interval>
<AllowOverwrite>FALSE</AllowOverwrite>
</TimeoutRequest>
</Header>
<SaleList>
<Invoice>
<Initial>K</Initial><Initial>A</Initial>
<Surname>Braithwaite</Surname>
<Item>
<Code>00</Code><Code>01</Code><Code>02</Code>
<Description>Twister</Description>
<Category>Games</Category>
<Price>00.30</Price>
<Quantity>01</Quantity>
</Item>
<Item>
<Code>02</Code><Code>03</Code><Code>01</Code>
<Description>The Times Newspaper</Description>
<Category>Books and Media</Category>
<Price>00.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>00.50</Balance>
<Currency>Sterling</Currency>
</Invoice>
<Invoice>
<Initial>T</Initial><Initial>J</Initial>
<Surname>Dunnwin</Surname>
<Item>
<Code>04</Code><Code>05</Code><Code>01</Code>
<Description>The Origin of Species</Description>
<Category>Books and Media</Category>
<Price>22.34</Price>
<Quantity>02</Quantity>
</Item>
<Item>
<Code>06</Code><Code>07</Code><Code>01</Code>
<Description>Microscope</Description>
<Category>Miscellaneous</Category>
<Price>36.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>81.84</Balance>
<Currency>Euros</Currency>
</Invoice>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>
El campo TimeoutRequest incorporado en la Cabecera lo utiliza el nodo TimeoutControl para determinar el tiempo de espera solicitado para que lo procese el nodo TimeoutNotification. En este caso, la fecha de inicio y la hora no están definidos, por lo tanto, toman los valores predeterminados TODAY y NOW. La información especificada en el campo TimeoutRequest solicita que el tiempo de espera emita un ping diez veces, cada diez segundos, antes de terminar.
Dos de los mensajes suministrados contienen solicitudes de tiempo de espera excedido que establecen tiempos de espera excedidos, uno para que emita un sonido diez veces y termine y el otro para que continúe indefinidamente. Los dos otros mensajes de prueba contienen solicitudes de cancelación para las dos solicitudes de tiempo de espera excedido y se procesan del mismo modo.