2.9. 表达式工具#

表达式工具是一种类型的流程 (process), 可单独运行,或作为工作流的一个步骤运行。它执行纯 JavaScript 表达式,意在隔离复杂的 JavaScript 表达式,以对输入数据进行运算,并生成结果作为输出。

与命令行工具一样,它需要 inputs(输入)和 outputs(输出),但与之不同的是,它需要的是 expression 属性,而非 baseCommand.

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 表达式工具。#

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. 这向使用表达式工具的其他工具表明 JavaScript 是必备条件。