Übersicht collectors

Mithilfe von collectors können Werte verschiedener Literalen aggregiert, gefiltert oder zusammengefasst werden. Fast alle von ihnen teilen sich zwei Eigenschaften:

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.

Beispiel

concat

concat fügt Literale in der angegebenen Reihenfolge in einem neuen Feld zusammen. Werte desselben Feldes werden konkateniert.

Beispiel

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.

Beispiel

square

square fügt Literale zu allen möglichen nicht-permutierten Zweierkombinationen zusammen. Werte desselben Feldes werden nicht überschrieben.

Beispiel

tuples

tuples gibt alle möglichen nicht-permutierten Kombinationen der Literalwerte aus.

Beispiel

group

group gruppiert Literale und/oder collectors, normalerweise um ein gemeinsames Set an Funktionen auf sie anzuwenden.

Beispiel

choose

choose sendet nur einen Literal aus einer Gruppe weiter (mit abnehmender Priorität).

Beispiel

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.

Beispiel

equalsFilter

equalsFilter gibt ein neues Literal aus, sofern die Werte der Literale alle gleich sind.

Beispiel

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:

Die Verwendung der drei Quantoren macht insbesondere Sinn im Zusammenhang mit if-Anweisungen.

Beispiel