Wstęp
Ta strona opisuje wszystkie dodatkowe komponenty, które używane są pomiędzy modułami.
Tip |
---|
Jeżeli własny moduł będzie wymagał np. spełnienia warunków, powinniśmy wykorzystać właśnie komponent condition opisany na tym stronie. Dzięki temu definicje modułów będą spójne i pisanie ich będzie bardziej naturalne. |
Komponenty
Warunki - condition
Warunki mogą być wykorzystywane np. do sprawdzenia praw użytkownika do konkretnego modułu. Możemy zdefiniować wiele warunków, jednak logika ich spełnienia zależy od implementacji modułu (AND, OR etc.)
Atrybuty
Nazwa | Wymagany | Opis |
---|---|---|
class | ![]() | Pełna nazwa klasy tego warunku. Klasa musi implementować Condition. |
Do każdego warunku możemy przesłać dowolne parametry:
Code Block | ||
---|---|---|
| ||
<param name="param1">asd</param> <param name="param2">asd</param> |
Przykład
Code Block | ||
---|---|---|
| ||
<condition class="xyz.HasRightCondition"> <param name="right">admin</param> </condition> |
Java API
Możemy ułatwić sobie pisanie warunków i ich odczyt z XML'a.
Code Block | ||
---|---|---|
| ||
// odczyt z elementu modułu conditions = ModuleHelper.getConditions(plugin, definition); // podczas pisania warunku możemy użyć klasy ConditionSupport: public class HelloCondition extends ConditionSupport{ @Autowired private SomeService someService; @Override public boolean isFulfilled(){ return someService.check(getParameter("someparam")); } } |
Info |
---|
Instancja Condition tworzona jest z wykorzystaniem kontekstu aplikacji, dlatego możliwe jest używanie adnotacji @Autowired. Nie powinniśmy oznaczać klasy adnotacją @Component!!! |
Note |
---|
Jeżeli wykorzystujemy klasę warunku z innej wtyczki, a deskryptor jest jedynym miejscem, w którym odwołujemy się do pakietu tej klasy, to możemy napotkać na błąd ClassNotFoundException. Należy wtedy postępować zgodnie z instrukcjami w FAQ: PluginFramework FAQ |
Link - link
Element link umożliwia pobranie absolutnego adresu URL, wpisując adres relatywny do wtyczki lub do systemu.
Atrybuty
Nazwa | Wymagany | Opis |
---|---|---|
scoped | Domyślnie true. Jeżeli ma wartość true, to wpisany link będzie traktowany jako relatywny do wtyczki. Jeżeli ma wartość false, link będzie traktowany jako relatywny do context path. |
Przykład
Code Block | ||
---|---|---|
| ||
<!-- Link relatywny do wtyczki: /PlusWorkflow/plugin/com.suncode.plugin-tutorial/hello --> <link>/hello</link> <link scoped="true">/hello</link> <!-- Link relatywny do systemu: /PlusWorkflow/hello --> <link scoped="false">/hello</link> |
Java API
Możemy ułatwić sobie pisanie warunków i ich odczyt z XML'a.
Code Block | ||
---|---|---|
| ||
// odczyt z elementu modułu - zwraca null jeżeli nie ma elementu link w module conditions = ScopedWebLink.parse(definition, plugin); |