The SCUFL2 API provides Java classes that can be used independently from Taverna to inspect, modify and generate SCUFL2 workflows.


The code and definitions for SCUFL2 are kept in the GitHub project scufl2.


Maven modules

The simplest way to use the SCUFL2 API is to use Maven 3 (Maven 2 should also work). See the example pom.xml.

In short, add:

		<releases />
		<name>myGrid Repository</name>

The scufl2.version property allows you to consistently upgrade to later versions of SCUFL2. Note that the version number above might not be the latest, see #Release notes for the latest version number.

Source code

The simplest way to retrieve the current version is using [git|

Note that this will by default check out the master branch, which represents the latest version of the API, but might not be stable or backwards-compatible.

To inspect the code of the latest tag, use git tag and git checkout:

: stain@ralph /tmp/93/scufl2; *git tag*

: stain@ralph /tmp/93/scufl2; *git checkout 0.9.1*
Note: checking out '0.9.1'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at b507cc2... [maven-release-plugin]  copy for tag scufl2-0.9.1

: stain@ralph /tmp/93/scufl2 ;

Alternatively you can download a tagged release as a ZIP or TAR ball from:

Unpack using your favourite archiver, but don't use the ZIP support of Windows Explorer, as it occasionally don't unpack all files.


After installing Java JDK (6 or later) and Maven (2.2 or later), simply run:

This will build each module and run their tests, producing JARs like `scufl2-api/target/scufl2-api-0.9.1.jar`.

The build does not yet produce a single scufl2.jar for non-Maven users. This is planned for the 1.0 release. See #Usage below on how to use the JARs independently.

First time you build Scufl2 this might download dependencies needed for compilation. These have separate open source licenses, but should be compatible with LGPL. None of the dependencies are neccessary for using the compiled SCUFL2 API.

Some of the experimental modules are not built automatically, to build them separately, run the same command from within their folder.

Release notess


The simplest way to use the SCUFL2 API is as Maven dependencies. See #Maven modules above.

Typical use of the Scufl2 API will depend on the three modules scufl2-api, scufl2-t2flow and scufl2-rdfxml.

All Scufl2 modules are also valid OSGi bundles.

If you don't use Maven, you can alternatively copy and add the JARs from these modules to your classpath:

Note that version numbers above might not be the latest, see #Release notes


Examples of using the Scufl2 API are available as a separate Github project scufl2-examples.

Also see the scufl2-validation folder of the SCUFL2 API source code for examples of usage.

The best classes to start using would be `` and ``.

Example of converting .t2flow to .wfbundle:


    // ..
    WorkflowBundleIO io = new WorkflowBundleIO();
    File t2File = new File("workflow.t2flow");
    File scufl2File = new File("workflow.wfbundle");
    WorkflowBundle wfBundle = io.readBundle(t2File, "application/vnd.taverna.t2flow+xml");
    io.writeBundle(wfBundle, scufl2File, "application/vnd.taverna.scufl2.workflow-bundle");