8.3 工作流调用
支持通过API提供底层任务调度能力的支撑,包括:工作流定义的运行触发、工作流实例的状态查询。
1. 工作流定义运行
接口定义
请求方式:POST
请求URL:$home_url/universe/public-api/process/{processId}/run
home_url需要填入对应环境的IP/域名,eg: http://u.guandata.com
请求参数:
Name | Location | 类型 | 含义 | 必填 | 备注 |
Content-Type | Header | String | 内容类型 | 是 | application/json;charset=utf-8 |
token | Header | String | 登录用的Token | 是 | 调用登录校验API获取(8.1 登录校验) |
processId | 请求URL | Int | 工作流定义ID | 是 | 工作流定义ID, ID获取方式:(9.1 外部系统集成常见问题) |
params | Body | Json | 工作流参数 | 否 | Json对象数组格式的工作流参数,仅支持传入当前工作流内已定义好的参数,获取方式(4.7.1 参数与变量) |
|_name | Body | String | 参数名 | 按需 | 调用工作流需要传入的工作流参数名 |
|_value | Body | String | 参数值 | 按需 | 调用工作流需要传入的工作流参数值。 注意需要统一用文本类型传入,平台会按照该参数值的具体类型进行解析和使用。 (参数值支持使用系统参数/时间自定义参数,4.7.1 参数与变量) |
followScheduleStrategy | Body | Boolean | 沿用工作流调度设置中的运行结果通知策略(3.3.0及以上版本可用) | 否 | 默认值:false |
followAlertSettings | Body | Boolean | 沿用工作流及节点设置的默认通知渠道(3.3.0及以上版本可用) | 否 | 默认值:false |
返回参数:
Name | 类型 | 含义 | 返回条件 | 备注 |
processInstanceId | Int | 本次工作流运行后产生的实例ID | 运行成功 | |
name | String | 本次工作流运行后产生的实例名称 | 运行成功 |
接口调用示例
Header 示例
{
"Content-Type": "application/json; charset=utf-8",
"token": "ab7f1665-8dfc-4d8f-928d-c7a5aefc9332" /*登录校验接口获得的Token(参考8.1)*/
}
POST Body 示例
{
"params": [ /* 参数列表,若参数缺省未提供,则以工作流定义内设置的默认参数运行 */
{
"name": "prop1",
"value": "value1"
},
{
"name": "prop2",
"value": "value2"
}
]
}
Response
//启动工作流定义运行成功
{
"code": 0,
"msg": "success",
"data":{
"processInstanceId":523, /*新运行的工作流实例ID*/
"name":"workshop_SQL-0-1605704067605" /*工作流实例名称*/
}
}
//启动工作流定义运行失败
{
"code": 50003, /*错误代码*/
"msg": "{processId}此工作流定义不存在"
/*失败错误信息,工作流定义启动运行失败错误类型举例:
- 工作流定义不存在
- 工作流定义未上线
- 当前用户没有权限调度该工作流定义*/
}
2. 工作流实例查询
接口定义
请求方式:GET
请求URL:$home_url/universe/public-api/process/instance/{processInstanceId}
home_url需要填入对应环境的IP/域名,eg: http://u.guandata.com
请求参数:
Name | Location | 类型 | 含义 | 必填 | 备注 |
Content-Type | Header | String | 内容类型 | 是 | application/json;charset=utf-8 |
token | Header | String | 登录用的Token | 是 | 调用登录校验API获取(8.1 登录校验) |
processInstanceId | 请求URL | Int | 工作流实例ID | 是 | 工作流实例ID,获取方式: 1.调用工作流定义运行API获取(见当前篇章上文); 2.手动获取(9.1 外部系统集成常见问题) |
返回参数:
Name | 类型 | 含义 | 返回条件 | 备注 |
id | Int | 本次查询的工作流实例ID | 运行成功 | |
processDefinitionId | Int | 本次查询的工作流定义ID | 运行成功 | |
name | String | 工作流实例名称 | 运行成功 | |
state | String | 工作流实例当前运行状态: RUNNING_EXEUTION(运行中),FAILURE(失败),SUCCESS(成功),STOP(停止) | 运行成功 | |
startTime | DATETIME | 任务实例运行开始时间 | 运行成功 | |
endTime | DATETIME | 任务实例运行结束时间 | 运行成功 | |
tasks | Json | 当前工作流运行实例对应的任务实例列表 | 运行成功 | |
|_id | Int | 任务实例ID | 运行成功 | |
|_name | String | 任务实例名称 | 运行成功 | |
|_type | String | 任务实例类型:SQL、PYTHON、SUB_PROCESS、SFTP等 | 运行成功 | |
|_startTime | DATETIME | 任务实例开始运行时间 | 运行成功 | |
|_endTime | DATETIME | 任务实例结束运行时间 | 运行成功 |
接口调用示例
Header 示例
{
"Content-Type": "application/json; charset=utf-8",
"token": "ab7f1665-8dfc-4d8f-928d-c7a5aefc9332" /*登录校验接口获得的Token(参考8.1)*/
}
Response
//正常返回工作流实例运行状态
{
"code": 0,
"msg": "success",
"data":{
"id":523, /*工作流实例ID*/
"processDefinitionId":23, /*工作流定义ID*/
"name":"workshop_SQL-0-1605704067605", /*工作流实例名称*/
"state": "RUNNING_EXEUTION", /*工作流实例当前运行状态:RUNNING_EXEUTION(运行中),FAILURE(失败),SUCCESS(成功),STOP(停止)*/
"startTime": "2020-11-18T14:10:06.000+0000", /*工作流实例开始运行时间*/
"endTime": "2020-11-18T14:15:06.000+0000", /*工作流实例运行结束时间*/
"tasks": [ /* 任务实例列表 */
{
"id": "44473", /*任务实例ID*/
"name": "读取文件", /*任务实例名称*/
"type": "SFTP", /*任务实例类型:SQL、PYTHON、 SUB_PROCESS、SFTP等*/
"processDefinitionId": 23, /*工作流定义ID*/
"processInstanceId": 523, /*工作流实例ID*/
"state": "FAILURE", /*任务实例当前运行状态:RUNNING_EXEUTION(运行中)、SUCCESS(成功)、FAILURE(失败)、STOP(停止)*/
"startTime": "2021-03-19T12:14:55.000+0000", /*任务实例开始运行时间*/
"endTime": "2021-03-19T12:15:02.000+0000" /*任务实例运行结束时间*/
},
{
"id": "44474",
"name": "处理数据",
"type": "SQL",
"processDefinitionId": 23,
"processInstanceId": 523,
"state": "FAILURE",
"startTime": "2021-03-19T12:14:55.000+0000",
"endTime": "2021-03-19T12:15:02.000+0000"
},
{
"id": "44475",
"name": "数据校验",
"type": "QUALITY_MODEL",
"processDefinitionId": 23,
"processInstanceId": 523,
"state": "FAILURE",
"startTime": "2021-03-19T12:14:55.000+0000",
"endTime": "2021-03-19T12:15:02.000+0000"
},
{
"id": "44476",
"name": "插入数据",
"type": "SQL",
"processDefinitionId": 23,
"processInstanceId": 523,
"state": "FAILURE",
"startTime": "2021-03-19T12:14:55.000+0000",
"endTime": "2021-03-19T12:15:02.000+0000"
}
]
}
}
//无法正常返回工作流实例运行状态
{
"code": 50001, /*错误代码*/
"msg": "工作流实例不存在"
/*失败错误信息,工作流实例状态查询失败错误类型举例:
- 工作流实例不存在
- 当前用户没有权限查询该工作流实例*/
}
3. 任务实例查询
接口定义
请求方式:GET
请求URL:$home_url/universe/public-api/process/instance/task/{taskInstanceId}
home_url需要填入对应环境的IP/域名,eg: http://u.guandata.com
请求参数:
Name | Location | 类型 | 含义 | 必填 | 备注 |
Content-Type | Header | String | 内容类型 | 是 | application/json;charset=utf-8 |
token | Header | String | 登录用的Token | 是 | 调用登录校验API获取(8.1 登录校验) |
taskInstanceId | 请求URL | Int | 任务实例ID | 是 | 任务实例ID: 1.通过调用当前篇章上文(工作流实例查询)接口获取; 2.手动获取(9.1 外部系统集成常见问题) |
返回参数:
Name | 类型 | 含义 | 返回条件 | 备注 |
id | Int | 任务实例ID | 运行成功 | |
name | String | 任务实例名称 | 运行成功 | |
type | String | 任务实例类型:SQL、PYTHON、SUB_PROCESS、SFTP等 | 运行成功 | |
processInstanceId | Int | 本次查询的工作流实例ID | 运行成功 | |
processDefinitionId | Int | 本次查询的工作流定义ID | 运行成功 | |
startTime | DATETIME | 任务实例开始运行时间 | 运行成功 | |
endTime | DATETIME | 任务实例结束运行时间 | 运行成功 |
接口调用示例
Header 示例
{
"Content-Type": "application/json; charset=utf-8",
"token": "ab7f1665-8dfc-4d8f-928d-c7a5aefc9332" /*登录校验接口获得的Token(参考8.1)*/
}
Response
//正常返回任务实例运行状态
{
"code": 0,
"msg": "success",
"data":{
"id":44475, /*任务实例ID*/
"name":"数据校验", /*任务实例名称*/
"type": "QUALITY_MODEL", /*任务实例类型:SQL、PYTHON、 SUB_PROCESS、SFTP等*/
"processInstanceId":523, /*工作流实例ID*/
"processDefinitionId":23, /*工作流定义ID*/
"state": "RUNNING_EXEUTION", /*任务实例当前运行状态:RUNNING_EXEUTION(运行中)、SUCCESS(成功)、FAILURE(失败)、STOP(停止)*/
"startTime": "2020-11-18T14:10:06.000+0000", /*任务实例开始运行时间*/
"endTime": "2020-11-18T14:15:06.000+0000" /*任务实例运行结束时间*/
}
}
//无法正常返回任务实例运行状态
{
"code": 50001, /*错误代码*/
"msg": "任务实例不存在"
/*失败错误信息,任务实例状态查询失败错误类型举例:
- 任务实例不存在
- 当前用户没有权限查询该任务实例*/
}
4. 停止工作流实例
接口定义
请求方式:POST
请求URL:$home_url/universe/public-api/process/instance/{processInstanceId}/stop
home_url需要填入对应环境的IP/域名,eg: http://u.guandata.com
请求参数:
Name | Location | 类型 | 含义 | 必填 | 备注 |
Content-Type | Header | String | 内容类型 | 是 | application/json;charset=utf-8 |
token | Header | String | 登录用的Token | 是 | 调用登录校验API获取(8.1 登录校验) |
processInstanceId | 请求URL | Int | 流程实例ID | 是 |
接口调用示例
Header 示例
{
"Content-Type": "application/json; charset=utf-8",
"token": "ab7f1665-8dfc-4d8f-928d-c7a5aefc9332" /*登录校验接口获得的Token(参考8.1)*/
}
Response
//停止流程实例成功
{
"code": 0,
"msg": "success",
"data": null
}
//停止流程实例失败
{
"code": 50001, /*错误代码*/
"msg": "{processId}此工作流定义不存在"
/*失败错误信息,停止流程实例错误类型举例:
- 工作流定义不存在
- 工作流实例状态不正确
*/
}
5. 根据工作流ID获取工作流实例列表
*2.11.0及以上版本可使用
接口定义
请求方式:GET
请求URL:$home_url/universe/public-api/process/instance/list
home_url需要填入对应环境的IP/域名,eg: http://u.guandata.com
请求参数:
Name | Location | 类型 | 含义 | 必填 | 备注 |
Content-Type | Header | String | 内容类型 | 是 | application/json;charset=utf-8 |
token | Header | String | 登录用的Token | 是 | 调用登录校验API获取(8.1 登录校验) |
processDefinitionId | Params | Int | 工作流定义ID | 是 | |
startDate | Params | Date | 待查询的工作流起始时间 | 否 | |
endDate | Params | Date | 待查询的工作流终止时间 | 否 |
返回结果示例:
{
"code": 0,
"msg": "success",
"data": {
"totalList": [
{
"globalParams": null,
"runtimeParams": "{\"localRuntimeParams\":[],\"runtimeLineagesMap\":{\"获取数据-24600\":{\"direct\":\"IN\",\"entityNameList\":[\"大数据量-0630\"],\"metadataType\":\"TABLE\",\"prop\":\"获取数据-24600\",\"sourceType\":\"DATASET\",\"type\":\"INTEGER\",\"use\":false,\"value\":\"112\"},\"插入数据-89132\":{\"direct\":\"OUT\",\"entityNameList\":[\"大数据量\"],\"metadataType\":\"TABLE\",\"prop\":\"插入数据-89132\",\"sourceType\":\"DATASOURCE\",\"type\":\"INTEGER\",\"use\":false,\"value\":\"3\"}},\"runtimeParamsMap\":{}}",
"host": "127.0.0.1",
"id": 2176,
"state": "SUCCESS",
"processInstancePriority": "MEDIUM",
"timeoutStrategy": null,
"processDefinitionId": 112,
"warningType": "NONE",
"cmdTypeIfComplement": "START_PROCESS",
"parentInstanceId": 0,
"projectGlobalParamsList": [],
"maxTryTimes": 0,
"name": "插入至MySQL-1-1658825820532",
"runtimeParameters": {
"runtimeParamsMap": {},
"localRuntimeParams": [],
"runtimeLineagesMap": {
"获取数据-24600": {
"prop": "获取数据-24600",
"direct": "IN",
"type": "INTEGER",
"value": "112",
"defaultValue": null,
"sourceType": "DATASET",
"metadataType": "TABLE",
"entityNameList": [
"大数据量-0630"
],
"detail": null,
"use": false
},
"插入数据-89132": {
"prop": "插入数据-89132",
"direct": "OUT",
"type": "INTEGER",
"value": "3",
"defaultValue": null,
"sourceType": "DATASOURCE",
"metadataType": "TABLE",
"entityNameList": [
"大数据量"
],
"detail": null,
"use": false
}
}
},
"parentInstanceName": null,
"commandParam": "{}",
"projectId": 0,
"projectGlobalParamsMap": {},
"scheduleTime": null,
"commandType": "START_PROCESS",
"warningGroupId": 0,
"recovery": "NO",
"tenantCode": null,
"instanceTimeoutStrategy": null,
"timeout": 0,
"historyCmd": "START_PROCESS",
"duration": 735,
"projectGlobalParams": null,
"commandStartTime": "2022-07-26T16:57:00.000+08:00",
"failureStrategy": "CONTINUE",
"globalParamsMap": {},
"alertConfigs": "[]",
"startTime": "2022-07-26T16:57:01.000+08:00",
"processType": "PROCESS",
"dependenceScheduleTimes": null,
"executorId": 14,
"processDefinition": null,
"workerGroupId": -1,
"taskDependType": "TASK_POST",
"userId": 14,
"isSubProcess": "NO",
"workerGroupName": null,
"tenantId": 1,
"endTime": "2022-07-26T17:09:16.000+08:00",
"queue": null,
"runTimes": 1
}
],
"total": 1,
"currentPage": 1,
"totalPage": 1
},
"errorDetail": null
}