Eine vorhandene Nachricht mithilfe des .NETCompute-Knotens kopieren.
Transformationsknoten wie beispielsweise der .NETCompute-Knoten können die logische Baumstruktur ändern, die von einem Knoten zum nächsten durch einen Nachrichtenfluss geleitet wird. Diese Baumstruktur oder Nachrichtenassemblierung enthält vier Baumstrukturen für die Darstellung der Nachricht, Umgebung, lokalen Umgebung und Ausnahmeliste. Wenn Sie Daten aus dem Eingangsterminal des .NETCompute-Knotens an das Ausgangsterminal senden möchten, muss die Klasse, die dem Knoten zugeordnet ist, eine Auswertungsmethode enthalten, die entweder die Eingabenachrichtenassemblierung weitergibt oder eine Ausgabenachrichtenassemblierung erstellt. Wenn Sie eine Nachricht aus dem Eingangsterminal in das Ausgangsterminal kopieren möchten, geben Sie die gesamte Eingabenachrichtenassemblierung weiter. Der Schablonencode, der für Sie bei der Erstellung einer FilterNode-Klasse in der Programmiersprache C# bereitgestellt wird, gibt die Nachricht weiter. Der folgende Code veranschaulicht die Übergabe der inputAssembly an die Propagate-Methode:
public override void Evaluate(NBMessageAssembly inputAssembly)
{
NBOutputTerminal outTerminal = OutputTerminal("Out");
NBMessage inputMessage = inputAssembly.Message;
NBElement root = inputMessage.RootElement;
#region UserCode
// Fügen Sie den Benutzercode in diesem Bereich hinzu, um die Nachricht zu filtern
#endregion UserCode
// Ändern Sie Folgendes, wenn die Nachricht nicht an das Ausgabeterminal weitergegeben wird
outTerminal.Propagate(inputAssembly);
}
Wenn Sie die Nachricht kopieren und anschließend auch im .NETCompute-Knoten aktualisieren möchten, ist die Verwendung der CreateNode-Schablone vorzuziehen. Diese Schablone erstellt eine Ausgabeassemblierung. Sie können die Eingabeassemblierung in diese Ausgabeassemblierung kopieren, indem Sie lediglich eine Codezeile im Bereich UserCode hinzufügen:
public override void Evaluate(NBMessageAssembly inputAssembly)
{
NBOutputTerminal outTerminal = OutputTerminal("out");
NBMessage inputMessage = inputAssembly.Message;
// Erstellen Sie eine neue leere Nachricht, die auf jeden Fall nach der Verwendung verworfen werden muss
using (NBMessage outputMessage = new NBMessage())
{
NBMessageAssembly outAssembly = new NBMessageAssembly(inputAssembly, outputMessage);
NBElement inputRoot = inputMessage.RootElement;
NBElement outputRoot = outputMessage.RootElement;
// Kopieren Sie optional Nachrichtenheader, entfernen Sie diese, falls sie nicht benötigt werden
CopyMessageHeaders(inputRoot, outputRoot);
#region UserCode
// Fügen Sie den Benutzercode in diesem Bereich hinzu, um eine neue Ausgabenachricht zu erstellen
outputRoot.AddLastChild(inputRoot.LastChild);
#endregion UserCode
// Ändern Sie Folgendes, wenn die Nachricht nicht an das Ausgabeterminal weitergegeben wird
outTerminal.Propagate(outAssembly);
}
}