跳转至

QuartzController(定时任务调度)

cn.myapps.job.QuartzController

基于 Quartz 的定时任务调度控制器,提供任务的新增、触发、暂停、恢复、重排、删除与列表查询能力。基址为 job 模块的 context-path 占位符 ${myapps.context-path.job:} 再加 /quartz(无 /api/rest 前缀)。

  • 接口类型:REST 资源
  • 类级注解:@Controller(非 @RestController,方法级 @ResponseBody 才返回 JSON / 字符串)
  • 基址:${myapps.context-path.job:}/quartz
  • 鉴权:见 index.md 鉴权说明(无 token 强校验)

1. 新增定时任务

新增一个 Quartz 任务(含触发器),可由 cron 表达式或指定时间点触发。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/quartz/addObpmJob(完整:${myapps.context-path.job:}/quartz/addObpmJob)
  • 鉴权:否(无 token 强校验)
  • Tag:(未在源码标注)

请求参数

参数名 位置 类型 必填 说明
jobName query/form string 否(无注解默认 required) 任务名称,示例:helloJob;约定为 applicationId.taskId
jobGroup query/form string 否 任务组,示例:helloJobGroup;约定为 domainId
triggerName query/form string 否 触发器名称,示例:helloTrigger
triggerGroup query/form string 否 触发器组,示例:helloTriggerGroup
jobXml body string (application/json) 否(@RequestBody) 任务 XML 描述字符串(与 IscriptTaskJob 启动时存的 jobXml 同构),作为 JobDataMap 字符串存储
cron query/form string 否 cron 表达式,示例:0 0/1 * * * ?
date query/form long 否 触发时间戳(毫秒),与 cron 二选一
startNow query/form boolean 否 是否立即启动

请求示例

POST /quartz/addObpmJob?jobName=helloJob&jobGroup=helloJobGroup&triggerName=helloTrigger&triggerGroup=helloTriggerGroup&cron=0%200%2F1%20*%20*%20*%20%3F&startNow=true HTTP/1.1
Content-Type: application/json

<jobXml 内容字符串>

响应

结构:text/plain 纯字符串(非 Resource)。

成功示例:

ok

失败示例(异常被 catch,HTTP 状态仍 200):

fail


2. 触发定时任务

立即触发一次指定任务(不影响其原调度)。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/quartz/triggerJob(完整:${myapps.context-path.job:}/quartz/triggerJob)
  • 鉴权:否(无 token 强校验)
  • Tag:(未在源码标注)

请求参数

参数名 位置 类型 必填 说明
jobName query/form string 否 任务名称
jobGroup query/form string 否 任务组

请求示例

POST /quartz/triggerJob?jobName=helloJob&jobGroup=helloJobGroup HTTP/1.1

响应

结构:text/plain 纯字符串("ok" 或 "fail")。


3. 暂停任务

暂停指定任务(及其触发器)。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/quartz/pauseJob(完整:${myapps.context-path.job:}/quartz/pauseJob)
  • 鉴权:否(无 token 强校验)
  • Tag:(未在源码标注)

请求参数

参数名 位置 类型 必填 说明
jobName query/form string 否 任务名称
jobGroup query/form string 否 任务组

请求示例

POST /quartz/pauseJob?jobName=helloJob&jobGroup=helloJobGroup HTTP/1.1

响应

结构:text/plain 纯字符串("ok" 或 "fail")。


4. 恢复任务

恢复(取消暂停)指定任务。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/quartz/resumeJob(完整:${myapps.context-path.job:}/quartz/resumeJob)
  • 鉴权:否(无 token 强校验)
  • Tag:(未在源码标注)

请求参数

参数名 位置 类型 必填 说明
jobName query/form string 否 任务名称
jobGroup query/form string 否 任务组

请求示例

POST /quartz/resumeJob?jobName=helloJob&jobGroup=helloJobGroup HTTP/1.1

响应

结构:text/plain 纯字符串("ok" 或 "fail")。


5. 重排任务(reschedule)

按新的 cron 表达式重新调度指定触发器。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/quartz/rescheduleJob(完整:${myapps.context-path.job:}/quartz/rescheduleJob)
  • 鉴权:否(无 token 强校验)
  • Tag:(未在源码标注)

请求参数

参数名 位置 类型 必填 说明
triggerName query/form string 否 触发器名称
triggerGroup query/form string 否 触发器组
cron query/form string 否 新的 cron 表达式

请求示例

POST /quartz/rescheduleJob?triggerName=helloTrigger&triggerGroup=helloTriggerGroup&cron=0%200%2F5%20*%20*%20*%20%3F HTTP/1.1

响应

结构:text/plain 纯字符串("ok" 或 "fail")。


6. 删除任务

删除指定任务及其触发器。

  • 接口类型:REST 资源
  • 请求方式:POST
  • 请求路径:/quartz/deleteJob(完整:${myapps.context-path.job:}/quartz/deleteJob)
  • 鉴权:否(无 token 强校验)
  • Tag:(未在源码标注)

请求参数

参数名 位置 类型 必填 说明
jobName query/form string 否 任务名称
jobGroup query/form string 否 任务组
triggerName query/form string 否 触发器名称
triggerGroup query/form string 否 触发器组

请求示例

POST /quartz/deleteJob?jobName=helloJob&jobGroup=helloJobGroup&triggerName=helloTrigger&triggerGroup=helloTriggerGroup HTTP/1.1

响应

结构:text/plain 纯字符串("ok" 或 "fail")。


7. 查询所有定时任务

列出调度器中所有任务,可按任务名关键字过滤;返回每个任务的 jobXml 解析结果(含 name、applicationId 等字段)、所属应用名(applicationName)和触发器状态(status)。

  • 接口类型:REST 资源
  • 请求方式:GET
  • 请求路径:/quartz/jobs(完整:${myapps.context-path.job:}/quartz/jobs)
  • 鉴权:否(无 token 强校验)
  • Tag:(未在源码标注)

请求参数

参数名 位置 类型 必填 说明
searchword query string 否 任务名过滤关键字(按 jobXml 中 name 字段包含匹配;不传则返回全部)

请求示例

GET /quartz/jobs?searchword=hello HTTP/1.1

响应

结构:JSON 数组(非 Resource)。每个元素结构如下:

字段 类型 说明
(jobXml 原字段) 任意 由 XmlToJsonUtil.xmlToJson 解析 JobDataMap.jobXml 得到(含 name、applicationId、cron、description 等)
applicationName string 通过 ApplicationDesignTimeService.findById 查到的应用名(取 description,缺省取 name)
status int Quartz 触发器状态(Trigger.TriggerState 序数:NORMAL=0、PAUSED=1、BLOCKED=2 等)

成功示例:

[
  {
    "name": "helloJob",
    "applicationId": "__APPID__",
    "applicationName": "示例应用",
    "cron": "0 0/1 * * * ?",
    "status": 0
  }
]

失败示例(异常被 catch,HTTP 状态仍 200):

null