2. Extending Taverna using a Service Provider Interface (SPI).

Table of Contents

2.1. Available SPI's.
2.2. Declaring your SPI.

Taverna contains numerous Classes or Interfaces that can be extended and packaged as a Plugin to provide additional functionality for a specific purpose. Taverna uses a mechanism that mimics the Apache Commons Discovery libraries to discover SPI's.

2.1. Available SPI's.

Below is a list of the interfaces that can be used to add extensions to Taverna. The descriptions are a brief outline and far from comprehensive. By far the best source of reference when learning to use an SPI is the Taverna sourcecode itself.

Table 2.1. SPIs

InterfaceDescriptionArtifactId
org.embl.ebi.escience.scuflworkers.java.LocalWorkerA simple type of processor that doesn't require the full invocation infrastructure.It appears as a Local Java Widget in the Service Panel and works on a set of inputs to produce a set of outputs.taverna-java-processor
net.sf.taverna.perspectives.PerspectiveSPIDefines a perspective which describes a Workbench layout comprising of a set of UI components.perspective-core
org.embl.ebi.escience.scuflui.spi.ProcessorActionSPIDefines an action that can be performed on a Processor or set of Processors. These actions are gathered and presented within the menu when rightclicking on that Processor in the Advanced Model Explorer, such as Processor configuration, metadata handling etc.scufl-ui-api
org.embl.ebi.escience.scuflworkers.ProcessorInfoBeanDefines information about a Processor component.scufl-model
org.embl.ebi.escience.scuflui.spi.RendererSPIProvides Rendering capability for a particular type of data object, such as displaying a Graph or an Image.scufl-ui-api
org.embl.ebi.escience.scuflui.spi.ResultMapSaveSPIProvides customisation capability for saving a collection of DataThing objects that result from running a workflow, for example Saving to an Excel file.scufl-ui-api
org.embl.ebi.escience.scuflui.workbench.scavenger.spi.ScavengerActionSPIProvides actions capabable of being operated upon a Scavenger object in the Service Panel, such as Scavenger configuration.taverna-scavenger
org.embl.ebi.escience.scuflworkers.ScavengerHelperProvides the ability to add a Scavenger to the Service Panel that requires additional information before being added, such as providing a WSDL url when adding a WSDL processor. This appears as a menu item when right-clicking on Active Processors in the Service Panel.taverna-scavenger
org.embl.ebi.escience.scuflui.workbench.ScavengerA Scavenger is created by the ScavengerHelper, but also can be defined as an SPI. If defined as an SPI it appears in the Service Panel under Local Services, for example String Constant.taverna-scavenger
org.embl.ebi.escience.scuflui.actions.ScuflModelActionSPIDefines an action that can be performed on the ScuflModel, and appear on the Advanced Model Explorer toolbar. Add Nested Workflow is an example.scufl-ui-api
org.embl.ebi.escience.scufl.enactor.WorkflowEventListenerProvides the ability to listen to events occuring as a workflow whilst its running. The LogBook plugin uses this SPI to gather Provenance.taverna-enactor
org.embl.ebi.escience.scuflui.spi.UIComponentFactorySPIA factory to a UIComponentSPI. These are toplevel UI components that appear within a layout and can be added to a workbench layout as part of a perspective. The Service Panel, and the Advanced Model Explorerer are UIComponentSPI's that are discoved through its own UIComponentFactorySPI.scufl-ui-api

Tip

In Eclipse, pressing F4 whilst having an SPI class open will display a hierarchical display of all classes that extend it. This can be a useful way of finding examples of current implementations of SPI's within the Taverna source code, which can be a good starting point when creating your own.