

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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 支援版本 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 25.10.0 版 DSL 2

**注意**  
HealthOmics 不支援 Nextflow v25.10.0 中的嚴格語法模式。

若要將工作流程遷移至最新支援的版本 (v25.10.0)，請遵循 [Nextflow 升級指南](https://www.nextflow.io/docs/latest/migrations/25-10.html)。

遷移至 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)。

#### Nextflow 版本
<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，HealthOmics 會選擇 v23.10.0。
  + 如果範圍涵蓋 v24.10.8 和 v25.10.0，HealthOmics 會選擇 v24.10.8。
+ 如果沒有請求的版本，或請求的版本無效或因任何原因無法剖析：
  + 如果您指定 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"
  ```