@Service public class TaskSchedulerService extends Object
该服务负责从资源系统中加载任务配置(/sohelp-boot/dev/ops/task), 按任务状态动态启动或停止调度,并根据任务类型执行对应的 Java 类或 Nashorn 脚本。
设计要点: - 任务资源:每个任务以 JSON 文件形式存储,包含 id、name、type、cron、className、params、script、status 等字段 - 状态驱动:status=running 时开启调度,stopped/disabled 时关闭调度 - Cron 兼容:前端采用五段式(分 时 日 月 周);调度使用六段式(秒 分 时 日 月 周),此处自动补秒为 0 - 执行策略: · Java:优先执行 Runnable#run();否则查找 public void execute(Map params) 并反射调用 · Script:使用 Nashorn 引擎 eval 代码,注入 params 变量
| 构造器和说明 |
|---|
TaskSchedulerService() |
@PostConstruct public void init()
@Scheduled(fixedDelay=10000L) public void sync()
每 10 秒执行一次: - 读取所有任务配置 - 对运行中任务进行启动(若未启动) - 对非运行任务进行停止(若已启动) - 删除已不存在的任务调度
public void start(com.alibaba.fastjson.JSONObject obj)
obj - 任务配置 JSONpublic void stop(String id)
id - 任务IDpublic void execute(com.alibaba.fastjson.JSONObject obj)
obj - 任务配置 JSONCopyright © 2026. All rights reserved.