Zum Inhalt

Ausdrucksauswertung und Lebensdauer

DATAMIMIC unterscheidet literale Attributwerte von zwei Ausdrucksformen, die jeweils den vollständigen Wert einnehmen. Die Klammern gehören zur Attributauflösung. Ein reguläres script="..." enthält bereits einen Ausdruck und benötigt kein weiteres Klammerpaar.

Form Auswertung Verwende sie, wenn
value Literal Der Wert fester Text oder eine feste Zahl ist.
{expression} In der aktiven Datensatziteration gecacht Wiederholte Zugriffe innerhalb einer Iteration dasselbe Ergebnis sehen müssen.
{{expression}} Bei jedem Zugriff neu Ein unterstütztes Datensatzattribut bewusst neu ausgewertet werden soll.

Ausdrücke belegen den gesamten Attributwert. Baue einen Pfad in einer Variable auf und referenziere ihn als {path}. Eine Interpolation wie data/{version}/customers.csv gehört nicht zu diesem Vertrag.

Setup-Zeit und Datensatzgrenze

Setup-Attribute für Verbindungs-/Quellenauswahl und Output-Routing müssen vor Beginn der Generierung aufgelöst sein. Sie akzeptieren ein Literal oder einen {expression}-Ausdruck, der im Root-Setup-Kontext ausgewertet wird. Ein dynamischer {{expression}}-Ausdruck in einem solchen Attribut schlägt mit der Katalogregel I870 fehl; DATAMIMIC friert einen ausdrücklich dynamisch deklarierten Wert nicht stillschweigend ein.

Attribute mit einer dokumentierten Datensatzlebensdauer, etwa ein verschachteltes count, dürfen beide Formen verwenden. targetEntity unterstützt beide Formen ebenfalls, wenn jedes ausgewählte Ziel Datensatz-Routing unterstützt; andere Ziele lehnen diese Kombination ab. Der folgende Descriptor löst root_count und destination aus Setup-Variablen auf. Das verschachtelte count wird für jeden Parent-Datensatz ausgewertet: Batch 1 erzeugt ein Event, Batch 2 erzeugt zwei Events.

expression-lifetime.xml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<setup numProcess="1">
    <variable name="destination" constant="LogExporter"/>
    <variable name="root_count" constant="2"/>
    <generate name="batches" count="{root_count}" target="">
        <key name="batch_id" generator="IncrementGenerator"/>
        <generate name="events" count="{{batch_id}}" target="{destination}">
            <key name="batch_id" script="this.parent.batch_id"/>
            <key name="event_id" generator="IncrementGenerator"/>
        </generate>
    </generate>
</setup>

Bevorzuge {expression}, solange eine Neuauswertung nicht Teil des gewünschten Verhaltens ist. Dadurch bleibt die Lebensdauer explizit und wiederholte Arbeit innerhalb einer Datensatziteration wird vermieden. Setup-Ausdrücke lesen immer den Root-Setup-Kontext; verschachtelte Datensatzfelder stehen dort nicht zur Verfügung.