跳转至

设计时定时任务管理(TaskController)

定时任务(.task)设计时资源管理:任务的增删改查、批量删除,新建/更新时同步注册或移除 Quartz 调度作业(通过 Feign 调用调度服务),以及将任务切换为运行态。

  • 接口类型:REST 资源
  • 基址${myapps.context-path.designer:}/api/designtime/applications(类级 @RequestMappingproduces = 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=500errmsg 为异常信息;新建时名称为空抛出 {*[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「统一响应结构」)。 dataDataPackage<Task>(含分页字段与 datas)。

成功示例

{
  "errcode": 0,
  "errmsg": "ok",
  "data": {
    "linesPerPage": 10,
    "pageNo": 1,
    "pageCount": 1,
    "rowCount": 2,
    "datas": [
      { "id": "...", "name": "...", "period": 1, "runningTime": "...", "...": "..." }
    ]
  },
  "errors": null
}
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


2. 获取任务详情

按任务Id获取完整任务对象。

  • 接口类型:REST 资源
  • 请求方式GET
  • 请求路径/{applicationId}/tasks/{taskId}
  • 鉴权:是(需 designerToken)
  • Tag:设计时-任务模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
taskId path string 任务Id

响应

dataTask 完整对象。

{ "errcode": 0, "errmsg": "ok", "data": { "id": "...", "name": "...", "period": 1, "rTime": "...", "rDate": "...", "daysOfWeek": [1, 2], "...": "..." }, "errors": null }
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


3. 新建任务

在指定应用下新建定时任务。按 rTime/rDateperiod 解析运行时间,名称为空或重名时抛出异常,保存后注册 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(nameperiodstartupTypedaysOfWeek 等)。

{ "name": "<任务名>", "period": 1, "startupType": 1, "daysOfWeek": [1, 2] }

响应

dataJSONObject,含 id(任务Id)、runState(回显入参)。

{ "errcode": 0, "errmsg": "ok", "data": { "id": "<任务Id>", "runState": 0 }, "errors": null }
失败示例(名称为空/重名等,被通用 catch 捕获,返回 errcode=500):
{ "errcode": 500, "errmsg": "任务名称已存在!", "data": null, "errors": null }


4. 更新任务

按任务Id更新任务对象。从请求体读取 rTime/rDatedaysOfWeek 重新计算运行时间,保存后同步注册 Quartz 作业。

  • 接口类型:REST 资源
  • 请求方式PUT
  • 请求路径/{applicationId}/tasks/{taskId}
  • 鉴权:是(需 designerToken)
  • Tag:设计时-任务模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
taskId path string 任务Id
content body string(JSON) 任务对象 JSON(含 rTimerDatedaysOfWeek

请求体

对应 Task 对象 JSON,须带 rTimeHH:mm:ss)与 rDateyyyy-MM-dd)。

{ "name": "<任务名>", "period": 1, "rTime": "09:00:00", "rDate": "2026-01-01", "daysOfWeek": [1] }

响应

dataTask 更新后的对象。

{ "errcode": 0, "errmsg": "ok", "data": { "id": "...", "name": "...", "...": "..." }, "errors": null }
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


5. 删除任务(可批量)

按任务Id数组批量删除任务。逐个调用 QuartzJobFeignUtil.deleteJob 移除 Quartz 作业后,再删除设计时记录(含路径信息收集)。

  • 接口类型:REST 资源
  • 请求方式DELETE
  • 请求路径/{applicationId}/tasks
  • 鉴权:是(需 designerToken)
  • Tag:设计时-任务模块

请求参数

参数名 位置 类型 必填 说明
applicationId path string 应用Id
ids body string 任务Id字符串数组

请求体

["<taskId1>", "<taskId2>"]

响应

dataString,固定为 "删除成功"

{ "errcode": 0, "errmsg": "ok", "data": "删除成功", "errors": null }
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }


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 按请求参数绑定。

响应

dataJSONObject,含 runState(固定 1)、msg(固定 "定时任务已经启动")。

{ "errcode": 0, "errmsg": "ok", "data": { "runState": 1, "msg": "定时任务已经启动" }, "errors": null }
失败示例
{ "errcode": 500, "errmsg": "<异常信息>", "data": null, "errors": null }