
# 投递Cromwell任务
#### 投递方法
当前Cromwell引擎可以通过命令行和SDK两种方式使用。
- SDK的使用方法请参见[Python SDK参考](https://support.huaweicloud.com/sdkreference-gcs/gcs_sdkreference_001.html)。初始化后调用Cromwell相关接口即可投递任务。
- 命令行使用方法请参见[命令参考](https://support.huaweicloud.com/clir-gcs/gcs_clir_01_0001.html)。安装命令行工具后，使用[gcs sub wdl](https://support.huaweicloud.com/clir-gcs/gcs_clir_04_0025.html)即可投递Cromwell任务。
 
#### WDL描述文件
Cromwell引擎使用WDL文件描述任务执行流程。更多WDL信息请参见[openwdl](https://github.com/openwdl/wdl#getting-started-with-wdl)。
#### 常见配置说明
- **runtime** --- 运行时配置
  您可以在**WDL描述文件**中配置runtime参数，指定流程的运行时参数，示例如下：
  ```
  runtime {
      docker: "swr.cn-north-4.myhuaweicloud.com/cromwell/gatk:4.1.0.0"
      cpu: "1"
      memory: "2G"
      disks: "/some/mnt 100 SSD"
    }
  ```
  表1runtime参数说明 
  | 参数                   | 必选 | 默认值   | 说明                                                  |
  |:---|:---|:---|:---|
  | docker               | 是  | --    | Task执行使用的镜像地址                                       |
  | cpu                  | 否  | 1     | Task执行需要的cpu核数，请根据实际情况选择                            |
  | memory               | 否  | "2G"  | Task执行需要的内存大小，请根据实际情况选择                             |
  | disks                | 否  | --    | Task执行需要的本地磁盘规格和挂载点，其中规格支持SSD、SATA、SAS              |
  | maxRetries           | 否  | 3     | Task执行失败后最大重试次数                                     |
  | continueOnReturnCode | 否  | 0     | 当Task执行返回码不为指定值时，则认为task执行失败。当指定为true时，则认为所有返回码均为成功 |
  | failOnStderr         | 否  | false | 当标准输出流中检测到错误信息时，是否认为task执行失败                        |
     
  
- **CallCaching** --- 缓存配置
  Cromwell能够检测到过去何时运行过作业，从而不必重新计算结果，节省运行时间和成本。Cromwell在之前运行的作业的缓存中搜索具有完全相同的命令和完全相同的输入的作业。如果在缓存中找到之前运行的作业，则使用之前作业的结果，而不是重新运行它。
  **华为云** **Cromwell默认启用callCaching** **功能** ，您也可以在**options** **文件**中配置读写cache的开关，并在提交流程时进行指定。配置示例如下：
  ```
  {
      "write_to_cache": true, // 是否将执行结果写入缓存
      "read_from_cache": false // 是否从缓存中读取执行结果
  }
  ```
  
- **Filesystem** --- 对象存储配置
  Cromwell支持使用华为云对象存储服务（OBS）作为数据的输入和输出。您可将流程需要的样本数据的文件存放在OBS中，并在流程**inputs文件**中通过OBS的存放地址进行访问。示例配置如下：
  ```
  {
  "PreProcessingForVariantDiscovery_GATK4.flowcell_unmapped_bams": [
  "obs://NA12878_24RG/HJYFJ.4.NA12878.downsampled.query.sorted.unmapped.bam",
  "obs:// NA12878_24RG/HK3T5.8.NA12878.interval.filtered.query.sorted.unmapped.bam"
  ]
  }
  ```
  
 
