O fim de uma sequência de mensagens é determinado pela propriedade
Definição do Fim da Sequência nos nós
Resequence e Seqüência.
Utilizando um nó Resequence
Quando você usar o nó Resequence para reordenar mensagens em um
fluxo de mensagens, use a propriedade Definição de Fim da Sequência
no nó Resequence para definir como a sequência da mensagem
reordenada terminará. É possível especificar o fim do número de sequência no nó
Resequence de uma das seguintes maneiras:
- Como um número literal
- Selecione Literal para especificar um número de sequência
literal como o fim da sequência. Este valor pode ser qualquer valor numérico positivo ou negativo no
intervalo -9223372036854775807 a 9223372036854775807. Quando uma
mensagem com o número de sequência especificado chega, o grupo de sequências é fechado. Se houver qualquer
mensagem ausente na sequência, o grupo de sequências permanece aberto pelo período de tempo especificado pela
propriedade Tempo Limite da Mensagem Ausente.
Por exemplo,
assuma que você possui um nó do
Resequence com as seguintes
propriedades:
- Propriedade Caminho para o número de sequência com um valor
igual a /doc/seq
- Propriedade Caminho para o identificador do grupo de sequências
com um valor igual a /doc/grp
- Propriedade Definição de Início da Sequência configurada como
Literal com um valor igual a
0.
- Propriedade Definição de Fim da Sequência configurada como
Literal com um valor igual a
6. Este valor significa que o grupo será fechado quando uma
mensagem com o número de sequência 6 for recebida e quando todas as mensagens anteriores na sequência tiverem
sido recebidas (ou o tempo limite de mensagem ausente expirar).
As mensagens a seguir são
recebidas pelo nó
Resequence:
<doc><grp>a<grp><seq>6</seq></doc>
<doc><grp>a<grp><seq>5</seq></doc>
<doc><grp>a<grp><seq>4</seq></doc>
<doc><grp>a<grp><seq>3</seq></doc>
<doc><grp>a<grp><seq>2</seq></doc>
<doc><grp>a<grp><seq>1</seq></doc>
<doc><grp>a<grp><seq>0</seq></doc>
As mensagens a
seguir são propagadas ao terminal Out:
<doc><grp>a<grp><seq>0</seq></doc>
<doc><grp>a<grp><seq>1</seq></doc>
<doc><grp>a<grp><seq>2</seq></doc>
<doc><grp>a<grp><seq>3</seq></doc>
<doc><grp>a<grp><seq>4</seq></doc>
<doc><grp>a<grp><seq>5</seq></doc>
<doc><grp>a<grp><seq>6</seq></doc>
Quando o grupo de
sequências tiver fechado, qualquer mensagem adicional que chegar no nó para esse grupo de sequências será
processada como parte de uma nova instância do grupo.
- Por um tempo limite automático
- Selecione Automático e especifique a duração de tempo (em
segundos) durante a qual o nó aguarda que novas mensagens cheguem em uma fila vazia. Toda vez que a fila de
mensagens aguardando para serem propagadas estiver vazia, o nó
Resequence iniciará um cronômetro, que expira após o número de
segundos especificado. Se nenhuma nova mensagem chegar dentro do tempo especificado, o grupo de sequências
será fechado e qualquer nova mensagem que chegar subsequentemente será tratada como parte de um novo grupo. Se novas mensagens chegarem no nó dentro do limite de tempo especificado, o cronômetro será reconfigurado.
- Usando conjunto de predicados no nó Resequence
- Selecione Predicado e especifique uma expressão XPath para
calcular se a mensagem é a última na sequência. O predicado é avaliado como True ou False e as mensagens
continuam sendo coletadas enquanto a expressão é avaliada como False. Quando a expressão de uma mensagem é
avaliada como True, isto indica que a mensagem é a última na sequência e o grupo de sequências está fechado. Entretanto, se mensagens anteriores estiverem ausentes no grupo de sequências, o grupo de sequências
permanecerá aberto pelo período de tempo especificado pela propriedade Tempo
Limite de Mensagem Ausente.
Quando o grupo de sequências tiver fechado, qualquer mensagem
adicional que chegar no nó para esse grupo de sequências será processada como parte de uma nova instância do
grupo.
Geralmente, a expressão XPath é avaliada como um Booleano; entretanto, se outros tipos de dados
forem retornados, o predicado será determinado da seguinte maneira:
Tabela 1. Tipo de dado retornado |
Verdadeiro |
Falso |
Booleana |
Verdadeiro |
Falso |
Numeric |
Qualquer valor diferente de zero |
0 ou 0.0 |
Cadeia |
Qualquer cadeia correspondente a true (sem distinção entre maiúsculas
e minúsculas) |
Qualquer cadeia não correspondente a true (sem distinção entre
maiúsculas e minúsculas) |
Conjunto de Nós |
Nunca |
Sempre |
Quando uma mensagem avalia a
expressão como True (e é, portanto, identificada como a última mensagem na sequência), o nó verifica se a
mensagem possui o número de sequência mais alto coletado até esse ponto. Se forem localizadas mensagens com
números de sequência maiores, uma exceção será lançada.
Utilizando um nó Seqüência
Quando você usar o nó Seqüência para incluir números de
sequência em mensagens, use a propriedade Definição de Fim da
Sequência para definir como a sequência da mensagem terminará. O nó
Seqüência aloca um número de sequência monotonicamente crescente
para cada mensagem de entrada que chega no nó, terminando com o número de sequência que você define na
propriedade Definição de Fim da Sequência.
É possível especificar o fim do número de sequência no nó
Seqüência de uma das seguintes maneiras:
- Como um número literal
- Selecione Literal e especifique um valor numérico positivo
ou negativo como o fim do número de sequência (por exemplo, 15). O valor deve estar no intervalo
-9223372036854775807 a 9223372036854775807. A sequência monotonicamente crescente
termina quando atinge o fim do número de sequência especificado por esta propriedade.
- Usando conjunto de predicados no nó Seqüência
- Selecione Predicado para especificar se a sequência é
finalizada quando a expressão XPath é avaliada como True. Para obter informações adicionais, consulte a tabela acima.
- Por um tempo limite automático
- Selecione Automático e especifique a duração de tempo (em
segundos) durante a qual o nó aguarda novas mensagens após uma mensagem para o grupo de sequências ter sido
propagada.
Se uma nova mensagem chegar, o cronômetro será cancelado e reconfigurado quando a mensagem for propagada. Se
nenhuma nova mensagem chegar dentro do tempo especificado, o grupo de sequências será fechado e qualquer nova
mensagem que chegar subsequentemente será tratada como parte de um novo grupo.