Mit dem Ausdruck für die Datensatzauswahl kann ein Datensatz in einer Datei ausgewählt und an den restlichen Nachrichtenfluss weitergegeben werden.
Die einzelnen Datensätze werden mit dem Ausdruck verglichen; der erste Datensatz, bei dem die Auswertung den Wert 'true' ergibt, wird an das Ausgangsterminal weitergegeben.
Sie können den Ausdruck auf jeden gültigen XPath-Ausdruck setzen, der einen booleschen Wert zurückgibt. Der Ausdruck wird nicht verwendet, wenn
Gesamte Datei für die Option
Datensatzerkennung ausgewählt ist.
Im Ausdruck verwendete Korrelationsnamen
Die folgenden Korrelationsnamen können im Ausdruck verwendet werden:
- InputRoot und InputLocalEnvironment
- Input-Namen beziehen sich auf die eingehende Nachricht, die über das Eingangsterminal im Knoten eintrifft.
- ResultRoot
- Der Name ResultRoot bezieht sich auf die Nachricht, die anhand des aktuellen Datensatzes in der Datei erstellt wird.
- OutputRoot
- Der Name OutputRoot bezieht sich auf die Nachricht, die weitergegeben wird, wenn die Auswertung des Ausdrucks den Wert 'true' ergibt. Dieser Vorgang ist mit ResultRoot identisch, sofern die Position der Ausgangs- oder Ergebnisdaten nicht geändert wurde, um die in der Datei gefundene Ergebnisnachricht an eine andere Stelle in der abgehenden Nachricht zu kopieren.
- OutputLocalEnvironment (Lokale Umgebung der Ausgabe)
- OutputLocalEnvironment enthält die normale lokale Umgebung, die an das Ausgangsterminal weitergegeben wird und hilfreiche Informationen wie beispielsweise die Nummer des Datensatzes und den Offset des Datensatzes enthält.
Zusammen mit einem gültigen XPath-Ausdruck kann anhand einer beliebigen Kombination aus Daten in diesen Korrelationsnamen festgestellt werden, ob der Datensatz weitergegeben werden soll.
Beispiele
Ausdruck:
$InputRoot/XMLNSC/Invoice/AccountNumber=$ResultRoot/XMLNSC/Data/Key
In diesem Beispiel handelt es sich bei allen Datensätzen um ein gültiges XML-Dokument. Der FileRead-Knoten
liest die einzelnen Datensätze aus der Datei. In der eingehenden Nachricht vergleicht der FileRead-Knoten das Feld '/Data/Key' mit dem Feld '/Invoice/AccountNumber'.
Stimmt der Ausdruck überein, wird er an das Ausgangsterminal weitergegeben.
Ausdruck:
$OutputLocalEnvironment/File/Read/RecordNumber=5
Der FileRead-Knoten liest die einzelnen Datensätze aus der Datei und prüft, ob die Datensatznummer gleich '5' ist. Wenn der fünfte Datensatz erreicht wird, wird dieser weitergegeben.
Abgehende Nachricht anhand einer Kombination aus einer eingehenden Nachricht und einem Datensatz aus einer Datei erstellen
Der
FileRead-Knoten liest einen Datensatz aus einer Datei und verbindet diesen mit der Nachricht, die im Knoten eintrifft. Standardmäßig wird die Nachricht durch den Inhalt des aus der Datei ausgelesenen Datensatzes ersetzt. Über die Eigenschaften in der Ergebnisanzeige können Sie jedoch vorgeben, wie der Inhalt der eingehenden Nachricht und der Dateidatensatz kombiniert werden sollen. Der Knoten hat drei logische Baumstrukturen:
- Eingabe
- Die Eingabenachrichtenkomponente enthält alle Daten in der eingehenden Nachricht und stellt die Basis des weitergegebenen Datensatzes dar.
- Ergebnis
- Die Ergebnisnachrichtenkomponente enthält den aus der Datei ausgelesenen Datensatz.
- Ausgabe
- Die Ausgabenachrichtenkomponente ist das eigentliche Objekt, das aus dem Knoten weitergegeben wird.
Standardmäßig wird die Ausgabenachrichtenkomponente erstellt, indem die Eingabenachrichtenkomponente in die Ausgabenachrichtenkomponente kopiert wird.
Der Datenteil der Ausgabenachrichtenkomponente wird anschließend durch den Inhalt der Ergebnisnachrichtenkomponente ersetzt und 'OutputLocalEnvironment' wird anhand der Informationen darüber, was im Knoten geschehen ist, aktualisiert.
Dieses Verhalten kann über die folgenden Eigenschaften in der Ergebnisanzeige geändert werden:
- Position für Ergebnisdaten
- Gibt an, welcher Teil des gelesenen Datensatzes in die Ausgabenachricht kopiert wird. Standardmäßig wird mit 'Position für Ergebnisdaten' alles aus 'ResultRoot' kopiert; dies kann jedoch dahingehend geändert werden, dass nur ein Teil des Datensatzes kopiert wird.
Beispiel: Mit 'ResultRoot.XMLNSC.Invoice.Name' wird das Namensfeld aus dem ausgewählten Datensatz in die Ausgabenachricht kopiert.
- Position für Ausgabedaten
- Gibt an, an welche Stelle der Datensatz in die abgehende Nachricht kopiert wird.
Standardmäßig wird mit 'Position für Ausgabedaten' alles in 'OutputRoot' kopiert.
Die angegebene Position kann sich im Datenabschnitt der Nachricht (unterhalb von 'ResultRoot') oder in einer anderen Ausgabebaumstruktur wie 'OutputLocalEnvironment' befinden.
Beispiel: Datensatz in ein Feld im Nachrichtenhauptteil kopieren: 'OutputRoot.XMLNSC.Invoice.Data'; Ergebnis in die lokale Umgebung kopieren: 'OutputRoot.Variables.Invoice.data'.
- Lokale Umgebung kopieren
- Die lokale Umgebung wird aus 'InputLocalEnvironment' kopiert.
Wird diese Option nicht ausgewählt, wird 'InputLocalEnvironment' direkt, d. h. ohne Kopieren verwendet. Mit dieser Option können Knoten vor dem FileRead-Knoten Änderungen an der lokalen Umgebung feststellen.
Mit den folgenden Optionen beispielsweise wird das Namensfeld aus einem Datensatz in die abgehende Nachricht kopiert. Der übrige Teil der Ausgabennachricht basiert auf der Eingabenachricht:
Result data location= ResultRoot.XMLNSC.Invoice.Name
Output data location= OutputRoot.XMLNSC.Invoice.Name
Mit den folgenden Optionen wird der Nachrichtenhauptteil aus einem Datensatz in die abgehende lokale Umgebung kopiert. Die Ausgabenachricht ist mit der Eingabenachricht identisch:
Result data location= ResultRoot.XMLNSC.Invoice
Output data location= OutputLocalEnvironment.Variables.Invoice