-
Notifications
You must be signed in to change notification settings - Fork 18
workflow manage
- 工作流(workflow): 一个工作流是一个 DAG 图,每个结点表示一个具体的任务。
- 结点(node): 执行的最小单元,一个结点代表了一个 task,这个 task 可能是
mr/shell/spark/java/import/export
等任务类型。
资源、数据源有项目级、工作流级。在冲突情况下,工作流级资源 > 项目级资源。
说明:对应项目 "有修改权限的用户和项目所有者" 可以创建。新增一个工作流到调度系统,不包含调度周期的配置。当前工作流不支持长任务。
POST /projects/:project-name/workflows/:workflow-name
Parameters: desc={desc}&proxyUser={proxyUser}&queue={queueName}&data={data}&file={zipfile}&extras={extras}
内容上传的 Content-Type 使用:multipart/form-data
Response:
Status: 201 Created
{
"name": "bdi_base_workflow",
"desc": "bdi 基础数据加工工作流",
"projectName": "bdi",
"data": {
"nodes": [{
"name": "node1",
"desc": "run mapreduce task",
"type": "MR",
"parameter": {...},
"dep": ["nodex", "nodey"],
"extras": {...}
}
],
"userDefParams": [{
"prop": "year",
"value": "$[yyyy]"
}
]
},
"proxyUser": "bdi",
"queue": "myqueue",
"createTime": 1468391778000,
"modifyTime": 1468391778000,
"owner": "bdi_user",
"extras": {...}
}
请求参数:
参数 | 类型 | 是否必选 | 描述 | 说明 |
---|---|---|---|---|
desc | string | 是 | 工作流的描述 | 长度为 [0,256] |
proxyUser | string | 是 | 代理运行的用户 | 检查:查看该代理用户是否在提交用户配置的代理范围内 |
queue | string | 是 | 工作流运行的队列 | |
data | jsonObject | 否 | 描述工作流的 json 结构 | |
file | binary | 否 | 压缩文件 | 里面存放工作流相关的定义文件 workflow.json 和资源文件,仅支持 zip 格式 |
extras | jsonObject | 否 | 工作流扩展信息 | 为 json 对象,实际运行不会解析该参数 |
注意 data 和 file 必须有一个存在,都存在则会 file 有效。
data 描述了工作流的内容,是采用 json 描述的,如果不希望通过该种方式传递,也可以传一个 file 文件,这个文件包含了工作流的描述,以及相关的资源信息。
注意,上传文件只支持 zip,上传的文件会被命名为 ${name}.zip,这里 name 是工作流的名称。
我们说一下 data/workflow.json 的描述:
参数 | 类型 | 是否必选 | 描述 | 说明 |
---|---|---|---|---|
nodes | jsonArray | 是 | 工作流中的所有节点信息 | 为 json 数组,其中每项 node 的配置见:[[任务描述 |
userDefParams | jsonArray | 否 | 自定义参数配置 | 为 json 数组,关于自定义参数相关内容,详见:[[参数说明 |
nodes 中每个结点参数描述如下:
参数 | 类型 | 是否必选 | 描述 | 说明 |
---|---|---|---|---|
name | string | 是 | 节点名称 | |
desc | string | 否 | 节点描述 | |
type | string | 是 | 节点类型 | 节点类型参考:[[任务描述 |
parameter | jsonObject | 是 | 参数配置 | json 的参数形式,不同任务类型的值不一样 jsonObject, 见:[[任务描述 |
dep | jsonArray | 否 | 依赖节点 | 当前节点所依赖的前置节点名列表 |
extras | jsonObject | 否 | 结点扩展信息 | 为 json 对象,实际运行不会解析该参数 |
说明:对应项目 "有修改权限的用户和项目所有者" 能够修改工作流。工作流若不存在,则会新增。当前工作流不支持长任务。
PUT /projects/:project-name/workflows/:workflow-name
内容上传的 Content-Type 使用:multipart/form-data
Response:
Status: 200 OK
请求和返回同上。
说明:对应项目 "有修改权限的用户和项目所有者" 能够修改工作流。当前工作流不支持长任务。
PATCH /projects/:project-name/workflows/:workflow-name
内容上传的 Content-Type 使用:multipart/form-data
Response:
Status: 200 OK
请求说明:所有参数都是可选的。
请求和返回同上。
说明:对应项目 "有修改权限的用户和项目所有者" 能够拷贝工作流。目标工作流必须是不存在的,不然拷贝出现异常。
POST /projects/:project-name/workflow-copy
Parameter: srcWorkflowName={srcWorkflowName}&destWorkflowName={destWorkflowName}
Response:
Status: 201 Created
返回拷贝的新的工作流。
请求参数:
参数 | 类型 | 是否必选 | 描述 | 说明 |
---|---|---|---|---|
srcWorkflowName | string | 是 | 原工作流名称 | |
destWorkflowName | string | 是 | 目标工作流名称 |
说明:对应项目 "有修改权限的用户和项目所有者" 能够修改工作流。注意,这个修改对流任务也有效。
PUT /projects/:project-name/workflows-conf
Parameters: queue={queue}&proxyUser={proxyUser}
Response:
Status: 200 OK
请求参数:
参数 | 类型 | 是否必选 | 描述 | 说明 |
---|---|---|---|---|
proxyUser | string | 否 | 代理运行的用户 | 检查:查看该代理用户是否在提交用户配置的代理范围内 |
queue | string | 否 | 工作流运行的队列 |
说明:对应项目 "有修改权限的用户和项目所有者" 能够删除工作流,删除操作会将工作流以及调度信息全部删除。
DELETE /projects/:project-name/workflows/:workflow-name
Response:
Status: 200 OK
说明:对应项目 "有查看权限的用户和项目所有者" 能够查询。
该 API 不会返回工作流的配置详情。
GET /projects/:project-name/workflows
Response:
Status: 200 OK
[
{
"name": "bdi_base_workflow",
"desc": "bdi基础数据加工工作流",
"projectName": "bdi",
"createTime": 1468391778000,
"modifyTime": 1468391778000,
"proxyUser": "bdi",
"queue": "myqueue",
"owner": "bdi_user",
"extras": {...}
}
]
GET /projects/:project-name/workflows/:workflow-name
Response:
Status: 200 OK
[
{
"name": "bdi_base_workflow",
"desc": "bdi基础数据加工工作流",
"data": {
...
},
"projectName": "bdi",
"createTime": 1468391778000,
"modifyTime": 1468391778000,
"proxyUser": "bdi",
"queue": "myqueue",
"owner": "bdi_user",
"extras": {...}
}
]
说明:项目有 "查看权限或项目所有者" 能够下载工作流信息。下载工作流以及资源信息。如果工作流没有 file,会将工作流的 data 下载下来,文件名为 workflow.json。
GET /projects/:project-name/workflows/:workflow-name/file
Response:
Status: 200 OK