Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Funkcje zostały wprowadzone w celu ułatwienia wykonywania często wykonywanych operacji, takich jak np. sumowanie wartości. Zapobiega to wielokrotnej duplikacji kodu. Funkcje powinny być niezależne oraz jak najbardziej ogólne i elastyczne (możliwość wykorzystania ich w jak największej liczbie przypadków).

System pozwala na rejestrowanie i wykorzystywanie predefiniowanych funkcji zarówno po stronie serwera jak i po stronie przeglądarki.

Rejestracja funkcji

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 na serwerze

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 FunctionRegistry. Podczas rejestracji wyszukiwane są najpierw wszystkie klasy oznaczone adnotacją @Functions, następnie w tych klasach wyszukiwane są metody oznaczone adnotacją @Function 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 -> Function.

Rejestracja po stronie przeglądarki

Na chwilę obecną funkcje obsługiwane są na formularzu zadania.

Po stronie przeglądarki musimy sami zarejestrować funkcję. W tym celu należy wywołać metodę register z PW.core.fn.Functions

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 we wtyczce

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 wtyczek, tylko te, które faktycznie posiadają funkcje.

Wykorzystanie funkcji po stronie serwera

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.

Wykorzystanie funkcji po stronie przeglądarki

Obecnie funkcje mogą być wykorzystywane na formularzu zadania.

Pobranie funkcji odbywa się za pomocą obiektu PW.core.fn.Functions:

 var function = Functions.getFunction(<function_name>,<function_call_parameters>);
  • No labels