
# 校验流程
#### 功能介绍
校验流程合法性。
#### URI
POST /v1/workflows/validate
#### 请求消息
**请求参数**
请求参数如[表1]所示。
 表1请求参数 
| 参数               | 是否必选 | 参数类型                                       | 描述         |
|:---|:---|:---|:---|
| workflow_content | 是    | [表2] | 需要校验的流程内容。 |
   
 表2workflow_content 
| 参数       | 是否必选 | 参数类型                                                                   | 描述                       |
|:---|:---|:---|:---|
| inputs   | 是    | [表3]                          | 流程输入，子元素为输入参数/输入参数属性键值对。 |
| metadata | 否    | [表4]                            | 流程中各Job关系定义。             |
| version  | 是    | String                                                                 | 模板版本号。                   |
| volumes  | 是    | [表5]                             | 存储卷。                     |
| workflow | 是    | [workflow](https://support.huaweicloud.com/tr-gcs/gcs_tr_01_0005.html) | 流程中每个Job的具体内容。           |
   
 表3inputs 
| 参数    | 是否必选 | 参数类型                                        | 描述                                                                                                              |
|:---|:---|:---|:---|
| 输入参数名 | 是    | [表6] | 输入参数/输入参数属性键值对，key为输入参数名，value结构见[表7 输入参数value](https://support.huaweicloud.com/api-gcs/gcs_api_005_0018.html)。 |
   
 表4metadata 
| 参数            | 是否必选 | 参数类型                                        | 描述           |
|:---|:---|:---|:---|
| Designer      | 是    | [表7] | 每个Job的设计器属性。 |
| relationships | 是    | [表12]  | 各Job依赖关系。    |
| version       | 是    | String                                      | 模板版本号。       |
   
 表5volumes 
| 参数       | 是否必选 | 参数类型                                         | 描述                                                                                   |
|:---|:---|:---|:---|
| 用户自定义卷名称 | 否    | [表16] | 挂载卷的情况，具体结构见[表17 卷信息](https://support.huaweicloud.com/api-gcs/gcs_api_005_0018.html) |
   
 表6输入参数value 
| 参数          | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| default     | 是    | String | 默认值                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| description | 是    | String | 描述信息                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| type        | 是    | String | 参数类型。支持选项： - string，类型为字符串。  - number，类型为数字。  - bool，类型为布尔值。  - array，类型为数组。   |
   
 表7Designer 
| 参数  | 是否必选 | 参数类型 | 描述                                                                                                                               |
|:---|:---|:---|:---|
| Job | 是    | Map  | 每个Job的属性，包括任务属性和连线属性，具体结构见[表8 任务元素属性]和[表11 连线元素属性] |
   
 表8任务元素属性 
| 参数       | 是否必选 | 参数类型                                          | 描述             |
|:---|:---|:---|:---|
| position | 是    | [表9]     | 元素的锚点坐标。       |
| relateto | 否    | List                                          | 以该Job为起点的依赖关系。 |
| size     | 是    | [表10] | 元素的大小。         |
| z        | 是    | Integer                                       | 元素的z坐标。        |
   
 表9position 
| 参数 | 是否必选 | 参数类型    | 描述     |
|:---|:---|:---|:---|
| x  | 是    | Integer | 锚点x坐标。 |
| y  | 是    | Integer | 锚点y坐标。 |
   
 表10size 
| 参数     | 是否必选 | 参数类型    | 描述    |
|:---|:---|:---|:---|
| width  | 是    | Integer | 元素宽度。 |
| height | 是    | Integer | 元素高度。 |
   
 表11连线元素属性 
| 参数     | 是否必选 | 参数类型                                       | 描述      |
|:---|:---|:---|:---|
| source | 是    | [表12] | 连线起点元素。 |
| target | 是    | [表12] | 连线终点元素。 |
| z      | 是    | Integer                                    | 元素的z坐标。 |
   
 表12端点元素 
| 参数 | 是否必选 | 参数类型   | 描述      |
|:---|:---|:---|:---|
| id | 是    | String | 端点元素的id |
   
表13relationships 
| 参数  | 是否必选 | 参数类型                                         | 描述                                                                                                                                           |
|:---|:---|:---|:---|
| Job | 是    | [表14] | 该Job的依赖和被依赖关系，map中只有一个以"references"为key的键值对，references的具体结构见[表15 references](https://support.huaweicloud.com/api-gcs/gcs_api_005_0018.html)。 |
   
 表14references 
| 参数       | 是否必选 | 参数类型 | 描述                                                                                                       |
|:---|:---|:---|:---|
| depends  | 否    | List | 该Job所依赖的Job列表，List中每个元素的结构见[表16 depends](https://support.huaweicloud.com/api-gcs/gcs_api_005_0018.html)。 |
| relateto | 否    | List | 依赖该Job的Job列表，List中每个元素为Job ID。                                                                           |
   
表15depends 
| 参数     | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| target | 是    | String | 所依赖的任务名，请确保指定的任务名必须存在。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| type   | 是    | Enum   | 依赖方式，可取值为： - whole，整体依赖，此为默认值。  - iterate，迭代式依赖。   例如，如果步骤一和步骤二都并发执行100个容器。 - 设置whole则表示步骤一全部执行结束后，才能开始执行步骤二。  - 设置iterate则表示，步骤一的1号执行完成，就可以开始执行步骤二的1号，并行执行，可以提高整体的并发效率。   |
   
 表16卷信息 
| 参数         | 是否必选 | 参数类型   | 描述                                                    |
|:---|:---|:---|:---|
| mount_from | 是    | Map    | 挂载卷的来源，Map子元素为以"pvc"为key的键值对，value可使用inputs或系统默认的输入值。 |
| mount_path | 是    | String | 卷挂载到的路径。                                              |
   
表17Job具体内容 
| 参数        | 是否必选 | 参数类型   | 描述                                                                                             |
|:---|:---|:---|:---|
| commands  | 是    | List   | Job所要执行的命令，List每个元素代表一条命令                                                                      |
| depends   | 是    | List   | 所依赖的Job和依赖类型，具体结构见[表16 depends](https://support.huaweicloud.com/api-gcs/gcs_api_005_0018.html) |
| metadata  | 是    | Map    | Job元信息，Map子元素为以"Designer"为key的Map，该嵌套的Map中只有一个以"id"为key的Map，value为Job ID                       |
| resources | 是    | Map    | Job资源申请量，两个子元素分别为"cpu"和"memory"                                                                |
| tool      | 是    | String | Job所要用到的工具                                                                                     |
| type      | 是    | Enum   | Job投递的环境类型。\["GCS.job"\]                                                                       |
   
**请求示例**
```
POST /v1/workflows/validate HTTP/1.1 
Host:Host Server   
Content-Type:application/json
{
"workflow_content": {
"version": "genecontainer_0_1",
"inputs": {
"prepare-command": {
"default": "echo job-prepare",
"description": "执行在所有命令之前的命令",
"type": "string",
"label": "basic"
},
"count": {
"default": 1,
"description": "执行的job个数",
"type": "number",
"label": "basic"
}
},
"workflow": {
"task": {
"type": "GCS.Job",
"tool": "nginx:latest",
"commands_iter": {
"command": "${prepare-command}; echo ${1};",
"vars_iter": ["range(0, ${count})"]
}
}
}
}
}
```
#### 响应消息
**响应参数**
响应中含有多个流程结构，结构请参见[流程语法说明](https://support.huaweicloud.com/tr-gcs/gcs_tr_01_0002.html)。
**响应示例**
```
{
  "version": "genecontainer_0_1",
  "inputs": {
    "count": {
      "default": 1,
      "description": "执行的job个数",
      "type": "number",
      "label": "basic"
    },
    "prepare-command": {
      "default": "echo job-prepare",
      "description": "执行在所有命令之前的命令",
      "type": "string",
      "label": "basic"
    }
  },
  "workflow": {
    "task": {
      "type": "GCS.Job",
      "tool": "nginx:latest",
      "image": "nginx:1.14",
      "commands_iter": {
        "command": "${prepare-command}; echo ${1};",
        "vars_iter": [
          "range(0, ${count})"
        ]
      },
      "depends": null
    }
  },
  "volumes": null,
  "outputs": null,
  "tools": {
    "nginx:latest": {
      "type": "container",
      "name": "nginx",
      "version": "latest",
      "image": "nginx:1.14",
      "cpu": "2C",
      "memory": "8G",
      "command": "",
      "description": "",
      "scope": "domain"
    }
  }
```
#### 状态码
- 正常 状态码如[表18]所示。
  
 表18状态码 
| 状态码 | 描述        |
|:---|:---|
| 200 | 流程列表查询成功。 |
   
- 异常 状态码如[6.3-状态码](https://support.huaweicloud.com/api-gcs/gcs_api_006_001.html)所示。
  
 
