Write your workflow
StreamFlow relies on the Common Workflow Language (CWL) standard to describe workflows. In particular, it supports version v1.2
of the standard, which introduces conditional execution of workflow steps.
The reader is referred to the official CWL documentation to learn how the workflow description language works, as StreamFlow does not introduce any modification to the original specification.
Note
StreamFlow supports all the features required by the CWL standard conformance, and nearly all optional features, for versions v1.0
, v1.1
, and v1.2
. For a complete overview of CWL conformance status, look here.
The following snippet contain a simple example of CWL workflow, which extracts a Java source file from a tar archive and compiles it.
cwlVersion: v1.2
class: Workflow
inputs:
tarball: File
name_of_file_to_extract: string
outputs:
compiled_class:
type: File
outputSource: compile/classfile
steps:
untar:
run:
class: CommandLineTool
baseCommand: [tar, --extract]
inputs:
tarfile:
type: File
inputBinding:
prefix: --file
extractfile: string
outputs:
extracted_file:
type: File
outputBinding:
glob: $(inputs.extractfile)
in:
tarfile: tarball
extractfile: name_of_file_to_extract
out: [extracted_file]
compile:
run:
class: CommandLineTool
baseCommand: javac
arguments: ["-d", $(runtime.outdir)]
inputs:
src:
type: File
inputBinding:
position: 1
outputs:
classfile:
type: File
outputBinding:
glob: "*.class"
in:
src: untar/extracted_file
out: [classfile]