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.
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
|org.embl.ebi.escience.scuflworkers.java.LocalWorker||A 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.PerspectiveSPI||Defines a perspective which describes a Workbench layout comprising of a set of UI components.||perspective-core|
|org.embl.ebi.escience.scuflui.spi.ProcessorActionSPI||Defines 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.ProcessorInfoBean||Defines information about a Processor component.||scufl-model|
|org.embl.ebi.escience.scuflui.spi.RendererSPI||Provides 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.ResultMapSaveSPI||Provides 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.ScavengerActionSPI||Provides actions capabable of being operated upon a Scavenger object in the Service Panel, such as Scavenger configuration.||taverna-scavenger|
|org.embl.ebi.escience.scuflworkers.ScavengerHelper||Provides 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.Scavenger||A 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.ScuflModelActionSPI||Defines 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.WorkflowEventListener||Provides 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.UIComponentFactorySPI||A 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|
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.