Sobre a Amostra Processamento de Tempo Limite

A amostra Timeout Processing demonstra o uso da função de tempo limite, conforme fornecido pelos nós TimeoutControl e TimeoutNotification. Esses nós podem ser usados para orientar fluxos de mensagens automaticamente em intervalos regulares, que são conhecidos como tempos limites automáticos, ou é possível fornecer tempos limites controlados para aplicativos por mensagem.

É possível realizar tempos limites automáticos com um único nó TimeoutNotification que está em execução no 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:

É possível realizar tempos limites controlados com um ou mais nós TimeoutControl em tandem com um nó TimeoutNotification. E necessário associar os nós fornecendo o mesmo Identificador como um parâmetro de configuração. (Um relacionamento de muitos para um existe entre os nós TimeoutControl e TimeoutNotification, ou seja, um único nó TimeoutNotification processa os pedidos de tempo limite de todos os nós TimeoutControl com um Identificador correspondente.) Os nós TimeoutControl recebem mensagens recebidas que contêm pedidos de tempo limite com formato fixo, que são, então, validados e armazenados e processados pelos nós TimeoutNotification quando tiverem expirado.

Um pedido de tempo limite tem um identificador exclusivo no escopo dos nós Timeout que estão processando o mesmo. Não é o mesmo que o Identificador usado para associar nós Timeout juntos. Um pedido de tempo limite baseia-se em uma hora de início, um intervalo e uma contagem. É possível configurar pedidos de tempo limite para iniciar em qualquer ponto futuro e para efetuar ping uma ou muitas vezes com uma contagem igual a 1 ou mais. Se a contagem for maior que 1, os pings adjacentes são separados pelo número de segundos que são fornecidos no intervalo.

A amostra Processamento de Tempo Limite contém dois fluxos de mensagens: AutomaticTimeout e ControlledTimeout.

Fluxo de Mensagens AutomaticTimeout

O diagrama mostra como usar um nó TimeoutNotification no modo Automático:

Fluxo Tempo Limite Automático

Esse fluxo é definido para executar ping a cada dez segundos enquanto o intermediário está em execução.

Fluxo de Mensagens ControlledTimeout

O diagrama mostra como usar os nós TimeoutControl e TimeoutNotification juntos. Esse único arquivo .msgflow contém dois fluxos de mensagens: um para solicitar os tempos limites e um para processá-los.

Fluxo Tempo Limite Controlado

Esses fluxos são orientados pelas mensagens de teste, que são descritas posteriormente neste tópico, que contêm pedidos de tempo limite e são processadas pelos nós TimeoutAll e TimeoutFragment TimeoutControl. Esses nós validam os pedidos de tempo limite e armazenam as mensagens para o nó Controlled TimeoutNotification no segundo fluxo para processá-las à medida que 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 da Mensagem do nó TimeoutControl.

Mensagens de Teste

As quatro mensagens de teste que são usadas para orientar o fluxo de mensagens ControlledTimeout são mensagens XML diretas que contêm detalhes de fatura para 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 TimeoutRequest integrado ao Cabeçalho é usado pelo nó TimeoutControl para determinar o tempo limite solicitado a ser processado pelo nó TimeoutNotification. Nesse caso, a data e hora iniciais não são definidas, portanto, elas usam os valores padrão TODAY e NOW. As informações especificadas no campo TimeoutRequest solicitam que o tempo limite efetue ping dez vezes, a cada dez segundos, 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.

Voltar para Home da Amostra