Benutzerdefinierte Funktionen

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Funktionen >

Benutzerdefinierte Funktionen

Benutzerdefinierte Funktionen (UDFs = User Defined Functions) sind eigene Funktionen, die der Benutzer einmal definiert und die anschließend im selben oder in mehreren Mappings wiederverwendet werden können. Benutzerdefinierte Funktionen bilden selbst eine Art von Mini-Mapping: Normalerweise bestehen sie aus einem oder mehreren Input-Parametern, einigen Datenverarbeitungszwischenkomponenten und einem Output zur Rückgabe der Daten an das aufrufende Mapping bzw. eine andere benutzerdefinierte Funktion, die diese aufruft.

 

Tipp:Es können auch benutzerdefinierte Funktionen erstellt werden, die mehrere Outputs zurückgeben. Dies wird unterstützt, wenn die Funktion als "Inline" definiert ist, siehe Inline-Funktionen und reguläre benutzerdefinierte Funktionen.

 

Neben ihrer Wiederverwendbarkeit bieten benutzerdefinierte Funktionen den Vorteil, dass darin Teile eines Mappings in kleinere Bausteine verpackt werden können, sodass die Implementierungsdetails ausgeblendet werden und das Hauptmapping dadurch übersichtlicher wird.

mff_udf

Normalerweise dienen benutzerdefinierte Funktionen dazu, Strings, Zahlen, Datumsangaben und andere Daten auf eine bestimmte Weise, durch die vordefinierte MapForce-Funktionen erweitert werden, zu verarbeiten. So können Sie etwa Text auf eine bestimmte Art verketten oder aufteilen, komplexe Berechnungen durchführen, Datums- und Uhrzeitangaben bearbeiten oder Teile eines Mappings einfach ausblenden, indem Sie diese in eine wiederverwendbare Funktion verpacken. Eine weitere häufige Anwendungsmöglichkeit von benutzerdefinierten Funktionen ist, nach dem Inhalt eines  bestimmten Felds ineiner Datei, einer Datenbank oder einem anderen von MapForce unterstützten Datenspeicher zu suchen.

 

Im Folgenden sehen Sie ein Beispiel für eine benutzerdefinierte Funktion, die einen String in zwei separate Strings aufteilt. Diese benutzerdefinierte Funktion ist Teil des folgenden Demo-Mappings: <Dokumente>\Altova\MapForce2019\MapForceExamples\ContactsFromPO.mfd. Sie erhält als Parameter einen Namen (z.B. "Helen Smith"), wendet die vordefinierten Funktionen substring-before und substring-after darauf an und gibt anschließend als Ergebnis zwei Werte zurück ("Helen" und "Smith").

mf_udf_01

ContactsFromPO.mfd

Wie bereits erwähnt, können Sie eine benutzerdefinierte Funktion entweder vom Hauptmapping aus oder von einer anderen benutzerdefinierten Funktion aus aufrufen, d.h. benutzerdefinierte Funktionen können gegebenenfalls ineinander verschachtelt werden (siehe Abbildung unten).

mff_udf_nested

Im unten gezeigten Mapping wird z.B. eine benutzerdefinierte Funktion ("LookupPerson") aufgerufen, um den Namen einer Person in einer XML-Datei nachzuschlagen. Wenn Sie auf die Titelleiste der Komponente "LookupPerson" doppelklicken, wird die Definition dazu im Hauptmappingfenster geöffnet und Sie sehen, dass diese Funktion wiederum weitere benutzerdefinierte Funktionen, nämlich "EqualAnd" und "Person2Details", aufruft. Sie finden diese Mapping-Demo unter dem folgenden Pfad: <Dokumente>\Altova\MapForce2019\MapForceExamples\PersonListByBranchOffice.mfd.

mf_udf_02

PersonListByBranchOffice.mfd

Benutzerdefinierte Funktionen können auch rekursiv aufgerufen werden (d.h. eine benutzerdefinierte Funktion ruft sich selbst auf). Dafür muss die benutzerdefinierte Funktion jedoch als reguläre (nicht inline gesetzte) Funktion definiert werden, siehe Inline-Funktionen und reguläre benutzerdefinierte Funktionen.

mff_udf_recursive

Mit Hilfe rekursiver benutzerdefinierter Funktionen können Sie verschiedene komplexe Mapping-Aufgaben lösen, wie z.B. das Iterieren über Datenstrukturen mit einer Tiefe von N Children, wobei N im Vorhinein nicht bekannt ist, siehe Beispiel: Rekursive Suche.

 

Nachdem Sie eine benutzerdefinierte Funktion erstellt haben, wird diese im selben Mapping, in dem sie erstellt wurde, gespeichert. Sie können diese jedoch auch in ein anderes Mapping importieren und von dort aus aufrufen. Nähere Informationen dazu finden Sie unter Aufrufen und Importieren von benutzerdefinierten Funktionen.


© 2019 Altova GmbH