Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation ifWithoutElse  Dokument im Navigationsbaum lokalisieren

Verwendung

Wenn die if-Bedingung von ifWithoutElse den Wert true liefert, wird der Eingangswert von then als Ergebnis zurückgegeben. Auf diese Weise lässt sich diese Funktion in Zielfeld-Mappings als Filter einsetzen.

Und was gibt die Funktion als Else-Wert zurück?

Um die unterschiedlichen Fälle zu untersuchen, in denen die if-Bedingung nicht den Wert true liefert, gehen wir von folgender Ausgangs-Message aus:

Ausgangs-Message

Diese Grafik wird im zugehörigen Text erklärt

In dieser Struktur können Email-Adressen und Telefonnummern einer Person (Wurzelelement Person) innerhalb eines mehrfach auftretenden Elements communication erfasst werden. Das Element phoneNumber der Ausgangs-Message kann verschiedene Typen haben. Sie sind als Aufzählung (Enumeration) für das Attribut type des Elements hinterlegt. Die Werte der Aufzählung sind private, office und fax. Eine Testinstanz zur gegebenen Ausgangs-Message könnte beispielsweise so aussehen:

Testinstanz

Diese Grafik wird im zugehörigen Text erklärt

Der Else-Wert von ifWithoutElse hängt davon ab, ob das Ergebnis dieser Funktion an ein Zielfeld oder an eine Funktion übergeben wird. Wir schauen uns nun diese beiden Fälle an Hand der vorgestellten Ausgangs-Message und der Testinstanz an. In beiden Fällen sollen jeweils nur die Faxnummern an ein Zielfeld faxNumber übergeben werden.

Else-Wert für Zielfelder

In dem in der folgenden Tabelle dargestellten Zielfeld-Mapping wird der Ergebniswert von ifWithoutElse direkt an das Zielfeld faxNumberübergeben.

Zielfeld-Mapping

Queue

Diese Grafik wird im zugehörigen Text erklärt

Diese Grafik wird im zugehörigen Text erklärt

In solchen Fällen möchte man entweder das Zielelement faxNumber erzeugen und phoneNumber als Faxnummer übernehmen oder das Zielelement soll überhaupt nicht erzeugt werden. Entsprechend erzeugt ifWithoutElse den Wert ResultList.SUPPRESS, wenn die if-Bedingung nicht erfüllt ist. Die zweite Spalte der Tabelle zeigt die Queue für ifWithoutElse in diesem Zielfeld-Mapping mit der obigen Testinstanz an: Immer dann, wenn typeungleich „fax“ ist, steht ResultList.SUPPRESS in der Queue.

Else-Wert für Funktionen

Wenn Sie den Ergebniswert von ifWithoutElse an eine Standardfunktion mit mehreren Eingabeparametern übergeben, gibt es zwei Anwendungsfälle zu unterscheiden:

     ifWithoutElse wirkt wie ein Filter. Wenn nur diejenigen Werte in der folgenden Funktion als Eingabeparameter von Interesse sind, bei denen beim Ausfiltern die if-Bedingung erfüllt war, wählen Sie bei ifWithoutElse als Else-Wert den leeren String. In diesem Fall interpretiert die Standardfunktion die Eingabe nicht als Wert und überspringt ihn.

     Wenn Eingabequeues der Standardfunktion synchronisiert sein sollen, soll ifWithoutElse den Wert ResultList.SUPPRESS liefern. In diesem Fall überspringt die Standardfunktion die SUPPRESS-Werte nicht.

Beispiel: Leerer Wert als Else-Wert

In dem folgenden Zielfeld-Mapping wird der Ergebniswert von ifWithoutElse an die Standardfunktion concat übergeben. Ziel ist es, diejenigen Telefonnummern, die sich auf ein Fax beziehen, durchzunumerieren. Wir verwenden daher die counter-Funktion und die concat-Funktion mit einem Leerzeichen als Trenner:

 

Diese Grafik wird im zugehörigen Text erklärt

Pro communication-Element gibt es nur eine Telefonnummer beziehungsweise Email-Adresse. Nach jeder Nummer gibt es daher einen Kontextwechsel. Über die Funktionsparameter von ifWithoutElse können Sie bestimmen, ob der Else-Wert ein leerer String oder der SUPPRESS-Wert ist. Die folgende Tabelle zeigt die unterschiedlichen Ergebnis-Queues von concat, abhängig davon, wie die Funktionsparameter von ifWithoutElse gesetzt sind:

Kein SUPPRESS-Wert als Else-Wert

SUPPRESS-Wert als Else-Wert

Diese Grafik wird im zugehörigen Text erklärt

Diese Grafik wird im zugehörigen Text erklärt

Die Numerierung ist unterschiedlich, weil die Standardfunktion concat den Kontext mit dem leeren String überspringt, während der SUPPRESS-Wert mit dem zweiten Wert von counterverknüpft wird.

SUPPRESS-Wert als Else-Wert

Wie aus dem letzten Beispiel ersichtlich, führt die Ausgabe des SUPPRESS-Wertes dazu, dass keine Kontexte bei der Berechnung des Ergebnisses durch die Standardfunktion übersprungen werden. Dies ist beispielsweise erforderlich, wenn statt der oben verwendeten counter-Funktion ein Ausgangsfeld name aus einem anderen Konntext wie phoneNumber den Eingabeparameter liefert, für das es pro Kontext die gleiche Anzahl von Werten gibt. In diesem Fall erreichen Sie durch die Verwendung des SUPPRESS-Wertes als Else-Wert, dass beide Eingangs-Queues die gleiche Anzahl von Werten pro Kontext haben.

 

 

Ende des Inhaltsbereichs