Skip to end of metadata
Go to start of metadata

Wstęp

Ta strona opisuje wszystkie dodatkowe komponenty, które używane są pomiędzy modułami.

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

NazwaWymaganyOpis
class(tick)Pełna nazwa klasy tego warunku. Klasa musi implementować Condition.

Do każdego warunku możemy przesłać dowolne parametry:

<param name="param1">asd</param>
<param name="param2">asd</param>

Przykład

<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.

// 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"));
	}
}

Instancja Condition tworzona jest z wykorzystaniem kontekstu aplikacji, dlatego możliwe jest używanie adnotacji @Autowired.

Nie powinniśmy oznaczać klasy adnotacją @Component!!!

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

Element link umożliwia pobranie absolutnego adresu URL, wpisując adres relatywny do wtyczki lub do systemu.

Atrybuty

NazwaWymaganyOpis
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

<!-- 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.

// odczyt z elementu modułu - zwraca null jeżeli nie ma elementu link w module
conditions = ScopedWebLink.parse(definition, plugin);
  • No labels