🐓
CWL の requirements 一巡り: SubworkflowFeatureRequirement
この記事は CWL Advent Calendar 2020 の18日目の記事です。
Common Workflow Language (CWL) では、ワークフロー実行処理系が満たさなければならない機能以外にも、Process requirements と呼ばれる optional features についても標準化が行われています[1]。
今回は CWL v1.2 で定義されている SubworkflowFeatureRequirement
について簡単な解説を行います。また、各サンプルは可能な限り公式の準拠度テストで用いられているファイルを引用します。
対象読者
- CWL をかじったことがあるけど
requirements
はよくわからない人- つまり中級者以上が対象です。
- 初心者は CWL Advent Calendar 2020 の初日の記事へ Go!
例
Conformance test #45: tests/count-lines8-wf.cwl:
#!/usr/bin/env cwl-runner
class: Workflow
cwlVersion: v1.2
inputs:
file1: File
outputs:
count_output:
type: int
outputSource: step1/count_output
requirements:
- class: SubworkflowFeatureRequirement
steps:
step1:
run: count-lines1-wf.cwl
in:
file1: file1
out: [count_output]
step1
で使われている tests/count-lines1-wf.cwl
#!/usr/bin/env cwl-runner
class: Workflow
cwlVersion: v1.2
inputs:
file1:
type: File
outputs:
count_output:
type: int
outputSource: step2/output
steps:
step1:
run: wc-tool.cwl
in:
file1: file1
out: [output]
step2:
run: parseInt-tool.cwl
in:
file1: step1/output
out: [output]
CWL は、デフォルトではサブワークフロー(ワークフローのステップとして別のワークフローを指定する)をサポートしていません。SubworkflowFeatureRequirement
を使うことで、上の例のようなネストされたワークフローを定義することができるようになります。
Discussion