Przydatne linki


Zadanie zaplanowane

Zadanie zaplanowane to komponent użytkownika pozwalający na zdefiniowanie zadania wykonywanego okresowo.

Stworzenie zadania zaplanowanego możliwe jest w panelu administratora (Administracja -> Konfiguracja systemu -> Zadania zaplanowane)

Definiowanie zadania zaplanowanego

Zadanie zaplanowane tworzone jest w oparciu o definicję stworzoną przez użytkownika. Definicja taka musi zawierać następujące elementy:

  1. Adnotację @ScheduledTask (jeżeli zadanie zaplanowane nie jest definiowane we wtyczce, musi ono pochodzić z pakietu com.suncode)
  2. Publiczną metodę oznaczoną adnotacją @Define z jednym parametrem ScheduledTaskDefinitionBuilder
  3. Publiczną metodę o nazwie execute, która ma zostać wykonana okresowo. Metoda execute może zwracać dowolny typ włącznie z void. Zwrócona wartość będzie wyświetlona jako wynik przetwarzania zadania zaplanowanego. Ustawienie typu void jest jednoznaczne z brakiem rezultatu.

Zadanie zaplanowane może również dostarczać skrypt, który buduje wygląd parametrów podczas jego definiowania w PWE. W tym celu należy dodać kolejną adnotację dla klasy  z przekazaną ścieżką do skryptu (z classpath).

Przykładowa definicja przedstawiona jest poniżej:

@ScheduledTask
@ComponentsFormScript( "path/example-form.js" )
public class ExampleScheduledTask {
	@Define
	public void definition( ScheduledTaskDefinitionBuilder builder ) {
		builder
			.id( "example-scheduled-task" )
			.name( "example.scheduled.task.name" )
 			.description( "example.scheduled.task.desc" )
			.cancelable()
			.parameter()
				.id( "scheduled-task-param" )
				.name( "example.scheduled.task.param.name" )
				.description( "example.scheduled.task.param.desc" )
				.type( Types.STRING )
				.create();
	}
	
	public void execute( @Param( value = "scheduled-task-param" ) String param )
	{
		// Ciało zadania zaplanowanego
		...
	}
}

Implementacja metody execute

Zadanie zaplanowane musi posiadać metodę o nazwie execute. Metoda może posiadać następujące typy parametrów:

Rejestracja zadania zaplanowanego we wtyczce

Jeżeli zadanie zaplanowane jest definiowane we wtyczce to należy dodatkowo zaznaczyć, że wtyczka ta udostępnia komponenty. W tym celu należy w pliku suncode-plugin.xml dodać wpis:

<!-- Udostępnianie komponentów (m.in. zadań zaplanowanych) -->
<workflow-components key="components" />

 

Metoda jako zadanie zaplanowane we wtyczce

Zadanie zaplanowane we wtyczce nie musi być komponentem. Może zostać stworzone tak samo, jak zadania zaplanowane definiowane w projektach klienckich - zadanie zaplanowane jako wywołanie publicznej metody.

Np. po stworzeniu klasy we wtyczce:

package com.suncode.plugin;

public class SomePluginClass
{
    public void someMethod( String text, Integer number )
    {
        System.out.println( "Text: " + text + ", number: " + number );
    }
    public void someMethod2( String text, Double number )
    {
        System.out.println( "Text: " + text + ", number: " + number );
    }
}

Po wpisaniu com.suncode.plugin.SomePluginClass w pole Nazwa klasy w oknie dodawania nowego zadania zaplanowanego wyświetlone zostaną metody someMethod oraz someMethod2, które można wybrać i dodać jako zadanie zaplanowane.

Takie zadania mają jednak ograniczenia:

Ze względu na powyższe ograniczenia funkcjonalność ta powinna służyć jedynie do testowania własnych klas we wtyczkach. Preferowane jest, aby docelowo zadania zaplanowane we wtyczkach były komponentami.