Taverna has a built-in support for dealing with lists of data values. Services can return single values, lists of values, or deeper lists of lists. For instance, a WSDL service that returns matching genes from a database would typically return a list of values. In other cases, it might be required to use a shim from Local Services like Split string into string list by regular expressions to create a list from a single value, typically splitting by a line feed (
\n) or tabulator (
When creating a workflow input port or an input port for a Beanshell service, one needs to specify the expected list depth.
When connecting services which do not have matching depths, for example connecting a list output to a single value input, Taverna will perform implicit iteration, creating a new list of the outputs of the service, one for each value in the list.
When connecting multiple lists to a service, Taverna will by default do an all-to-all iteration. This behaviour can be customized by specifying the list handling, for instance to specify which port is the inner/outer iteration, or instead pair up values in equally sized lists.