A amostra Processamento de Tempo Limite demonstra o uso da função de tempo limite, conforme fornecida pelos nós Timeout Control e Timeout Notification. Você pode utilizar esses nós para conduzir fluxos de mensagens automaticamente em intervalos regulares - eles são conhecidos como tempos limites automáticos. Ou você pode fornecer tempos limites controlados para aplicativos em cada mensagem.
Você pode executar tempos limites automáticos com um único nó Timeout Notification executando em modo Automático. E deve fornecer um intervalo (em segundos) como um parâmetro de configuração para determinar o período entre chamadas de fluxos adjacentes. Os usos de tempos limites automáticos incluem:
Você pode executar tempos limites controlados com um ou mais nós Timeout Control em série juntamente com um nó Timeout Notification. E necessário associar os nós fornecendo o mesmo Identificador como um parâmetro de configuração. (Há um relacionamento muitos-para-um entre os nós Timeout Control e Timeout Notification - em outras palavras, um único nó Timeout Notification processará os pedidos de tempo limite de todos os nós Timeout Control com um Identificador correspondente). Os nós Timeout Control recebem mensagens que chegam contendo pedidos de tempo limite de formato fixo que são, então, validados e armazenados e processados pelos nós Timeout Notification quando expirados.
Um pedido de tempo limite tem um identificador exclusivo dentro do escopo dos nós Timeout que o estão processando. Não é o mesmo Identificador utilizado para associar nós Timeout. Um pedido de tempo limite baseia-se em uma hora de início, um intervalo e uma contagem. Você pode configurar pedidos de tempo limite para que iniciem em qualquer ponto no futuro e executar ping uma ou várias vezes com uma contagem de 1 ou mais. Se a contagem for maior que 1, os pings adjacentes serão separados pelo número de segundos fornecidos no intervalo.
A amostra Processamento de Tempo Limite contém dois fluxos de mensagens: AutomaticTimeout e ControlledTimeout.
A figura mostra o uso de um nó Timeout Notification no nó Automatic:
Esse fluxo é definido para executar ping a cada dez segundos enquanto o intermediário está em execução.
A figura mostra como utilizar os nós Timeout Control e Timeout Notification em conjunto. Esse único arquivo .msgflow contém dois fluxos de mensagens: um para solicitar os tempos limites e um para processá-los.
Esses fluxos são conduzidos pelas mensagens de teste descritas abaixo, que contêm pedidos de tempo limite e são processadas pelos nós TimeoutAll e TimeoutFragment Timeout Control. Esses nós validam os pedidos de tempo limite e armazenam as mensagens do nó Controlled Timeout Notification no segundo fluxo para processamento conforme elas chegam.
O nó TimeoutAll armazena a mensagem que chega inteira e o nó TimeoutFragment armazena uma parte definida da mensagem que chega. Esse comportamento é controlado pelas propriedades na guia Mensagem do nó Timeout Control.
As quatro mensagens de teste utilizadas para conduzir o fluxo de mensagens ControlledTimeout são mensagens XML diretas que contêm detalhes da fatura de um cliente. O seguinte XML é um exemplo de uma das quatro mensagens:
<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>
O campo <Pedido_de_Tempo_Limite> incorporado no <Cabeçalho> é utilizado pelo nó Timeout Control para determinar que o tempo limite solicitado seja processado pelo nó Timeout Notification. Nesse caso, a data e a hora de início não são definidas, portanto, elas precisam utilizar os valores padrão de TODAY e NOW. As informações especificadas no campo <Pedido_de_Tempo_Limite> solicitam que o tempo limite deve executar ping dez vezes, dez segundo à parte, antes da conclusão.
Duas das mensagens fornecidas contêm pedidos de tempo limite que definem tempos limites, um para executar ping dez vezes e encerrar, o outro para continuar indefinidamente. As outras duas mensagens de teste contêm pedidos de cancelamento para os dois pedidos de tempo limite e são processadas da mesma maneira.