

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

# HealthOmics 工作流程定義需求
<a name="workflow-defn-requirements"></a>

HealthOmics 工作流程定義檔案必須符合下列要求：
+ 任務必須定義輸入/輸出參數、Amazon ECR 容器儲存庫，以及執行時間規格，例如記憶體或 CPU 配置。
+ 確認您的 IAM 角色具有必要的許可。<a name="lower"></a>
  + 您的工作流程可以存取來自 AWS 資源的輸入資料，例如 Amazon S3。
  + 您的工作流程可以在需要時存取外部儲存庫服務。
+ 在工作流程定義中宣告輸出檔案。若要將中繼執行檔案複製到輸出位置，請將它們宣告為工作流程輸出。
+ 輸入和輸出位置必須與工作流程位於相同的區域。
+ HealthOmics 儲存工作流程輸入必須處於 `ACTIVE` 狀態。HealthOmics 不會匯入`ARCHIVED`狀態為 的輸入，導致工作流程失敗。如需 Amazon S3 物件輸入的資訊，請參閱 [HealthOmics 執行輸入](workflows-run-inputs.md)。
+ 如果您的 ZIP 封存包含單一工作流程定義或名為「主要」的檔案，則工作流程**main**的位置是選用的。<a name="lower"></a>
  + 路徑範例： `workflow-definition/main-file.wdl`
+ 從 Amazon S3 或本機磁碟機建立工作流程之前，請先建立工作流程定義檔案和任何相依項的 zip 封存檔，例如子工作流程。
+ 建議您將工作流程中的 Amazon ECR 容器宣告為輸入參數，以驗證 Amazon ECR 許可。

其他 Nextflow 考量事項：
+ **/bin**

  Nextflow 工作流程定義可能包含具有可執行指令碼的 /bin 資料夾。此路徑具有任務的唯讀和可執行存取權。依賴這些指令碼的任務應使用以適當的指令碼解譯器建置的容器。最佳實務是直接呼叫解譯器。例如：

  ```
  process my_bin_task {
     ...
     script:
        """
        python3 my_python_script.py
        """
  }
  ```
+ **includeConfig**

  以 Nextflow 為基礎的工作流程定義可以包含 nextflow.config 檔案，以協助抽象參數定義或程序資源描述檔。若要支援在多個環境中開發和執行 Nextflow 管道，請使用您使用 includeConfig 指令新增至全域組態的 HealthOmics 特定組態。若要維持可攜性，請使用下列程式碼，將工作流程設定為僅在 HealthOmics 上執行時包含 檔案：

  ```
  // at the end of the nextflow.config file
  if ("$AWS_WORKFLOW_RUN") {
      includeConfig 'conf/omics.config'
  }
  ```
+ **Reports**

  HealthOmics 不支援引擎產生的凹陷、追蹤和執行報告。您可以使用 GetRun 和 GetRunTask API 呼叫的組合來產生追蹤和執行報告的替代方案。

其他 CWL 考量事項：
+ **Container image uri interpolation**

  HealthOmics 允許 DockerRequirement 的 dockerPull 屬性成為內嵌 javascript 表達式。 DockerRequirement 例如：

  ```
  requirements:
    DockerRequirement:
      dockerPull: "$(inputs.container_image)"
  ```

  這可讓您將容器映像 URIs 指定為工作流程的輸入參數。
+ **Javascript expressions**

  Javascript 表達式必須`strict mode`合規。
+ **Operation process**

  HealthOmics 不支援 CWL 操作程序。