Übersicht collectors
Mithilfe von collectors können Werte verschiedener Literalen aggregiert, gefiltert oder zusammengefasst werden. Fast alle von ihnen teilen sich zwei Eigenschaften:
- Der Zeitpunkt und die Art der Emission ihrer Werte ist steuerbar.
- Es ist möglich, sie nur dann auszuführen, wenn gewisse Bedingungen erfüllt sind.
Zudem ist es für die collectors combine, concat, equalsFilter,
square, tuples, choose, range und group möglich, mittels
<postprocess> Literal-Funktionen auf das Ergebnis anzuwenden. Beispiel:
<combine name="neu" value="${nachname}, ${vorname}">
<data source="feld1" name="vorname"/>
<data source="feld2" name="nachname"/>
<postprocess>
<trim/>
<case to="upper"/>
</postprocess>
</combine>Folgend eine Liste der verfügbare collectors in Metamorph.
Die Attribute flushWith, reset und sameEntity, welche für die
meisten collectors verwendet werden können, werden im nächsten
Abschnitt
beschrieben.
combine
combine fügt Literale gemäss einem Template zusammen. Nachfolgende Werte
überschreiben vorangehenden Werte desselben Feldes.
name(erforderlich): Name des neuen Feldesvalue(erforderlich): Template. Werte von Feldern können mit${feldname}eingefügt werden
concat
concat fügt Literale in der angegebenen Reihenfolge in einem neuen Feld zusammen.
Werte desselben Feldes werden konkateniert.
name(erforderlich): Name des neuen Feldesdelimiter: Trennzeichen zwischen einzelnen Literalen (Standard:"")prefix: Präfix des neuen Feldespostfix: Suffix des neuen Feldesreverse: Fügt neue Literale am Anfang statt am Ende des neuen Feldes hinzu
entity
entity erstellt mit den definierten Literalen eine neue (Sub-)Entität.
name definiert den Namen der Entität, der alternativ auch mit dem
entity-name-Element definiert werden kann. Wird weder name noch
entity-name angegeben, wird ein leerer Name gesendet.
square
square fügt Literale zu allen möglichen nicht-permutierten Zweierkombinationen
zusammen. Werte desselben Feldes werden nicht überschrieben.
name(erforderlich): Name der neuen 2er-Tupeldelimiter(erforderlich): Trennzeichen zwischen den ausgegebenen Literalenprefix: Präfix der 2er-Tupelpostfix: Suffix der 2er-Tupel
tuples
tuples gibt alle möglichen nicht-permutierten Kombinationen der Literalwerte aus.
name(erforderlich): Name der neuen Literaleseparator: Trennzeichen zwischen den Literalen
group
group gruppiert Literale und/oder collectors, normalerweise um ein gemeinsames Set an Funktionen auf sie anzuwenden.
name: Neuer gemeinsamer Namevalue: Neuer gemeinsamer Wert
choose
choose sendet nur einen Literal aus einer Gruppe weiter (mit abnehmender
Priorität).
name: Name des neuen Literalsvalue: Wert des neuen Literals
range
range wertet zwei aufeinanderfolgende Literale als ganze Zahlen aus, die den Start- und
Endpunkt einer Zahlenreihe definieren. Alle Zahlen dieser Reihe werden
anschliessend als Literale ausgegeben.
name(obligatorisch): Name der neuen Literaleincrement: Inkrement (Standard:1)
equalsFilter
equalsFilter gibt ein neues Literal aus, sofern die Werte der Literale alle gleich sind.
name(obligatorisch): Name des neuen Literalsvalue(obligatorisch): Wert des neuen Literals
all, any, none
all,
any und
none überprüfen, ob angegebenen Literale vorhanden sind. Sie geben standardmässig eine
unbenannte (änderbar mit name=) Variable mit true als Wert (änderbar mit
value=) aus, insofern die jeweilige Bedingung zutrifft:
- Bei
all: Alle Literale sind im Datensatz vorhanden - Bei
any: Mindestens ein Literal ist im Datensatz vorhanden - Bei
none: Kein Literal ist im Datensatz vorhanden
Die Verwendung der drei Quantoren macht insbesondere Sinn im Zusammenhang mit
if-Anweisungen.