Overview
FirstSpirit offers scheduling functionality which allows definition of task sets which may be executed on a schedule or on-demand. FirstSpirit provides a core set of tasks which may be added to a schedule, but in order to support project requirements, the system also allows definition of custom tasks which may be implemented using FirstSpirit APIs.
Structure
A custom schedule task consists of several implementations of FirstSpirit Access API interfaces:
- Data Object
The data object contains custom data required during the run-time of a task instance. - Application
The schedule task application represents the core of a schedule task definition. It provides metadata about the task, such as name and description, and may optionally specify an icon and whether or not it may run outside of a project context. - Executor
The executor class provides functionality used upon execution of the task. It supports actual execution as well as a validation run which may be used to test task functionality. - Form Object and Factory (optional)
The form object provides a custom configuration user interface for the task. This object and its associated factory object are optional.
Component Definition in module.xml
In contrast to most other FirstSpirit plug-in types, schedule task plug-ins require a somewhat more complex component descriptor in a FirstSpirit Module's (FSM) module.xml file.
The schedule task plug-in is specified as a public component, referencing the class de.espirit.firstspirit.module.ScheduleTaskSpecification. The plug-in-specific classes are provided inside a configuration block, and ScheduleTaskSpecification will register the given classes within FirstSpirit.
<public>
<name>MyScheduleTask</name>
<description>Custom schedule task implementation</description>
<class>de.espirit.firstspirit.module.ScheduleTaskSpecification</class>
<configuration>
<!-- Mandatory reference to a schedule task application class. -->
<application>path.to.MyScheduleTaskApplication</application>
<!-- Reference to a schedule task form factory class is optional! -->
<form>path.to.MyScheduleTaskFormFactory</form>
</configuration>
</public>
Schedule Management
See Schedule Management for information on how to use your schedule task.