Versions Compared

Key

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

...

Code Block
languagehtml/xml
titleDefinicja modułu
<some-module key="module1" ...>
	...
</some-module>
 
<some-module key="module2" ...>
	...
</some-module>

<!-- NIEDOZWOLONE - duplikacja klucza modułu: module1 -->
<some-other-module key="module1" />

 

 

Pobieranie modułów

 

Tworzenie modułów

 

Pobieranie modułów

Każdy moduł ma uniwersalny klucz modułu. Składa się on z klucz wtyczki oraz klucz modułu:

Code Block
{pluginkey}:{modulekey} np. com.suncode.plugin-tutorial:module1

Interfejs ModuleAccessor zawiera wszystkie publiczne metody akcji na modułach. Możemy go pobrać z wtyczki jak i z samego systemu:

Tip

Obiekt PluginFramework implementuje ten interfejs, dlatego można ich używać tak samo.

Tworzenie modułów

Moduły możemy podzielić na 2 rodzaje, w zależności od ich implementacji:

  • moduły void: moduły nie zwracają żadnych obiektów, same zajmują się np. zarejestrowaniem wtyczki podczas startu i wyrejestrowaniem podczas zatrzymania
  • moduły, których wynikiem są obiekty, otrzymywane przez funckcję Module.getObject()

Każdy moduł musi implementować interfejs Module oraz zadeklarować, jakie obiekty tworzy ten konkretny moduł.

 

Stworzymy teraz moduł, który wymusi odpowiednią wersję systemu PlusWorkflow. Deklaracja modułu będzie wyglądać następująco:

Code Block
languagehtml/xml
titlesuncode-plugin.xml
<workflowversion key="checkversion" version="3.1.0"/>
Info

Zakładamy że moduł został już zarejestrowany z systemu lub z wtyczki

Kod modułu:

Code Block
languagejava
titleVersionModule
package com.suncode.plugin.tutorial;

import com.suncode.plugin.framework.PluginsException;
import com.suncode.plugin.framework.support.ModuleHelper;
import com.suncode.plugin.framework.support.module.ModuleSupport;
import com.suncode.pwfl.SystemVersion;

public class VersionModule
    extends ModuleSupport<Void>
{
    private String targetVersion;
    @Override
    protected void initModule() throws PluginsException
    {
		// odczyt atrybutu modułu
        targetVersion = ModuleHelper.getAttribute( "version", getDefinition() );
    }
    @Override
    public void enable() throws PluginsException
    {
		// niekompatybilna wersja -> nie możemy uruchomić wtyczki
        if ( !targetVersion.equals( SystemVersion.getVersion() ) )
        {
            throw new PluginsException( "Niekompatybilna wersja systemu PlusWorkflow" );
        }
    }
}
Tip

Tworzenie własnych modułów i wykorzystanie klasy ModuleSupport wymaga zależności do projektu plugin-framework-core

Dostępne moduły