Services within a Taverna workflow can be viewed as functions – that is to say you feed them a set of inputs, press “go” and get a set of results. A database in contrast just sits there until you query it so some kind of intermediate layer is required. There are a few different options:
- The most sophisticated is to use Taverna’s extension points to implement a full query interface including a server side query service and GUI plugins to build the query and present the user with database metadata to assist that. This is a lot of work; we maintain an example of this in the BioMart service.
- The second option is to create a standard SOAP or REST service that exposes a ‘canned query’ interface allowing a restricted subset of all possible queries at which point it just looks like another service and Taverna can invoke it as per usual.
- If your data is amenable to it, the third way is to make use of the existing BioMart service and expose your own data set as a BioMart (see http://www.biomart.org for more details).
- Fourthly, if there is a JDBC interface to the database then you can use the JDBC local Java services/widgets.