跳转至

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 解析结果(含 nameapplicationId 等字段)、所属应用名(applicationName)和触发器状态(status)。

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

请求参数

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

请求示例

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

响应

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

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

成功示例

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

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

null