System pozwala na rejestrowanie i wykorzystywanie predefiniowanych funkcji zarówno po stronie serwera jak i po stronie przeglądarki.
Funkcja musi zawsze być zarejestrowana po stronie serwera oraz może dodatkowo być zarejestrowana po stronie przeglądarki, gdy chcemy, aby była też tam wykorzystywana. |
Rejestracja funkcji dostępnych w systemie odbywa się podczas uruchomienia systemu oraz dynamicznie dla dynamicznych zasobów, takich jak wtyczki. Za rejestrację i przechowywanie funkcji odpowiada . Podczas rejestracji wyszukiwane są najpierw wszystkie klasy oznaczone adnotacją @
, następnie w tych klasach wyszukiwane są metody oznaczone adnotacją @
i zostają one zarejestrowane jako funkcje.
Poniższy przykład przedstawia definicję prostej funkcji zwracającej wartość wyższej liczby.
@Functions public class BasicFunctions { @Function public Integer maxOf( Integer a, Integer b ) { return Math.max( a, b ); } } |
Zarejestrowana funkcja posiada nazwę, zwracany typ oraz definicję parametrów -> .
Po stronie przeglądarki musimy sami zarejestrować funkcję. W tym celu należy wywołać metodę register z
Functions.register("maxOf", function(a,b){ return Math.max(a,b); }); |
W tym przypadku zarejestrowaliśmy funkcję (podaną jako drugi parametr) o nazwie maxOf.
Należy pamiętać, że każda funkcja zarejestrowana po stronie przeglądarki musi mieć swój odpowiednik po stronie serwera. |
Rejestracja funkcji we wtyczce jest taka sama jak zostało to opisane powyżej, jednak należy dodatkowo zaznaczyć, że wtyczka ta udostępnia funkcje do zarejestrowania. W tym celu należy w pliku suncode-plugin.xml dodać wpis:
<functions key="functions" /> |
Jest to wymagane, aby nie trzeba było przeszukiwac wszystkich uruchomionych wtyzek, tylko te, które faktycznie posiadają funkcje.
Obecnie nie ma jeszcze wsparcia na wykorzystanie funkcji po stronie serwera. |
Funkcje będzie można wykorzystać w takich obszarach jak zadania automatyczne, zadania zaplanowane, walidatory formularza, itp.
Obecnie funkcje mogą być wykorzystywane na formularzu zadania.
Pobranie funkcji odbywa się za pomocą obiektu :
var function = Functions.getFunction(<function_name>,<function_call_parameters>); |
jak rejestrować w systemie?
jak rejestrować we wtyczce?