This documentation is for WSO2 ESB version 4.5.0. View documentation for the latest release.

Extending Task

Scheduled Tasks

Task is a one of the methods of automatic driving the mediation in the ESB. It is an implementation of ESB Startup which allows adding tasks, it should run at ESB startup. Task is a Startup and it is based on Quartz, an open source job scheduling system. Task can be used to create schedules:

  • Simple schedules - May be a schedule to run a task periodically.
  • Complex schedules - May be a schedule to run at specific time in the future. It can be specified using cron expressions.
<task class="string" name="string" [group="string"] [pinnedServers="(serverName)+"]>
       <property name="string" value="String"/>
       <property name="string"><somexml>config</somexml></property>
       <trigger ([[count="int"]? interval="int"] | [cron="string"] | [once=(true | false)])/>
</task>

A task is created and scheduled to run at specified time intervals or as specified by the cron expression. The Task class specifies the actual task implementation class (which must implement org.apache.synapse.task.Taskinterface) to be executed at the specified interval/s, and name specifies of an identifier for the scheduled task.

Tip

The current ESB has only one implementation - org.apache.synapse.startup.tasks.MessageInjector. It can be used to inject messages at ESB startup.

Fields in the task class can be set using properties provided as string literals or as XML fragments.

For example, if the task implementation class has a field named "version" with a corresponding setter method, the configuration value which will be assigned to this field before running the task can be specified using a property with the name "version."

There are three different trigger mechanisms to schedule tasks:

  • A simple trigger - Is specified by "count" and "interval", implying that the task will run a "count" number of times at specified intervals.
  • A cron trigger - May be specified using a cron expression.
  • A one-time trigger - Is specified using the once attribute as true in the definition and could be specified as true in this case this task will be executed only once just after the initialization of ESB.

See Adding and Scheduling Tasks.

You can give a list of Synapse server names where this task should be started using pinnedServers attribute.

Extending Task

A custom Task can be developed by writing a custom Java class that implements the org.apache.synapse.task.Task interface. Task interface is shown bellow.

package org.apache.synapse.task;

/*** Represents an executable Task*/

public interface Task {

   /*** Execute method will be invoked by the QuartzJOb.
   */
   public void execute();
}