The Scufl language used by Taverna 1.7.x is essentially a dataflow-centric language, defining a graph of data interactions between different services (or, more strictly, processors). Its purpose is to present the workflows from a problem-solving oriented view, hiding the complexity of the interoperation of the services. When combining services into workflows, users think in terms of the data consumed and produced by logical services and connecting them together. They are not interested in the implementation styles of the services, and the users should not need to be familiar with the concepts or details of service-oriented architecture.
The components of a ScuflModel are as follows:
- A set of inputs that are entry points for the data for the workflow
- A set of outputs that are exit points for the data for the workflow
- A set of processors each of which represents a logical service: an individual step within a workflow. A processor includes a set of input ports and a set of output ports. From the user’s perspective the behaviour of a processor is to receive data on its input ports, (process the data internally) and to produce data on its output ports.
- A set of data links that link data sources to data destinations. The data sources can be workflow inputs or processor output ports, and data destinations can be workflow outputs or processor input ports.
- A set of control links that specify running order dependencies where direct data flow is not required. A control link states that the target processor cannot start until the source processor has finished its processing.