Control links enable you to set dependencies between services in a workflow that do not directly share data (i.e. that are not otherwise linked by passing data from one to the other directly or indirectly). A control link allows you to delay the invocation of a service until another has finished.
This can often be the case where two services depend on some external state, for instance a write to database followed by a query database. If you are unable to connect an output port of write to query, there is nothing preventing query from running too early unless you add a control link.
You might also need to use control links when using asynchronous services, to avoid calling
checkStatus says the service has finished. (See the section on Looping.)
Taverna tutorial 2014: Advanced Taverna features includes an exercise on Control links.
Watch the Control links video.
To add a control links
A control link will be added between the 2 operations.
This control link means that
Get_text_result will not be run before
checkStatus has completed.
|Control links waits for iteration to finish|
If implicit iteration is performed on the upstream service, the control link will not be activated until all values have been iterated over upstream.
|Errors are also completions|
Note that a service is said to have _completed_ even if it returned an error in one or more of its iterations.
Taverna 2 requires all parts of the workflow to return a value, even if it is an error document. Downstream services receiving an error should normally return a new, derived error directly - but error documents are not delivered to control links.
To remove control links
|What is the control link called?|
The control link's name is based on the services it connects, for instance:
You may also delete control links from the diagram, but as they are small, they can be difficult to select unless you zoom in.