Copie uma mensagem existente utilizando o nó .NETCompute.
Nós de transformação, como o nó .NETCompute, podem modificar a estrutura em árvore lógica que é passada por meio de um fluxo de mensagens de um nó para o seguinte. Essa estrutura em árvore, ou conjunto de mensagens, contém quatro árvores para representar a mensagem, o ambiente, o ambiente local e a lista de exceções. Para enviar dados do terminal de entrada do nó .NETCompute para o terminal de saída, a classe associada ao nó deve conter um método Evaluate que propague o conjunto de mensagens de entrada ou crie um conjunto de mensagens de saída. Para copiar uma mensagem do terminal de entrada para o terminal de saída, propague o conjunto de mensagem de entrada inteiro. O código de modelo fornecido a você durante a criação de uma classe FilterNode em C# propaga a mensagem. Como é possível ver no código a seguir, o inputAssembly é passado para o método Propagate:
public override void Evaluate(NBMessageAssembly inputAssembly)
{
NBOutputTerminal outTerminal = OutputTerminal("Out");
NBMessage inputMessage = inputAssembly.Message;
NBElement root = inputMessage.RootElement;
#region UserCode
// Inclua código do usuário nesta região para filtrar a mensagem
#endregion UserCode
// Altere o seguinte se não for propagar a mensagem para o terminal de 'Saída'
outTerminal.Propagate(inputAssembly);
}
Se você planeja copiar a mensagem e, em seguida, também atualizá-la no nó .NETCompute, é melhor usar o modelo CreateNode. Esse modelo cria um conjunto de saída. Copie o conjunto de entrada para esse conjunto de saída incluindo apenas uma linha de código na região UserCode:
public override void Evaluate(NBMessageAssembly inputAssembly)
{
NBOutputTerminal outTerminal = OutputTerminal("out");
NBMessage inputMessage = inputAssembly.Message;
// Crie uma nova mensagem vazia, assegurando-se de que seja descartada após o uso
using (NBMessage outputMessage = new NBMessage())
{
NBMessageAssembly outAssembly = new NBMessageAssembly(inputAssembly, outputMessage);
NBElement inputRoot = inputMessage.RootElement;
NBElement outputRoot = outputMessage.RootElement;
// Copie, opcionalmente, os cabeçalhos das mensagens; remova-os se não forem necessários
CopyMessageHeaders(inputRoot, outputRoot);
#region UserCode
// Inclua o código do usuário nessa região para criar uma nova mensagem de saída
outputRoot.AddLastChild(inputRoot.LastChild);
#endregion UserCode
// Altere o seguinte se não for propagar a mensagem para o terminal de 'Saída'
outTerminal.Propagate(outAssembly);
}
}