Skip to end of metadata
Go to start of metadata
You are viewing an old version of this page. View the current version. Compare with Current ·  View Page History

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.


Official modules:

  • scufl2-api Java Beans for working with SCUFL2
  • scufl2-t2flow .t2flow import from Taverna 2
  • scufl2-rdfxml .wfbundle import/export (RDF/XML)
  • scufl2-usecases Example code covering SCUFL2 use cases4

Experimental modules:

  • scufl2-rdf Pure RDF export/import (out of date)
  • scufl2-scufl SCUFL 1 .xml import from Taverna 1
  • scufl2-validation API for validating a Scufl2 workflow bundle
  • scufl2-validation-correctness Validate correctness of Scufl2 workflow definition
  • scufl2-validation-structural Validate that a Scufl2 workflow definition is structurally sound
  • scufl2-validation-integration Integration tests for scufl2-validation modules



SCUFL2 is the proposed new mechanism for specifying Taverna workflows. SCUFL2 adpts linked data technology and preservation methodologies to create a platform-independent workflow language that can be inspected, modified, created and executed.

SCUFL2 comes with a Java API that can be used for programmatic access to read and write SCUFL2 workflow bundles. A workflow bundle is a structured ZIP file with the workflow definitions included as XML documents. Those workflow documents are described by an XML Schema and are also valid RDF/XML. The XML Schema allows tools to read and write SCUFL2 workflow definitions as regular structured XML. The RDF allows RDF-enabled tools to link workflow definitions with external resources.

The workflow structure is defined using an OWL ontology and annotated with URIs so that third paties can form semantic statements about any component of a Scufl2 workflow, for example to state that a particular service produces outputs of a certain type, or that a data link was added by a specific researcher.

Semantic annotations and a manifest for the bundle declare the purpose of, and links between the different components forming a workflow. This allows third parties to extract and append annotations about data and services used by the workflow.

Internal releases

  • 0.9.2 Relative path issue in Workflow Bundle file handling, examples moved to scufl2-examples
  • 0.9.1 Fixes Workflow Bundle file locking issue on Windows
  • 0.9 First public release
  • 0.5 First internal release


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

In short, add:

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

Source code

You should not need to compile the SCUFL2 API for most uses, as the Maven deployment even includes the source code for retrieval by tools like Eclipse using the m2e plugin.

The simplest way to retrieve the current version of the SCUFL2 API is using git:

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

To inspect the code of the latest release, 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:

  • mvn clean install

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

Separate JARs

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.

Example output:

: stain@ralph /tmp/93/scufl2; mvn clean install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] Taverna Scufl 2
[INFO] Taverna Scufl 2 UCF Package
[INFO] Taverna Scufl 2 API
[INFO] Taverna Scufl 2 RDF/XML
[INFO] Taverna Scufl 2 t2Flow parser
[INFO] Taverna Scufl 2 SCUFL parser
[INFO] Taverna Scufl 2 use cases
[INFO] Taverna Scufl 2 validation
[INFO] Taverna Scufl 2 validation structural
[INFO] Taverna Scufl 2 validation correctness
[INFO] ------------------------------------------------------------------------
[INFO] Building Taverna Scufl 2 0.9.1
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] Taverna Scufl 2 ................................... SUCCESS [13.881s]
[INFO] Taverna Scufl 2 UCF Package ....................... SUCCESS [32.924s]
[INFO] Taverna Scufl 2 API ............................... SUCCESS [29.490s]
[INFO] Taverna Scufl 2 RDF/XML ........................... SUCCESS [1:20.551s]
[INFO] Taverna Scufl 2 t2Flow parser ..................... SUCCESS [1:37.902s]
[INFO] Taverna Scufl 2 SCUFL parser ...................... SUCCESS [11.911s]
[INFO] Taverna Scufl 2 use cases ......................... SUCCESS [15.337s]
[INFO] Taverna Scufl 2 validation ........................ SUCCESS [2.799s]
[INFO] Taverna Scufl 2 validation structural ............. SUCCESS [7.488s]
[INFO] Taverna Scufl 2 validation correctness ............ SUCCESS [12.120s]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5:07.591s
[INFO] Finished at: Tue Jan 31 15:56:50 WET 2012
[INFO] Final Memory: 67M/176M
[INFO] ------------------------------------------------------------------------


The simplest way to use the SCUFL2 API is as Maven dependencies. See #Maven 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:

  • scufl2-api/target/scufl2-api-0.9.1.jar
  • scufl2-rdfxml/target/scufl2-rdfxml-0.9.1.jar
  • scufl2-t2flow/target/scufl2-t2flow-0.9.1.jar

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


See the JavaDoc at:

Other modules

Note that these JavaDocs does not show the other modules, as they are generally extensions to the core API. For instance, to load a .t2flow file, include scufl2-t2flow as a Maven dependency, and use the media type "application/vnd.taverna.t2flow+xml" as an argument to WorkflowBundleIO.readBundle.

If you are using Eclipse we recommend also using the m2e plugin for Maven support - which can provide both JavaDocs and source code from within the editor. After adding the #Maven dependencies for SCUFL2, try Open declaration or Open Type on a class like


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:

  • None