This lesson is in the early stages of development (Alpha version)

Introduction to Workflows with Common Workflow Language


This tutorial guides you through the the fundamentals of designing and building an analysis workflow. It assumes no previous knowledge or experience of workflows or Common Workflow Language (CWL), but does assume some experience with the Unix command line.

Before following this tutorial, you should be comfortable working in a Unix command line environment and familiar with fundamental commands (cd, mv, mkdir, etc), piping and redirection, and simple Bash scripting, such as might be gained from following the Software Carpentry lesson, The Unix Shell. You might also have some experience with running tasks on a remote machine (by ssh connection) and in a cluster (high performance computing) environment.

CWL is based upon YAML. At any time, if you find yourself being confused by the YAML syntax, considering reviewing this guide on the subset of YAML used in CWL.

If you have previously written a workflow description, in CWL or another language, you may want to look instead at the User Guide.

Target Audience

This tutorial is aimed at researchers and research software engineers who would like to begin automating their analyses in workflows. If you’re unsure whether this tutorial is a good fit for you check the prerequisites listed above. You may also find our learner profiles helpful. These are also a useful resource during the lesson design process.


Setup Download files required for the lesson
00:00 1. Introduction What are computational workflows, and why are they useful?
What is Common Workflow Language?
How are CWL workflows written?
How do CWL workflows compare to shell workflows?
What are the advantages of using CWL workflows?
00:00 2. CWL and Shell Tools What is the difference between a CWL tool description and a CWL workflow?
How can we create a tool descriptor?
How can we use this in a single step workflow?
00:00 3. Developing Multi-Step Workflows How can we expand to a multi-step workflow?
Iterative workflow development
Workflows as dependency graphs
How to use sketches for workflow design?
00:00 4. Resources for Reusing Tools and Scripts How to find other solutions/CWL recipes for awkward problems?
00:00 5. Debugging Workflows How can I check my CWL file for errors?
How can I get more information to help with solving an error?
What are some common error messages when using CWL?
00:00 6. More information
00:00 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.