跳到主要内容
版本:0.4.x

基本介绍

运行期任务能力提供定时任务视图读取、执行触发和状态管理:

入口使用者说明
services.Jobs()源码插件读取可见任务视图、触发任务执行、修改任务状态
jobs.*动态插件读取可见任务视图、校验任务可见性

声明期的任务注册能力请参阅任务声明

能力阶段:运行期

类型支持:源码插件、动态插件

能力设计

任务视图模型

Jobs()返回任务视图,用于读取已纳入宿主管理的任务状态:

字段说明
ID任务标识
Name任务展示名称
Group任务分组
Status任务生命周期状态

接口定义

源码插件接口

源码插件通过services.Jobs()访问任务视图和执行管理:

方法说明
Get读取单个可见任务视图
BatchGet批量读取可见任务视图
List按关键词、分组和状态搜索可见任务候选
EnsureVisible校验目标任务集合对当前调用上下文可见
Create创建定时任务,经过任务组、Cron表达式和租户边界校验
Update更新可见定时任务,经过目标可见性和租户边界校验
Delete删除可见定时任务,经过目标可见性和租户边界校验
Run触发一个可见任务执行,经过状态、目标、租户和审计校验
SetStatus改变一个可见任务状态,经过状态机、目标和调度器注册校验

动态插件接口

动态插件只能读取任务视图,不支持创建、更新、删除、触发或修改状态等写操作:

动态方法说明
jobs.batch_get批量读取可见定时任务视图
jobs.list按关键词、分组和状态搜索可见任务候选
jobs.visible.ensure校验目标任务集合对当前调用上下文可见

能力使用

源码插件使用

源码插件通过services.Jobs()访问任务视图和执行管理:

// 批量读取任务视图
result, err := services.Jobs().BatchGet(ctx, jobIDs)

// 搜索可见任务候选
page, err := services.Jobs().List(ctx, jobcap.ListInput{
Keyword: "report",
Group: "daily",
Page: pageRequest,
})

// 校验任务可见性
err := services.Jobs().EnsureVisible(ctx, jobIDs)

// 触发任务执行(经过状态、目标、租户、审计和调度器校验)
err := services.Jobs().Run(ctx, jobID)

// 修改任务状态(经过状态机、目标和调度器注册校验)
err := services.Jobs().SetStatus(ctx, jobID, jobv1.StatusDisabled)

动态插件使用

动态插件在plugin.yaml中声明jobs服务:

hostServices:
- service: jobs
methods:
- jobs.batch_get
- jobs.list
- jobs.visible.ensure

jobsnone资源类型,不声明资源字段。动态插件在运行期通过宿主服务读取任务视图:

// 批量读取任务视图
result, err := hostServices.Jobs().BatchGet(ctx, jobIDs)

// 搜索可见任务候选
page, err := hostServices.Jobs().List(ctx, &ListInput{
Keyword: "report",
Group: "daily",
})

// 校验任务可见性
err := hostServices.Jobs().EnsureVisible(ctx, jobIDs)

声明期的任务注册请参阅任务声明

设计约束

  • 执行经过治理校验。 RunSetStatus通过services.Jobs()暴露给源码插件,经过状态、目标、租户、审计和调度器注册校验后执行。动态插件不支持这两个操作。
  • 动态插件只读。 动态插件只能读取任务视图和校验可见性,不支持创建、更新、删除、触发或修改状态等写操作。
  • 任务表不暴露给插件。 插件不能通过任务能力读取宿主任务日志、调度器内部状态或数据库表结构。
  • 任务状态由宿主定义。 插件不应写入宿主状态机不接受的状态值。

相关文档