This lesson is still being designed and assembled (Pre-Alpha version)

Introduction to Workflows with Common Workflow Language: For Contributors

For Contributors

Use the Episodes menu above to browse through the pages for individual blocks of learning objectives. These pages can be used for designing challenges/exercises for the tutorial, as described in detail on this Issue.

You may find it helpful during lesson/exercise design to refer to these draft concept maps for the tutorial material


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.