2.9. Expression Tool#

ExpressionToolは、それ自体またはワークフローのステップとして実行することができるProcessの一種です。純粋な JavaScript 式を実行します。入力データを操作し、出力として結果を生成する必要がある複雑な JavaScript 式を分離する方法として使用されることを意図しています。

CommandLinetToolと同様に、inputsoutputs が必要です。しかし、baseCommand の代わりに、expression 属性を必要とします。

digraph G { compound=true; rankdir="LR"; fontname="Verdana"; fontsize="10"; graph [splines=ortho]; node [fontname="Verdana", fontsize="10", shape=box]; edge [fontname="Verdana", fontsize="10"]; subgraph cluster_0 { expression[style="filled" label="JavaScript"]; label="expression"; fill=gray; } inputs -> expression [lhead=cluster_0]; expression -> outputs [ltail=cluster_0]; }

CWL expression tool.#

uppercase.cwl#
cwlVersion: v1.2
class: ExpressionTool

requirements:
  InlineJavascriptRequirement: {}

inputs:
  message: string
outputs:
  uppercase_message: string

expression: |
  ${ return {"uppercase_message": inputs.message.toUpperCase()}; }

注釈

この式には.toUpperCase() で JavaScript の呼び出しが含まれているため、 InlineJavascriptRequirement を使用する必要があります。これは、ExpressionToolを使用するツールにとって、JavaScriptが必要であることを意味します。