

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

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

工作 HealthOmics 流定义文件必须满足以下要求：
+ 任务必须定义 input/output 参数、Amazon ECR 容器存储库和运行时规范，例如内存或 CPU 分配。
+ 验证您的 IAM 角色是否具有所需的权限。<a name="lower"></a>
  + 您的工作流程可以访问来自 AWS 资源（例如 Amazon S3）的输入数据。
  + 您的工作流程可以在需要时访问外部存储库服务。
+ 在工作流程定义中声明输出文件。要将中间运行文件复制到输出位置，请将其声明为工作流程输出。
+ 输入和输出位置必须与工作流程位于同一区域。
+ HealthOmics 存储工作流输入必须处于`ACTIVE`状态。 HealthOmics 不会导入带有`ARCHIVED`状态的输入，从而导致工作流程失败。有关 Amazon S3 对象输入的信息，请参阅[HealthOmics 运行输入](workflows-run-inputs.md)。
+ 如果您的 ZIP 存档包含单个工作流程定义或名为 “main” 的文件，则工作流程的**main**位置是可选的。<a name="lower"></a>
  + 路径示例：`workflow-definition/main-file.wdl`
+ 在通过 Amazon S3 或本地驱动器创建工作流程之前，请创建包含工作流程定义文件和任何依赖项（例如子工作流程）的 zip 存档。
+ 我们建议您在工作流程中声明 Amazon ECR 容器作为验证亚马逊 ECR 权限的输入参数。

Nextflow 的其他
+ **/bin**

  Nextflow 工作流程定义可能包括带有可执行脚本的 /bin 文件夹。此路径对任务具有只读权限和可执行访问权限。依赖这些脚本的任务应使用由相应脚本解释器构建的容器。最佳做法是直接给口译员打电话。例如：

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

  基于 NextFlow 的工作流程定义可以包括有助于抽象参数定义或流程资源配置文件的 nextflow.config 文件。要支持在多个环境中开发和执行 Nextflow 管道，请使用 HealthOmics特定的配置，使用 includeConfig 指令将其添加到全局配置中。要保持可移植性，请使用以下代码将工作流程配置为仅在 HealthOmics 运行时包含文件：

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

  HealthOmics 不支持引擎生成的 dag、跟踪和执行报告。您可以使用和 GetRunTask API 调用的组合生成跟踪报告 GetRun 和执行报告的替代方案。

其他 CWL 注意事项：
+ **Container image uri interpolation**

  HealthOmics 允许的 dockerPull 属性成为内联 javascript 表达式。 DockerRequirement 例如：

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

  这允许您将容器映 URIs 像指定为工作流程的输入参数。
+ **Javascript expressions**

  Javascript 表达式必须`strict mode`兼容。
+ **Operation process**

  HealthOmics 不支持 CWL 操作进程。