

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 对 HealthOmics 工作流定义语言的版本支持
<a name="workflows-lang-versions"></a>

HealthOmics 支持用 Nextflow、WDL 或 CWL 编写的工作流程定义文件。以下各节提供有关这些语言的 HealthOmics 版本支持的信息。

**Topics**
+ [WDL 版本支持](#workflows-lang-versions-WDL)
+ [CWL 版本支持](#workflows-lang-versions-CWL)
+ [Nextflow版本支持](#workflows-lang-versions-nextflow)

## WDL 版本支持
<a name="workflows-lang-versions-WDL"></a>

HealthOmics 支持 WDL 规范的 1.0、1.1 版本和 WDL 规范的开发版本。

每个 WDL 文档都必须包含一个版本声明，以指定它所遵循的规范版本（主要版本和次要版本）。有关版本的更多信息，请参阅 [WDL](https://github.com/openwdl/wdl/blob/wdl-1.1/SPEC.md#versioning) 版本控制

WDL 规范的 1.0 和 1.1 版本不支持该`Directory`类型。要将该`Directory`类型用于输入或输出，请在文件第一行**development**中将版本设置为：

```
version development  # first line of .wdl file
     ... remainder of the file ...
```

## CWL 版本支持
<a name="workflows-lang-versions-CWL"></a>

HealthOmics 支持 CWL 语言的 1.0、1.1 和 1.2 版本。

您可以在 CWL 工作流程定义文件中指定语言版本。有关 CWL 的更多信息，请参阅 [CWL 用户指南](https://github.com/common-workflow-language/user_guide)

## Nextflow版本支持
<a name="workflows-lang-versions-nextflow"></a>

HealthOmics 支持四个 Nextflow 稳定版本。Nextflow 通常每六个月发布一次稳定版本。 HealthOmics 不支持每月发布的 “边缘” 版本。

HealthOmics 支持每个版本中已发布的功能，但不支持预览功能。

### 支持的版本
<a name="workflows-versions-nextflow-list"></a>

HealthOmics 支持以下 Nextflow 版本：
+ Nextflow v22.04.01 DSL 1 和 DSL 2
+ Nextflow v23.10.0 DSL 2（默认）
+ Nextflow v24.10.8 DSL 2
+ Nextflow v25.10.0 DSL 2

**注意**  
HealthOmics 在 Nextflow v25.10.0 中不支持严格的语法模式。

要将您的工作流程迁移到支持的最新版本 (v25.10.0)，请按照 [Next](https://www.nextflow.io/docs/latest/migrations/25-10.html) flow 升级指南进行操作。

迁移到 Nextflow v24 和 v25 时，有一些重大更改。遵循 [Nextflow 迁移指南](https://www.nextflow.io/docs/latest/migrations/index.html)。

### 检测和处理 Nextflow 版本
<a name="workflows-versions-processing"></a>

HealthOmics 检测您指定的 DSL 版本和 Nextflow 版本。它会根据这些输入自动确定要运行的最佳 Nextflow 版本。

#### DSL 版本
<a name="workflows-versions-p1"></a>

HealthOmics 在您的工作流程定义文件中检测请求的 DSL 版本。例如，您可以指定:`nextflow.enable.dsl=2`.

HealthOmics 默认情况下支持 DSL 2。如果在工作流程定义文件中指定，它可提供与 DSL 1 的向后兼容性。
+ 如果你指定 DSL 1，则 HealthOmics 运行 Nextflow v22.04 DSL1 （唯一支持的运行 DSL 1 的版本）。
+ 如果您未指定 DSL 版本，或者由于任何原因（例如工作流程定义文件中的语法错误）而 HealthOmics 无法解析 DSL 信息，则 HealthOmics 默认为 DSL 2 并运行 Nextflow v23.10.0。
+ 要将工作流程从 DSL 1 升级到 DSL 2 以利用最新的 Nextflow 版本和软件功能，请参阅[从 DSL 1 迁移](https://nextflow.io/docs/latest/dsl1.html)。

#### 下一流版本
<a name="workflows-versions-p2"></a>

HealthOmics 如果你提供了 Nextflow 配置文件 (nextflow.config) 中请求的 Nextflow 版本。我们建议您在文件末尾添加`nextflowVersion`子句，以避免包含的配置中出现任何意外覆盖。有关更多信息，请参阅 [Nextflow 配置](https://nextflow.io/docs/latest/config.html)。

您可以使用以下语法指定 Nextflow 版本或一系列版本：

```
   // exact match
   manifest.nextflowVersion = '1.2.3'   
            
   // 1.2 or later (excluding 2 and later)
   manifest.nextflowVersion = '1.2+'         
            
   // 1.2 or later
   manifest.nextflowVersion = '>=1.2'
            
   // any version in the range 1.2 to 1.5
   manifest.nextflowVersion = '>=1.2, <=1.5' 
            
   // use the "!" prefix to stop execution if the current version 
   // doesn't match the required version.
   manifest.nextflowVersion = '!>=1.2'
```

HealthOmics 按如下方式处理 Nextflow 版本信息：
+ 如果您**=**使用指定 HealthOmics 支持的确切版本，则 HealthOmics 使用该版本。
+ 如果您使用**\$1**指定不支持的确切版本或一系列版本，则 HealthOmics 会引发异常并导致运行失败。如果您想严格处理版本请求，请考虑使用此选项，如果请求包含不支持的版本，则会很快失败。
+ 如果指定版本范围，则 HealthOmics 使用该范围内优先级最高的版本。从最高到最低的优先顺序为 v23.10.0、v22.04.0、v24.10.8 和 v25.10.0。例如：
  + 如果范围涵盖了 v23.10.0、v24.10.8 和 v25.10.0，则选择 v23.10.0。 HealthOmics 
  + 如果范围涵盖了 v24.10.8 和 v25.10.0，则选择 v24.10.8。 HealthOmics 
+ 如果没有请求的版本，或者请求的版本无效或由于任何原因无法解析：
  + 如果你指定了 DSL 1，则 HealthOmics 运行 Nextflow v22.04。
  + 否则， HealthOmics 运行 Nextflow v23.10.0。

 您可以检索有关每次运行时 HealthOmics 使用的 Nextflow 版本的以下信息：
+ 运行日志包含有关 HealthOmics 用于运行的实际 Nextflow 版本的信息。
+ HealthOmics 如果与您请求的版本不直接匹配，或者需要使用与您指定的版本不同的版本，则会在运行日志中添加警告。
+ 对 **GetRun** API 操作的响应包括一个字段 (`engineVersion`)，其中包含 HealthOmics 用于运行的实际 Nextflow 版本。例如：

  ```
  "engineVersion":"22.04.0"
  ```