É possível usar a instrução PROPAGATE para gerar mensagens de saída múltiplas no nó Compute. As mensagens de saída que você gera podem ter o mesmo conteúdo ou conteúdo diferente. Também é possível direcionar mensagens de saída para qualquer dos quatro terminais de saída alternados do nó Compute ou para um nó Label.
Por exemplo, para criar três cópias da mensagem de entrada recebida pelo nó Compute e enviar uma para o terminal de Saída padrão do nó Compute, um para o primeiro terminal Out1 alternado do nó Compute e um para o nó ThirdCopy do Label, codifique o seguinte ESQL:
SET OutputRoot = InputRoot;
PROPAGATE;
SET OutputRoot = InputRoot;
PROPAGATE TO TERMINAL 'out1';
SET OutputRoot = InputRoot;
PROPAGATE TO LABEL 'ThirdCopy';
SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
PROPAGATE TO TERMINAL 'out1' DELETE NONE;
PROPAGATE TO LABEL 'ThirdCopy';
Se você não inicializar o buffer de saída, será gerada uma mensagem vazia e o fluxo de mensagens detectará um erro e emitirá uma exceção.
Assegure também que todos os cabeçalhos de mensagem requeridos foram copiados para o buffer da mensagem de saída para cada mensagem de saída propagada.
Se desejar modificar o conteúdo da mensagem de saída antes de propagar cada mensagem, codifique o ESQL apropriado para fazer as alterações desejadas antes de codificar a instrução PROPAGATE.
Se você configurar o conteúdo da última mensagem de saída que você deseja gerar e propagá-la como a ação final do nó Compute, não é necessário incluir a instrução final PROPAGATE. A ação padrão do nó Compute é propagar o conteúdo do buffer de saída quando ele termina. Isso é implementado pela instrução RETURN TRUE, incluída como instrução final na estrutura do módulo.
Por exemplo, para gerar três cópias da mensagem de entrada e não executar mais nenhuma ação, inclua esse código imediatamente antes da instrução RETURN TRUE:
SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
PROPAGATE DELETE NONE;
Como alternativa, você pode modificar o comportamento padrão do nó alterando RETURN TRUE para RETURN FALSE:
SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
PROPAGATE DELETE NONE;
PROPAGATE;
RETURN FALSE;
São geradas três mensagens de saída pelas três instruções PROPAGATE. A instrução RETURN FALSE final faz com que o nó finalize mas não propague uma mensagem de saída final. Observe que a instrução final PROPAGATE não inclui a cláusula DELETE NONE, porque o nó deve liberar a memória nesse estágio.