Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 

Javadoc
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.core.function.FunctionRegistry
. Podczas rejestracji wyszukiwane są najpierw wszystkie klasy oznaczone adnotacją @
Javadoc
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.core.function.annotation.Functions
, następnie w tych klasach wyszukiwane są metody oznaczone adnotacją @
Javadoc
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.core.function.annotation.Function
 i zostają one zarejestrowane jako funkcje.

 

Rejestrowana funkcja  musi składać się z:

 

 

Poniższy przykład przedstawia definicję prostej funkcji zwracającej wartość wyższej większej liczby.

Code Block
languagejava
linenumberstrue
@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 -> 

Javadoc
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.core.function.Function
.

Rejestracja po stronie przeglądarki

Używanie stworzonej funkcji po stronie przeglądarki (na formularzu zadania) wymaga od programisty dostarczenia jej implementacji w języku JavaScript. Taka implementacja wykorzystywana jest podczas dynamicznych obliczeń po stronie przeglądarki klienta.

W przypadku funkcji z implementacją JavaScript należy dodatkowo wskazać poprzez adnotację 

Javadoc
displayValue@FunctionsScript
propertyjavadoc.plusworkflow
classNamecom.suncode.pwfl.core.function.annotation.FunctionsScript
 gdzie znajduje się skrypt, który zawiera implementacje tych funkcji. Należy wskazać bezwzględną ścieżkę do zasobu w classpath. Zasób przechowywany w src/main/resources/functions/basic-functions.js wskażemy tak:

Code Block
languagejava
linenumberstrue
@Functions
@FunctionsScript("/functions/basic-functions.js")
public class BasicFunctions
{
    ...
}

Funkcje rejestrowane są z wykorzystaniem API 

Jsdoc
propertyjsdoc.plusworkflow
classNamePW.fn.Functions
 (skrócona nazwa PW.Functions):

Code Block
languagejs
// funkcja "max" która zwraca obiekt typu "float" i przyjmuje 2 parametry typu "float"
PW.Functions.register("max", "float", ["float", "float"], function(value1, value2){
	return Math.max(value1, value2);
});
 
// funkcja "upper" która zwraca obiekt typu "string" i przyjmuje 1 parametry typu "string"
PW.Functions.register("i[[erupper", "floatstring", ["floatstring"], function(text){
	return text.toUpperCase();
});

...

Tak zarejestrowana funkcja zostanie wywołana tylko dla wywołań z argumentami które będą pasowały do zdefiniowanych typów (albo będą tego samego typu albo mogą zostać przekonwertowane).

...

. Możliwe typy opisane są w Wbudowane typy.

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:

...

Taki wpis spowoduje automatyczne wyszukanie wszystkich zdefiniowanych we wtyczce funkcji.

Tłumaczenia opisów funkcji i parametrów