橙武低代码平台:定时任务实现方案-Quartz

一、背景概述:为何低代码平台需要定时任务?

在多数企业系统中,除了用户主动触发的“界面操作”与“接口调用”外,还有大量周期性执行的任务场景:

  • 每日汇总报表定时推送(如:门店销售汇总、学员报到统计)

  • 定期清理无效数据(如:7 天未登录账户清理)

  • 定时触发流程(如:每周五下午自动发起请假申请提醒)

  • 同步外部数据源(如:从 ERP/CRM 系统定时拉取最新库存)

在传统平台中,这类需求往往需要专门开发后台调度器,接入 Quartz、Spring Schedule、XXL-Job 等框架;但对于非开发人员来说,配置、部署、维护都较为困难,存在如下痛点:

  • 代码耦合高:定时逻辑常常绑定在代码中,难以热更新

  • 变更成本大:修改调度时间需重新部署

  • 缺乏可视化监控:运行状态难追踪,异常难排查

因此,橙武低代码平台将“定时任务”作为平台级服务,完全可视化、支持运行时配置,通过 Cron 表达式调度 + 可参数化流程触发 的组合方式,让每一位业务人员也能驾驭系统自动化的能力。


二、平台定时任务设计目标

为了确保功能易用、灵活且可扩展,橙武定时任务模块在设计上遵循以下核心目标:

目标说明
无代码配置所有任务可通过平台界面配置,无需写一行代码
运行时修改调度时间、流程、参数均可动态变更,无需重启服务
支持动态参数注入支持任务参数传递给流程,如当前时间、租户信息等
完整日志与状态监控每次执行都会记录日志,包括执行状态、返回结果、错误信息
安全与权限可控仅可触发类型为“开放”的流程,防止执行权限泄露

三、技术选型:Quartz 与 Cron 表达式机制

橙武平台底层调度框架采用 Quartz Scheduler,作为 Java 生态中最成熟的任务调度工具,其核心优势包括:

  • 支持 Cron 表达式灵活调度

  • 支持持久化任务记录、状态恢复

  • 可实现任务失败重试、并发策略控制

  • 与 Spring 深度整合,运行稳定

调度时间的表达基于标准 Cron 表达式,支持如下一些典型用法:

表达式含义
0 0 9 * * ?每天上午 9 点执行一次
0 0/30 * * * ?每 30 分钟执行一次
0 0 12 ? * MON每周一中午 12 点执行
0 0 0 1 * ?每月 1 日凌晨 0 点执行

用户可通过平台提供的 Cron 编辑器,快速生成目标时间规则,无需记忆复杂语法。


四、定时任务执行架构设计

橙武定时任务不是执行代码,而是通过调度流程引擎来完成所有任务逻辑的承载,这一模式的最大好处是:

“任务只负责调度,不负责执行;真正的执行由可视化流程来定义。”

4.1 架构图

用户配置任务(定时频率 + 流程ID + 参数)
          ↓
Quartz调度器触发
          ↓
校验任务状态 / 类型
          ↓
POST 调用开放流程引擎 → /api/open/process/start
          ↓
流程执行成功 → 记录日志(执行时间、状态、参数、异常等)

4.2 流程触发条件

平台要求任务所触发的流程必须满足:

  • 流程类型为“开放流程”(Open Type)

  • 流程入口为 HTTP 可访问接口,无需登录凭证

  • 流程支持参数传入(JSON格式)

这样设计的目的在于防止定时任务在调用受保护流程时失败或权限泄露。


五、平台实现细节

5.1 数据表结构设计

橙武平台使用以下两张主表来存储定时任务与执行日志:

scheduled_jobs
字段名类型说明
job_idINT任务ID
job_nameVARCHAR任务名称
cron_expressionVARCHARCron表达式
flow_codeVARCHAR流程编码
parametersVARCHARJSON格式参数
statusVARCHAR启用/禁用
scheduled_job_logs
字段名类型说明
log_idINT日志ID
job_idINT对应任务ID
execute_timeDATETIME实际执行时间
statusVARCHAR成功/失败
responseTEXT执行返回(包含流程实例ID等)
error_messageTEXT错误信息(如有)

5.2 任务创建与操作流程

  1. 进入“定时任务管理”模块

  2. 点击“新增任务”

  3. 填写如下信息:

    • 任务名称

    • Cron 表达式(支持图形化设置)

    • 触发流程(选择流程列表中类型为“开放”的流程)

    • 参数(JSON 格式)

    • 状态(启用/禁用)

  4. 提交后,Quartz 自动注册任务调度

  5. 平台在每次执行后生成执行日志,可查看结果

5.3 可视化配置入口

所有任务配置均在橙武后台“定时任务管理”模块中完成:

  • 任务列表页:查看任务名称、Cron表达式、状态、上次执行时间等

  • 编辑页:修改任务信息、暂停/启用、参数变更

  • 日志页:查看每次执行记录,支持筛选失败任务、导出日志等


六、安全机制与“开放流程”约束说明

由于定时任务是平台后台自动触发,必须具备如下安全保障:

  • 不依赖登录态:定时任务运行时不会有用户上下文

  • 不能访问有权限保护的流程:否则会出现403/401错误

  • 参数需封闭、受控:避免注入类攻击

因此,橙武平台要求:所有被定时任务调用的流程,必须为“开放流程”类型

管理员在配置流程时,只需将该流程设置为“开放”,平台将自动开放 HTTP 接口:

POST /api/open/process/start?flowCode=xxx
Content-Type: application/json
Body: { "paramA": "value" }

该接口无需登录验证,平台后台会自动注入系统级 token 与租户上下文(如果开启多租户模式)。


七、实战示例:每日订单汇总任务

需求描述

每日凌晨 1 点,平台自动汇总昨日订单总量、销售金额,并将结果写入数据统计表,用于管理后台展示。

实现流程

  1. 设计流程:order_summary_daily

    • 读取订单表,按日期统计

    • 将结果写入报表表

  2. 设置流程为“开放类型”

  3. 新建任务:

字段
任务名称每日订单汇总
Cron表达式0 0 1 * * ?
流程编码order_summary_daily
参数{ "dayOffset": -1 }
状态启用
  1. 启动任务,平台每日凌晨调度流程并写入结果。

  2. 在日志页可查看每次执行记录。


八、扩展方向与未来规划

方向描述
参数动态绑定支持运行时注入更多系统变量,如日期、租户ID、用户列表等
邮件通知支持任务失败后自动发送邮件/微信/短信通知
多任务串联支持多个流程串联触发(如先导出 → 再发送 → 再归档)
子任务支持一个流程中可触发多个任务并发执行,适用于分片统计或多地域调度
执行权限模型支持流程黑白名单,限定哪些流程可被调度执行

九、总结

橙武低代码平台通过集成 Quartz 调度框架,结合可视化流程引擎与“开放流程”架构,构建了一套安全、灵活、动态的定时任务解决方案。无论是日常报表统计、接口同步还是周期性自动流程执行,平台都提供了标准化、可追踪的实现方式。

这不仅提升了系统的自动化水平,也赋予了业务人员更多自由配置的能力,真正实现“流程即业务,时间即触发器”。

📌 当前版本支持所有标准类型流程调用,未来将进一步扩展流程多态、异常回滚机制与链式调度能力,敬请期待。

加群群聊,一起学习和进步!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橙武科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值