Taverna aims to support web services that are WS-I (Web Services Interoparability) compliant, but this is a long-term goal and currently there are a few nuances. However, it should be possible to create Web services that are compatible with Taverna if you apply the following guidelines.
Although Taverna supports bindings that are RPC/encoded and RPC/literal to a fair extent, the preferred binding style is Document/literal wrapped, i.e. the WSDL should have “style” attributes that are set to “document” and “use” attributes set to “literal”. This is particularly the case when dealing with complex types; for primitive types no problems are anticipated.
A good description of the differences between these styles can be found here.
Currently un-tested
The following are untested, and although not proven to fail the behaviour is currently undefined. For this reason it is advised that these features are avoided.
- Multiple WSDL imports. Taverna has only been tested on services that contain either no, or only one import of an additional wsdl file. For WSDLs that import more than one additional WSDL, particularly if that WSDL has a different service endpoint to the others, the behaviour of Taverna is currently unclear. Its expected that it will fail when invoking the Web service.This does not affect imports of schemas. This has been thoroughly tested and works as expected.
- Multiple service endpoints. For a given WSDL Taverna currently only references the first service endpoint. If more than one exists then operations belonging to the second endpoint are expected to fail.
- Ambiguous type names. In the unusual case that an operation requires inputs that contain identically named types that belong to different namespaces it is expected that Taverna should not have any problems. However, because of the unusual nature of this it is untested and therefore not recommended.
Currently known to fail
The following are situations that are known to fail in Taverna.
- Cyclic references. When processing the result of invoking an operation, Taverna resolves the XML into a single document. If the response contains cyclic references, this is detected and an error occurs (to prevent an infinitely long document!). For this reason cyclic references should be avoided. (Taverna will, however, work with such an operation as long as the cyclic reference is not contained within the response data structure).
- Overloaded operations. Within the UI, Taverna only distinguishes between operations, for a given service, by name. The operation signature is not used to distinguish between operations of the same name. For this simple reason, Taverna does not support overloaded operations.
- anyType. Although Taverna can invoke a service that deals with the anyType type, the XML splitting mechanism cannot work since there is no information about the data structure required or received. Such services can only be used by providing and/or manipulating the XML directly.







