设计时定时任务管理(TaskController)¶
定时任务(.task)设计时资源管理:任务的增删改查、批量删除,新建/更新时同步注册或移除 Quartz 调度作业(通过 Feign 调用调度服务),以及将任务切换为运行态。
- 接口类型:REST 资源
- 基址:
${myapps.context-path.designer:}/api/designtime/applications(类级@RequestMapping,produces = APPLICATION_JSON_VALUE) - Tag:设计时-任务模块
公共说明¶
- 鉴权:是(需 designerToken)。控制器继承自
AbstractDesignTimeController(基类为@RestController),通过Security.getDesignerIdFromToken(request)从 designerToken JWT 中解析设计器用户。鉴权机制详见 index.md「鉴权说明」。 - 路径变量:
{applicationId}、{taskId}、{id}均为**明文设计时 ID**(与 designer 其他控制器一致,非 runtime 的 DES 加密密文)。 - 响应:统一
Resource(见 ../index.md「统一响应结构」)。成功errcode=0;异常默认errcode=500,errmsg为异常信息;新建时名称为空抛出{*[page.name.notexist]*}、重名抛出"任务名称已存在!",均被通用catch (Exception)捕获后以errcode=500返回。 - HTTP 方法:受
CommonSecurityFilter限制,仅允许GET/POST/HEAD/OPTIONS。 - 请求体约定:POST/PUT 接收原始 JSON 字符串(
@RequestBody String content),由服务端用JSONObject.fromObject解析;DELETE 接收 JSON 字符串数组(@RequestBody String[])。 - 调度联动:新建/更新后调用
insertOrUpdate(task)通过QuartzJobFeignUtil注册/移除 Quartz 作业;删除时按 id 逐个调用QuartzJobFeignUtil.deleteJob。 - 运行时间常量(来自
TaskConstants,对应period):NONE/DAILY/WEEKLY/MONTHLY/DAILY_MINUTES/DAILY_HOURS/IMMEDIATE等,决定rTime/rDate解析规则。
1. 获取任务列表¶
分页获取指定应用下的任务列表,可按名称或备注关键字查询。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/{applicationId}/tasks(完整:{designer-context}/api/designtime/applications/{applicationId}/tasks) - 鉴权:是(需 designerToken)
- Tag:设计时-任务模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| searchword | query | string | 否 | 按名称或备注查询关键字 |
| pageNo | query | string | 否 | 页码(缺省 1,取自 ParamsTable) |
| linesPerPage | query | string | 否 | 每页条数(缺省 10,取自 ParamsTable) |
说明:
searchword/pageNo/linesPerPage形参由getParams()/Spring MVC 按请求参数绑定,故均可缺省。
请求示例¶
GET /api/designtime/applications/{applicationId}/tasks?searchword=&pageNo=1&linesPerPage=10 HTTP/1.1
响应¶
结构:统一 Resource(见 ../index.md「统一响应结构」)。
data:DataPackage<Task>(含分页字段与 datas)。
成功示例:
{
"errcode": 0,
"errmsg": "ok",
"data": {
"linesPerPage": 10,
"pageNo": 1,
"pageCount": 1,
"rowCount": 2,
"datas": [
{ "id": "...", "name": "...", "period": 1, "runningTime": "...", "...": "..." }
]
},
"errors": null
}
2. 获取任务详情¶
按任务Id获取完整任务对象。
- 接口类型:REST 资源
- 请求方式:
GET - 请求路径:
/{applicationId}/tasks/{taskId} - 鉴权:是(需 designerToken)
- Tag:设计时-任务模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| taskId | path | string | 是 | 任务Id |
响应¶
data:Task 完整对象。
{ "errcode": 0, "errmsg": "ok", "data": { "id": "...", "name": "...", "period": 1, "rTime": "...", "rDate": "...", "daysOfWeek": [1, 2], "...": "..." }, "errors": null }
3. 新建任务¶
在指定应用下新建定时任务。按 rTime/rDate 与 period 解析运行时间,名称为空或重名时抛出异常,保存后注册 Quartz 作业。
- 接口类型:REST 资源
- 请求方式:
POST - 请求路径:
/{applicationId}/tasks - 鉴权:是(需 designerToken)
- Tag:设计时-任务模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| content | body | string(JSON) | 是 | 任务对象 JSON(含 daysOfWeek 数组) |
| runState | query | int | 否 | 运行状态(缺省 0,原样回显) |
| rTime | query | string | 是 | 运行时间(HH:mm:ss) |
| rDate | query | string | 是 | 运行日期(yyyy-MM-dd) |
请求体¶
对应 Task 对象 JSON(name、period、startupType、daysOfWeek 等)。
响应¶
data:JSONObject,含 id(任务Id)、runState(回显入参)。
catch 捕获,返回 errcode=500):
4. 更新任务¶
按任务Id更新任务对象。从请求体读取 rTime/rDate 与 daysOfWeek 重新计算运行时间,保存后同步注册 Quartz 作业。
- 接口类型:REST 资源
- 请求方式:
PUT - 请求路径:
/{applicationId}/tasks/{taskId} - 鉴权:是(需 designerToken)
- Tag:设计时-任务模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| taskId | path | string | 是 | 任务Id |
| content | body | string(JSON) | 是 | 任务对象 JSON(含 rTime、rDate、daysOfWeek) |
请求体¶
对应 Task 对象 JSON,须带 rTime(HH:mm:ss)与 rDate(yyyy-MM-dd)。
响应¶
data:Task 更新后的对象。
{ "errcode": 0, "errmsg": "ok", "data": { "id": "...", "name": "...", "...": "..." }, "errors": null }
5. 删除任务(可批量)¶
按任务Id数组批量删除任务。逐个调用 QuartzJobFeignUtil.deleteJob 移除 Quartz 作业后,再删除设计时记录(含路径信息收集)。
- 接口类型:REST 资源
- 请求方式:
DELETE - 请求路径:
/{applicationId}/tasks - 鉴权:是(需 designerToken)
- Tag:设计时-任务模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| ids | body | string | 是 | 任务Id字符串数组 |
请求体¶
响应¶
data:String,固定为 "删除成功"。
6. 运行任务¶
按任务Id将任务切换为运行态(state=1),并按 rTime/rDate 重新计算运行时间。该接口仅更新内存对象并返回提示,不落库、不直接注册 Quartz 作业。
- 接口类型:REST 资源
- 请求方式:
PUT - 请求路径:
/{applicationId}/tasks/{id}/start - 鉴权:是(需 designerToken)
- Tag:设计时-任务模块
请求参数¶
| 参数名 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
| applicationId | path | string | 是 | 应用Id |
| id | path | string | 是 | 任务Id |
| rTime | query | string | 否 | 运行时间(HH:mm:ss,参与 setDate 计算) |
| rDate | query | string | 否 | 运行日期(yyyy-MM-dd,参与 setDate 计算) |
说明:
rTime/rDate形参未标注@RequestParam,由 Spring MVC 按请求参数绑定。
响应¶
data:JSONObject,含 runState(固定 1)、msg(固定 "定时任务已经启动")。