Wpisy

User Defined Functions – własne funkcje w mapowaniach SAP PI

User Defined Functions (UDF) to funkcje zdefiniowane przez programistę, które mogą być wykorzystywane w mapowaniach graficznych SAP PI. Funkcje te definiowane są w języku Java i umożliwiają uruchomienie dowolnego kodu na etapie mapowania pól komunikatów XML, znacznie rozszerzając zakres operacji, jakie można wykonać na polach i wartościach komunikatu.

W mapowaniach graficznych UDF reprezentowane są przez jeden blok. Dzięki im wykorzystaniu, można przykładowo uprościć realizację stosunkowo prostej logiki, której implementacja wymagałaby użycia dużej liczby standardowych bloków:

udf-01

UDF tworzy się przez kliknięcie w ikonę czystej kartki w lewym dolnym rogu edytora mapowań graficznych:

udf-02

W najprostszym wariancie wystarczy uzupełnić podstawowe dane – nazwę i etykietę funkcji, oraz nazwę argumentów wejściowych. Wartość argumentów będzie można przypisywać podobnie jak w przypadku standardowych bloków mapowania graficznego – za pomocą strzałek na wejściu i wyjściu funkcji:

udf-02a

Kolejnym krokiem jest implementacja funkcji w języku Java. Wejście i wyjście jest realizowane jak w innych funkcjach / metodach Java – poprzez argumenty i polecenie return. Na poniższej ilustracji znajduje się definicja UDF o takim samym działaniu jak na przykładzie mapowania graficznego powyżej.

udf-03

Parametry UDF

Wartości konfiguracyjne można określić jako parametry UDF. Będą również przekazywane do funkcji jak argumenty, lecz ich wartość przypisuje się na poziomie mapowania graficznego.

udf-04

udf-05

Testowanie UDF

Po zapisaniu funkcji, można jej użyć w mapowaniu graficznym, podłączając wejścia i wyjście. Podobnie jak w przypadku standardowych bloków, po uruchomieniu testu można prześledzić listę podawanych i zwracanych przez UDF wartości za pomocą funkcji Display Queue:

udf-06

W powyższym przykładzie UDF została wykorzystana do uproszczenia implementacji mapowania. W zależności od potrzeb, programista może wykorzystać szereg możliwości języka Java, które pozwolą na implementację bardziej złożonych mapowań, niż pozwalają na to standardowe bloki mapowania graficznego.