Mithilfe des Compute-Knotens können Sie Teile einer Eingabenachricht in eine Ausgabenachricht kopieren. Die Ergebnisse einer solchen Kopie hängen vom Typ der verwendeten Ein- und Ausgabe-Parser ab.
Wenn sowohl die Quellen- als auch die Zielnachrichten auf der Stammverzeichnisebene über dieselbe Ordnerstruktur verfügen, wird die Aktion like-parser-copy (Like-Parser-Kopie) ausgeführt. Beispiel:
SET OutputRoot.MQMD = InputRoot.MQMD;
Diese Anweisung kopiert alle untergeordneten Einträge im MQMD-Ordner der Eingabenachricht in den MQMD-Ordner der Ausgabenachricht.
Ein weiteres Beispiel einer Baumstruktur, von der 'like-parser-copy' unterstützt wird, lautet wie folgt:
SET OutputRoot.XMLNS.Data.Account = InputRoot.XMLNS.Customer.Bank.Data;
Falls Sie in der MRM-Domäne eine Eingabenachricht auch in eine Ausgabenachricht umwandeln möchten, können Sie hierfür entweder den Compute- oder den Mapping-Knoten verwenden. Der Mapping-Knoten kann die erforderliche Aktion interpretieren, da er das Format beider Nachrichten kennt. Die Inhaltshilfe im ESQL-Modul für den Compute-Knoten kann ebenfalls die Nachrichtendefinitionen für diese Nachrichten verwenden. Falls sich die Nachrichten nicht in demselben Namespace befinden, müssen Sie den Compute-Knoten verwenden.
Content Assist kann mit Nachrichtenverweisen arbeiten, wenn Sie einen Projektverweis vom Projekt mit der ESQL zum Projekt mit der Nachrichtengruppe einrichten. Informationen zum Einrichten eines Projektverweises finden Sie unter Bibliotheksreferenzen hinzufügen und entfernen.
Wenn sich die Ein- und Ausgabenachrichten nicht in der MRM-Domäne befinden, müssen Sie den Compute-Knoten verwenden und die Nachrichtenstruktur selbst angeben.
Wenn die Quellen- und Zielnachrichten auf der Stammverzeichnisebene unterschiedliche Ordnerstrukturen aufweisen, können Sie keine exakte Kopie der Nachrichtenquelle erstellen. Stattdessen wird von der Aktion unlike-parser-copy die Quellennachricht als eine Gruppe verschachtelter Ordner angezeigt, die von einem Zweig des Typs 'Name/Wert-Paar' abgeschlossen wird. Wird beispielsweise die Nachricht
<Name3><Name31>Value31</Name31>Value32</Name3>
von XML in MRM kopiert, ergibt dies das Namenselement 'Name3' sowie ein Name-Wert-Element namens 'Name31' mit dem Wert 'Value31'. Die zweite Instanz von XML-pcdata (Value32) kann nicht dargestellt werden und wird gelöscht.
Die Aktion 'unlike-parser-copy' durchsucht die Quellenbaumstruktur und kopiert Ordner (auch "Namenselemente" genannt) und Zweige des Typs 'Name/Wert-Paar'. Die übrigen Einträge werden nicht kopiert; dazu gehören auch Elemente, die vom Quellen-Parser als special (speziell) markiert wurden.
Es folgt ein Beispiel einer Baumstruktur, die zur Aktion 'unlike-parser-copy' führt:
SET OutputRoot.DFDL.Data.Account = InputRoot.XMLNSC.Data.Account;
Falls der Algorithmus, der für die Ausführung von 'unlike-parser-copy' verwendet wird, für Ihre Baumstruktur nicht geeignet ist, müssen Sie das Quellenfeld näher qualifizieren, um den Umfang der kopierten Baumstruktur einzuschränken.
Seien Sie vorsichtig, wenn Sie Informationen aus Eingabenachrichten in Ausgabenachrichten kopieren, die sich in anderen Domänen befinden. Sie schreiben möglicherweise einen ESQL-Code, der eine Nachrichtenstruktur oder einen Inhalt erstellt, die bzw. der nicht mit den Regeln des Parsers konform ist, der die Ausgabenachricht verarbeitet. Dies kann dazu führen, dass eine Ausgabenachricht nicht oder mit unerwartetem Inhalt erstellt wird. Falls Sie glauben, dass die Ausgabenachricht, die von einem bestimmten Nachrichtenfluss generiert wird, nicht den korrekten Inhalt enthält oder nicht das erwartete Format aufweist, überprüfen Sie den ESQL-Code, mit dem die Ausgabenachricht erstellt wird, und suchen Sie potenzielle Diskrepanzen bei der Struktur sowie den Feldtypen, -namen und -werten.
-- Nachricht für Ausgabe kopieren, dabei von XMLNSC- in MRM-Domäne verschieben
SET OutputRoot.MRM = InputRoot.XMLNSC.rootElement;
-- Festlegen des CWF-Formats für die Ausgabe durch die MRM-Domäne
SET OutputRoot.Properties.MessageType = '<Name_Nachrichtentyp>';
SET OutputRoot.Properties.MessageSet = '<Name_Nachrichtengruppe>';
SET OutputRoot.Properties.MessageFormat = 'CWF';