WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Instrução PROPAGATE

A instrução PROPAGATE propaga uma mensagem para os nós de recebimento de dados.

Sintaxe

Ler diagrama de sintaxeManter visual do diagrama de sintaxe
>>-PROPAGATE--+--------------------------------------+--+----------------+--+----------+-><
              '-TO--+-TERMINAL--TerminalExpression-+-'  '-MessageSources-'  '-Controls-'   
                    '-LABEL--LabelExpression-------'                                       

WHERE

|--MessageSources =--+-------------------------+--+---------------------+--+-----------------------+--|
                     '-ENVIRONMENT--Expression-'  '-MESSAGE--Expression-'  '-EXCEPTION--Expression-'   

|--Controls =--+-----------------------+--+---------------------+--|
               '-FINALIZE--+-DEFAULT-+-'  '-DELETE--+-DEFAULT-+-'   
                           '-NONE----'              '-NONE----'     

Você pode utilizar a instrução PROPAGATE em nós Compute e Banco de Dados, mas não em nós Filter. As inclusões nesta instrução auxiliam na manipulação de erros - consulte Codificando o ESQL para Tratar Erros.

Cláusula TO TERMINAL
Se a cláusula TO TERMINAL estiver presente, TerminalExpression será avaliado. Se o resultado for do tipo CHARACTER, uma mensagem será propagada para um terminal de acordo com a regra:
'nowhere' : no propagation
'failure' : Failure
 'out'    : Out 
 'out1'   : Out1
 'out2'   : Out2
 'out3'   : Out3
 'out4'   : Out4
Dica: Os nomes de terminal fazem distinção entre maiúsculas e minúsculas, por exemplo, Out1 não corresponde a qualquer terminal.
Se o resultado de TerminalExpression for do tipo INTEGER, uma mensagem será propagada para um terminal de acordo com a regra:
-2 : no propagation
-1 : Failure
 0 : Out 
 1 : Out1
 2 : Out2
 3 : Out3
 4 : Out4

Se o resultado de TerminalExpression não for CHARACTER nem INTEGER, o broker emitirá uma exceção.

Se não houver uma cláusula TO TERMINAL nem uma cláusula TO LABEL, o broker propaga uma mensagem para o terminal de Saída.

Dica: Utilizar valores de caracteres nas expressões de terminal conduzem a um código mais natural e legível. Entretanto, valores inteiros são mais fáceis de serem manipulados em loops e um pouco mais rápidos.
Cláusula TO LABEL
Se a cláusula TO LABEL estiver presente, LabelExpression será avaliado. Se o resultado for do tipo CHARACTER e houver um nó Label com uma propriedade Etiqueta que corresponda a LabelExpression, no mesmo fluxo, o broker propaga uma mensagem para este nó.
Dica: Os rótulos, como terminais, fazem distinção entre maiúsculas e minúsculas. Além disso, observe que, assim como com o roteamento para nós Label, é a propriedade Nome da Etiqueta do nó Label que define o destino, não a própria etiqueta do nó.

Se o resultado de LabelExpression for NULL ou não for do tipo CHARACTER, ou não houver um nó Label correspondente no fluxo, o broker lança uma exceção.

Se não houver uma cláusula TO TERMINAL nem uma cláusula TO LABEL, o broker propaga uma mensagem para o terminal de saída.

Cláusulas MessageSources

As cláusulas MessageSources selecionam as árvores de mensagens a serem propagadas. Esta cláusula é aplicável apenas para o nó Compute (não tem efeito no nó Banco de Dados).

Os valores que podem ser especificados em cláusulas MessageSources são:
ENVIRONMENT : 
  InputLocalEnvironment 
  OutputLocalEnvironment 

Mensagem: 
  InputRoot 
  OutputRoot

ExceptionList : 
  InputExceptionList
  OutputExceptionList

Se não houver a cláusula MessageSources, a propriedade Modo de Cálculo do nó será usada para determinar quais mensagens são propagadas.

Cláusula FINALIZE
A finalização é um processo que corrige cadeias de cabeçalhos e faz a pasta Propriedades corresponder aos cabeçalhos. Se presente, a cláusula FINALIZE permite que a finalização seja controlada.

Esta cláusula é aplicável apenas para o nó Compute (não tem efeito em um nó Banco de Dados).

O nó Compute permite que sua mensagem de saída seja alterada por outros nós (pelos outros nós alterando suas mensagens de entrada). Entretanto, uma mensagem criada por um nó Compute não pode ser alterada por outro nó após:
  • Ser finalizada
  • Ter alcançado qualquer saída ou outro nó que gera um fluxo de bits

