Inline-Funktionen und reguläre benutzerdefinierte Funktionen

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

Startseite >  Funktionen > Benutzerdefinierte Funktionen >

Inline-Funktionen und reguläre benutzerdefinierte Funktionen

Es gibt zwei Arten von benutzerdefinierten Funktionen: Inline-Funktionen und reguläre Funktionen. Sie können beim Erstellen der Funktion festlegen, ob es sich dabei um eine Inline-Funktion oder eine reguläre Funktion handeln soll, siehe Erstellen benutzerdefinierter Funktionen. Inline-Funktionen und reguläre Funktionen verhalten sich in Bezug auf die Codegenerierung, Rekursivität und die Möglichkeit, mehrere Output-Parameter zu haben, unterschiedlich.

 

Inline-Funktionen

Reguläre Funktionen

Inline-Funktionen werden in allen Fällen, in denen sie im generierten Code vorkommen, extrahiert, wodurch der Code länger, aber auch etwas schneller wird.

 

Beachten Sie, dass der Umfang des generierten Programmcodes durch Inline-Funktionen erheblich größer werden kann. Die benutzerdefinierte Funktion wird tatsächlich an allen Stellen, an denen die Funktion aufgerufen wird, eingefügt, wodurch der Codeumfang viel größer wird als bei der Verwendung einer regulären Funktion.

Jede benutzerdefinierte Funktionskomponente generiert Code für einen Funktionsaufruf, beidem Inputs als Parameter übergeben werden und der Output der Rückgabewert der Funktion(skomponente) ist.

 

Zur Laufzeit werden zuerst alle Input-Parameter ausgewertet. Anschließend wird die Funktion für jede Input-Dateninstanz aufgerufen.

Inline-Funktionen können mehrere Outputs haben und daher mehrere Werte zurückgeben.

Reguläre Funktionen können nur einen Output haben. Um mehrere Werte zurückzugeben, können Sie den Output als complexType (z.B. als XML-Struktur) deklarieren. Auf diese Art könnten mehrere Werte an die aufrufenden Komponente zurückgegeben werden.

Inline-Funktionen können nicht rekursiv aufgerufen werden.

Inline-Funktionen können rekursiv aufgerufen werden.

Bei Inline-Funktionen kann kein Prioritätskontext für einen Parameter definiert werden, siehe Prioritätskontext Node/Datenelement.

Bei regulären Funktionen kann ein Prioritätskontext für einen Parameter definiert werden.

 

Benutzerdefinierte Inline-Funktionen im Mapping werden mit einer gestrichelten Umrandung angezeigt. Bei der mittleren Komponente im Mapping unten handelt es sich z.B. um eine benutzerdefinierte Inline-Funktion.

mf_udf_06

Reguläre Funktionen im Mapping werden mit einer durchgezogenen Umrandung angezeigt. Bei der mittleren Komponente im Mapping unten handelt es sich z.B. um eine reguläre benutzerdefinierte Funktion.

mf_udf_05


© 2019 Altova GmbH