🐓

CWL の requirements 一巡り: SubworkflowFeatureRequirement

2020/12/17に公開

この記事は CWL Advent Calendar 2020 の18日目の記事です。

Common Workflow Language (CWL) では、ワークフロー実行処理系が満たさなければならない機能以外にも、Process requirements と呼ばれる optional features についても標準化が行われています[1]

今回は CWL v1.2 で定義されている SubworkflowFeatureRequirement について簡単な解説を行います。また、各サンプルは可能な限り公式の準拠度テストで用いられているファイルを引用します。

対象読者

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 を使うことで、上の例のようなネストされたワークフローを定義することができるようになります。

脚注
  1. つまり、Process requiremens を含むワークフローやツール定義は、全ての CWL 準拠のワークフロー実行処理系で動かせるわけではありません。詳細は別記事を参照してください。 ↩︎

Discussion