Se FINALIZE for configurado como DEFAULT, ou a cláusula FINALIZE estiver ausente, a mensagem de saída (mas não o Ambiente, Ambiente Local ou Lista de Exceções) será finalizada antes da propagação.

Se FINALIZE for configurado como NONE, não ocorrerá finalização. Essa opção é requerida se você quiser preservar e permitir atualizações de toda a árvore de mensagens de saída pelos nós de recebimento de dados no fluxo de mensagens e é utilizada com DELETE NONE conforme descrito na seção a seguir.

Cláusula DELETE
A cláusula DELETE permite a limpeza do ambiente local de saída, da mensagem e da lista de exceções a serem controlados.

A cláusula DELETE é aplicável apenas para o nó Compute (não tem efeito em um nó Banco de Dados).

Se DELETE for configurado como DEFAULT, ou a cláusula DELETE estiver ausente, o ambiente local de saída, a mensagem e a lista de exceções serão todos limpos e suas memórias recuperadas imediatamente após a propagação.

Se DELETE for configurado como NONE, nada será limpo. Utilize DELETE NONE se quiser que os nós de recebimento de dados sejam capazes de ver uma única instância da mensagem de saída do ambiente local e árvores de listas de exceção. cada propagação começa com o conteúdo dessas árvores conforme criado pela propagação anterior em vez de iniciar com as árvores vazias. Se também quiser que esses nós atualizem a árvore de saída, DELETE NONE deve ser utilizado com a opção FINALIZE NONE descrita na seção anterior.

Observe que as árvores de saída finalizadas são limpas, independentemente de quais são propagadas.

A propagação é um processo síncrono. Ou seja, a próxima instrução não será executada até que todo o processamento da mensagem em nós de recebimento de dados tenha sido concluído. Esteja ciente de que este processamento pode lançar exceções e, se estas exceções não forem capturadas, elas impedirão que a instrução seguinte à chamada PROPAGATE seja atingida. Este comportamento pode ser o que a lógica de seu fluxo requer mas, se não for, será possível usar um manipulador para capturar a exceção e executar as ações necessárias. Observe que exceções lançadas do recebimento de dados de uma propagação, se não capturadas, também irão impedir que as ações automáticas finais de um nó Compute ou Banco de Dados (por exemplo, emitindo uma Transação COMMIT configurada como Commit) ocorram.

Se você estiver utilizando a instrução PROPAGATE em seu nó, é importante utilizar um RETURN FALSE; para evitar a propagação automática da mensagem para o próximo nó no fluxo de mensagens.

DECLARE i INTEGER 1;
DECLARE count INTEGER;
SET count = CARDINALITY(InputRoot.XMLNS.Invoice.Purchases."Item"[])

WHILE i <= count DO 
  --utilize o procedimento gerado pelas ferramentas padrão para copiar cabeçalhos da mensagem 
  CALL CopyMessageHeaders(); 
  SET OutputRoot.XMLNS.BookSold.Item = InputRoot.XMLNS.Invoice.Purchases.Item[i]; 
  PROPAGATE; 
  SET i = i + 1; 
END WHILE; 
RETURN FALSE;

As mensagens a seguir são produzidas no terminal de Saída pela instrução PROPAGATE:

<BookSold>
 <Item>
  <Title Category="Computer" Form="Paperback" Edition="2">The XML Companion </Title>
  <ISBN>0201674866</ISBN>
  <Author>Neil Bradley</Author>
  <Publisher>Addison-Wesley</Publisher>
  <PublishDate>October 1999</PublishDate>
  <UnitPrice>27.95</UnitPrice>
  <Quantity>2</Quantity>
 </Item>
</BookSold>
<BookSold>
 <Item>
  <Title Category="Computer" Form="Paperback" Edition="2">A Complete Guide to 
   DB2 Universal Database</Title>
  <ISBN>1558604820</ISBN>
  <Author>Don Chamberlin</Author>
  <Publisher>Morgan Kaufmann Publishers</Publisher>
  <PublishDate>April 1998</PublishDate>
  <UnitPrice>42.95</UnitPrice>
  <Quantity>1</Quantity>
 </Item>
</BookSold>
<BookSold>
 <Item>
  <Title Category="Computer" Form="Hardcover" Edition="0">JAVA 2 Developers
  Handbook</Title>
  <ISBN>0782121799</ISBN>
  <Author>Phillip Heller, Simon Roberts </Author>
  <Publisher>Sybex, Inc.</Publisher>
  <PublishDate>September 1998</PublishDate>
<UnitPrice>59.99</UnitPrice>
  <Quantity>1</Quantity>
 </Item>
</BookSold>
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

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

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:29:54


Tópico de ReferênciaTópico de Referência | Versão 8.0.0.5 | ak05110_