Ü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.