A Task is defined in a dedicated directory under plugins root/plugins/tasks.

Configuration

The Task configuration is an XML file named config.xml that must follow these rules:

  1. the root element is named taskConfig
  2. the XML document is valid against the XML Schema at plugins root/schemas/plugins.xsd

The file config.xml contains the following:

<taskConfig>
   <name>A short name for this task</name>
   <id>MY_TASK_ID</id>
   <help>This message will appear on the web interface when users click on the question mark next to the task name.</help>
   <version>1.0</version>
   <inputSchema>
       <inputSlot>
            <name>MY_INPUT_SLOT_NAME</name>
            <type maxOccurs="10" minOccurs="1">
                <id>FILESET_ID</id>
                <versionAtLeast>1.0</versionAtLeast>
            </type>
        </inputSlot>
   </inputSchema>
   <outputSchema>
    <outputSlot>
            <name>MY_OUTPUT_SLOT_NAME</name>
            <type>
                <id>ANOTHER_FILESET_ID</id>
                <versionExactly>1.0</versionExactly>
            </type>
        </outputSlot>
   </outputSchema>
</taskConfig>

The first part of the configuration reports the metadata common to all the plugins types (name, id, help, version).

The elements inputSchema and outputSchema determine which files the task accepts as input and produces as output, respectively. In particular, they declare the input and output slots and their type in the form of FileSet instance.

Script

Task plugins are Executable plugins. As a such, the plugin’s developer must provide a Bash shell script, named script.sh. The script drives the execution of the plugin on a compute node.

Task plugin requires the implementation of a single function as showed in this stub script:

function plugin_task {

#the plugin’s logic goes here

}