ToolJig: A simple approach to building Common Workflow Language tool descriptions and workflows

Image credit

The Common Workflow Language (CWL) is an open specification for describing command-line tools and workflows. CWL documents are used in many scientific disciplines to ensure that tools and workflows can be executed in a manner that is portable across workflow engines and computer systems. ToolJig facilitates creation of CWL tool descriptions, workflows, and input-object files for those tools. This video provides insight about ToolJig. This portion of ToolJig focuses on building workflows. Use this app if you wish to create tool descriptions.

Workflows created in ToolJig are compatible with v1.2 (or 1.0 or 1.1) of the CWL specification. You can see some example CWL workflows here. Our goal is support common use cases for research analyses. However, some options within the CWL specification are not supported; users should consult the specification if they wish to use other available features.

This app was created by the Piccolo lab. You can read our paper here. We are open to your feedback! Please submit an issue if you would like to report a bug or request a feature.

Required field = *

Upload tool descriptions*:

The first step to creating a workflow is to upload CWL tool descriptions that will be used as steps within the workflow.

Here you can see which tool files have been uploaded. You can also remove () these files if you wish.

  1. {{ tool_name }}

Upload existing workflow file (optional):

If you previously created a CWL workflow using ToolJig, you can upload it here and then edit it below. If you do not need to edit an existing CWL file, skip this step.

Specify basics*:

This section enables you to create a CWL workflow. Please fill in the information as requested below.

This identifier must contain only letters, numbers, and underscores. This identifier will be used within the name of the CWL document that is generated. Show/hide example.

This description will inform workflow users about its purpose and function. Show/hide example.
This optional description can provide more detailed documentation about the workflow. Show/hide example.
This is optional. Specifying the author's name is helpful to others who may use the workflow.
This is optional. Specifying the author's ORCID identifier enables others who may use the workflow to obtain more information about the author. Show/hide example.
Please select a software license that applies to this CWL document. This will indicate conditions under which others can use the document. Details about these licenses and a more complete list can be found here.

Please correct the following error(s):

  • {{ error }}

Define workflow steps:

Here you can define each step of the workflow.

Show/hide example.

The inputs for {{ newStepToolName }} are shown below. For each input, you must select a single source. You always have the option to create an input for the entire workflow and use that as the source. In these cases, you also need to specify a corresponding value in the input-object file. Alternatively, you can indicate that the output of a prior step will be used as input for this step.

A special case occurs when a step has an "output file" input. Normally, the user would specify the name of this "output file" and thus it would need to be a workflow input. However, naming this file is only necessary if the "output file" is used as an output for the entire workflow. If an "output file" from one step will only be used as an input for a subsequent step, you can indicate that a temporary file should be generated. Alternatively, you can specify a static name for this file. In either case, this relieves you from having to specify workflow inputs unnecessarily.

The outputs for {{ newStepToolName }} are shown below. For each output, please indicate whether you would like the output to be collected for the entire workflow. If not, the output instead can be used as input for another step of the workflow.

Here you can see which steps have been added. You can also edit () or remove () steps if you wish.

  1. {{ stepName }}

Please correct the following error(s):

  • {{ error }}


ToolJig does not have a way to save your CWL file, so be sure to download it before you close the app. If you wish to edit the CWL file later, you can upload it back into ToolJig.

Create input-object file:

Once you have created a valid CWL file, you can create an input-object file, which defines inputs that will be used when the workflow is executed in one particular instance. The boxes below correspond to the inputs for the overall workflow (not for step inputs that use outputs from other steps).

Please correct the following error(s):

  • {{ error }}


Example command to execute the tool:

First, you must install cwltool and Docker Engine. Then you can execute the following command, assuming the CWL file and input-object file are in your current working directory (if not, modify the command to point to the locations of these files). Alternatively, you can execute the tool using a variety of other engines.