定时计划

AgileBPM 定时计划 有两种实现:

  • 基于 hutool CronUtil 实现的定时计划 AbScheduled

  • 整合了 XXL-JOB 的分布式定时计划

您可以根据自身情况去选择使用哪种定时计划,当然两者并不冲突。

CronUtil 比较轻量,不支持分布式调度,功能也弱一些,但也足够用。
XXL-JOB 功能强大,但是需要独立部署一个应用去支撑,适合定时计划比较多,而且需要可视化管理的用户。

AgileBPM 中使用 AbScheduled

开启定时计划

配置文件中 配置 activiti.jobExecutorActivate=true 即可全局开启定时计划。(1.5.0后会修改为 ab.jobExecutorActivate)

使用定时计划

在需要执行定时计划的方法上添加注解。如: @AbScheduled(cron="0/30 * * * * ?")

实现原理参考 源码 AbScheduledBeanPostProcessor
cron表达式请参考 http://cron.qqe2.com/

提示

分布式部署时,定时计划建议只开启一台,否则可能出现重复执行的情况。(当然自行通过乐观锁控制也是可以的)

AgileBPM中使用 XXL-JOB

AgileBPM 定时计划使用的是 xxl-job 分布式定时计划,需要单独部署xxl-job该工程

部署 xxl-job

  1. 根据 xxl-job 官方文档 部署好定时计划工程,并启动
  2. AgileBPM 工程配置内容
### xxl-job admin address list:调度中心部署跟地址:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调"。
xxl.job.admin.addresses=http://127.0.0.1:8081/xxl-job-admin

### xxl-job executor address:执行器"AppName"和地址信息配置:AppName执行器心跳注册分组依据;地址信息用于"调度中心请求并触发任务"和"执行器注册"。执行器默认端口为9999,执行器IP默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用。单机部署多个执行器时,注意要配置不同执行器端口;
xxl.job.executor.appname=agile-bpm
xxl.job.executor.ip=
xxl.job.executor.port=9999

### xxl-job, access token:执行器通讯TOKEN,非空时启用
xxl.job.accessToken=

### xxl-job log path:执行器运行日志文件存储的磁盘位置,需要对该路径拥有读写权限
xxl.job.executor.logpath=/data/logs/xxl-job/jobhandler/

### xxl-job log retention days:执行器Log文件定期清理功能,指定日志保存天数,日志文件过期自动删除。限制至少保持3天,否则功能不生效;
xxl.job.executor.logretentiondays=60

  1. 配置任务调度

    访问 xxl 任务调度中心工程 http://127.0.0.1:8081/xxl-job-admin
    添加一个执行器

    • AppName: 使用 AgileBPM中配置的 xxl.job.executor.appname 值,agile-bpm
    • 注册方式:使用自动注册即可

    这里注意,客户端注册上的IP需要能被调度中心访问。如 本地开发环境访问阿里云服务器部署的调度中心是不行的,虽然能注册成功,但IP是错的,没法正确供调度中心回调(坑)

  2. 配置任务管理器

  • 执行器: 选择上一步配置的执行器
  • 路由策略: 故障转移
  • Cron: 每十分钟执行一次 0 0/10 * * * ?
  • JobHandler: abReminderJob
    其他配置默认配置即可
  1. 启动定时计划

可以查看 执行器注册成功的 OnLine 机器地址,查看任务执行是否正确调度

到这里定时计划就配置完成了