Skip to content

workflow manage

qifeng dai edited this page Jul 24, 2017 · 43 revisions

术语解释

  • 工作流(workflow): 一个工作流是一个 DAG 图,每个结点表示一个具体的任务。
  • 结点(node): 执行的最小单元,一个结点代表了一个 task,这个 task 可能是 mr/shell/spark/java/import/export 等任务类型。

相关说明

资源、数据源有项目级、工作流级。在冲突情况下,工作流级资源 > 项目级资源

1.创建工作流

说明:对应项目 "有修改权限的用户和项目所有者" 可以创建。新增一个工作流到调度系统,不包含调度周期的配置。当前工作流不支持长任务

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 对象,实际运行不会解析该参数

2.修改并创建工作流

说明:对应项目 "有修改权限的用户和项目所有者" 能够修改工作流。工作流若不存在,则会新增。当前工作流不支持长任务

PUT  /projects/:project-name/workflows/:workflow-name
内容上传的 Content-Type 使用:multipart/form-data

Response:
Status: 200 OK

请求和返回同上。

3.修改工作流

说明:对应项目 "有修改权限的用户和项目所有者" 能够修改工作流。当前工作流不支持长任务

PATCH  /projects/:project-name/workflows/:workflow-name
内容上传的 Content-Type 使用:multipart/form-data

Response:
Status: 200 OK

请求说明:所有参数都是可选的。

请求和返回同上。

4.工作流拷贝

说明:对应项目 "有修改权限的用户和项目所有者" 能够拷贝工作流。目标工作流必须是不存在的,不然拷贝出现异常。

POST  /projects/:project-name/workflow-copy
Parameter: srcWorkflowName={srcWorkflowName}&destWorkflowName={destWorkflowName}

Response:
Status: 201 Created

返回拷贝的新的工作流。

请求参数:

参数 类型 是否必选 描述 说明
srcWorkflowName string 原工作流名称
destWorkflowName string 目标工作流名称

5.修改项目的全局配置信息

说明:对应项目 "有修改权限的用户和项目所有者" 能够修改工作流。注意,这个修改对流任务也有效

PUT  /projects/:project-name/workflows-conf
Parameters: queue={queue}&proxyUser={proxyUser}

Response:
Status: 200 OK

请求参数:

参数 类型 是否必选 描述 说明
proxyUser string 代理运行的用户 检查:查看该代理用户是否在提交用户配置的代理范围内
queue string 工作流运行的队列

6.删除工作流

说明:对应项目 "有修改权限的用户和项目所有者" 能够删除工作流,删除操作会将工作流以及调度信息全部删除。

DELETE  /projects/:project-name/workflows/:workflow-name

Response:
Status: 200 OK

7.查询工作流

说明:对应项目 "有查看权限的用户和项目所有者" 能够查询。

7.1.查询项目下所有工作流

该 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": {...}
  }
]

7.2.查询工作流详情

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": {...}
  }
]

8.单个资源文件的下载

说明:项目有 "查看权限或项目所有者" 能够下载工作流信息。下载工作流以及资源信息。如果工作流没有 file,会将工作流的 data 下载下来,文件名为 workflow.json。

GET /projects/:project-name/workflows/:workflow-name/file
  
Response:
Status: 200 OK