Skip to content

scheduler

qifeng dai edited this page Aug 14, 2017 · 38 revisions

这里主要涉及到工作流的调度配置相关的 API。

1.增加调度配置

说明:对该工作流所属项目 "有执行权限的用户和项目所有者" 可以配置调度信息。调度配置如果已经存在,则增加失败。

POST    /projects/:project-name/workflows/:workflow-name/schedules
Parameters: schedule={schedule}&notifyType={notifyType}&notifyMails={notifyMails}&maxTryTimes={maxTryTimes}&failurePolicy={failurePolicy}&depWorkflows={depWorkflows}&depPolicy={depPolicy}&timeout={timeout}
  
Response:
Status: 201 Created
{
  "projectName": "bdi",
  "workflowName": "bdi_base_workflow",
  "schedule": {
    "startDate": 1468391778000,
    "endDate": null,
    "crontab":"0 8 * * * * ?"
  },
  "desc":"workflow desc",
  "notifyType": "FAILURE",
  "notifyMails": ["ABC@baifendian.com"],
  "maxTryTimes": 2,
  "failurePolicy": "END",
  "depWorkflows": [{"projectName":"xxx", "workflowName":"yyy"}, ...],
  "depPolicy": "NO_DEP_PRE",
  "timeout": 3600,
  "createTime": 1468391778000,
  "modifyTime": 1468391778000,
  "owner": "bdi_user"
}

请求参数:

参数 类型 是否必选 描述 说明
schedule jsonObject 调度周期信息
notifyType enum 报警类型 SUCCESS-成功发,FAILURE-失败发,ALL-成功或失败都发,NONE-都不发默认是 NONE
notifyMails jsonArray 报警邮箱列表 报警的邮件列表,如果 notifyType 不是 NONE,这个值是应该配置的
maxTryTimes int 失败重试次数 如果为 0 表示就运行一次, 默认为 0, 不重试, 有效值为 [0,2]
failurePolicy enum 失败之后的策略 END 停止所有的 node 运行,CONTINUE-尽量执行,默认为 END,尽量执行指的是如果依赖失败,则不会执行,如果依赖都成功,会继续执行,没有依赖也会执行
depWorkflows jsonArray 工作流的依赖关系 默认没有依赖,示例:[{"projectName":"xxx", "workflowName":"yyy"}, ...]
depPolicy enum 工作流依赖执行的策略 默认是 NO_DEP_PRE,不依赖上一调度周期,DEP_PRE 表示依赖
timeout int 超时时间,超时则发邮件 单位: 秒

schedule 参数说明:

参数 类型 是否必选 描述 说明
startDate long 调度的起始时间 毫秒时间戳
endDate long 调度的结束时间 毫秒时间戳,没有结束时间表示长期有效
crontab string 定时调度配置 quartz 格式 0 8 * * * * ?, 参见: [[Quartz Cron 语法

注意:如果依赖的工作流不存在或被删除,不需要检测该前置条件

2.修改并添加调度配置

说明:对该工作流所属项目 "有执行权限的用户和项目所有者" 可以修改调度配置。调度配置如果不存在,则增加。注意必选参数不能为空。

PUT    /projects/:project-name/workflows/:workflow-name/schedules

Response:
Status: 200 OK

返回同上。

3.修改调度配置

说明:对该工作流所属项目 "有执行权限的用户和项目所有者" 可以修改调度配置。调度配置如果不存在,则修改失败。

PATCH    /projects/:project-name/workflows/:workflow-name/schedules

Response:
Status: 200 OK

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

请求和返回同上。

4.调度上线/下线

说明:对该工作流所属项目 "有执行权限的用户和项目所有者" 可将工作流调度上线/下线,注意需配置了调度信息才能上线。工作流的调度默认是下线状态的。

POST    /projects/:project-name/workflows/:workflow-name/schedules/online?
POST    /projects/:project-name/workflows/:workflow-name/schedules/offline?

Response:
Status: 201 Created

5.查询调度配置

说明:对该工作流所属项目 "有查看权限的用户和项目所有者" 可以查看调度配置信息。

GET /projects/:project-name/workflows/:workflow-name/schedules
  
Response:
Status: 200 OK
[
  {
    "projectName": "bdi",
    "workflowName": "bdi_base_workflow",
    "schedule": {
      "startDate": 1468391778000,
      "endDate": null,
      "crontab":"0 8 * * * * ?"
    },
    "desc":"schedule desc",
    "notifyType": "FAILURE",
    "notifyMails": ["ABC@baifendian.com"],
    "maxTryTimes": 2,
    "failurePolicy": "END",
    "depWorkflows": [{"projectName":"xxx", "workflowName":"yyy"}, ...],
    "depPolicy": "NO_DEP_PRE",
    "timeout": 3600,
    "createTime": 1468391778000,
    "modifyTime": 1468391778000,
    "owner": "bdi_user",
    "scheduleStatus": 0 // 0 means offline, 1 means online
  }
]

6.查询一个项目下所有调度配置

说明:对所属项目 "有查看权限的用户和项目所有者" 可以查看所有调度配置信息。

GET /projects/:project-name/workflows/schedules
  
Response:
Status: 200 OK
[
  [{
    "projectName": "bdi",
    "workflowName": "bdi_base_workflow",
    "schedule": {
      "startDate": 1468391778000,
      "endDate": null,
      "crontab":"0 8 * * * * ?"
    },
    "desc":"schedule desc",
    "notifyType": "FAILURE",
    "notifyMails": ["ABC@baifendian.com"],
    "maxTryTimes": 2,
    "failurePolicy": "END",
    "depWorkflows": [{"projectName":"xxx", "workflowName":"yyy"}, ...],
    "depPolicy": "NO_DEP_PRE",
    "timeout": 3600,
    "createTime": 1468391778000,
    "modifyTime": 1468391778000,
    "owner": "bdi_user",
    "scheduleStatus": 0 // 0 means offline, 1 means online
  }]
]

注意:返回的 scheduleStatus,0 表示下线状态,1 表示上线状态。