外观
流程定时启动
简介
在业务流程开发中,存在一些需要后台定时发起的流程,例如:巡检、工作上报、月度对账等,使用流程定时启动,能很好的完成这项任务。流程定时启动支持周期性、指定时间来启动业务流程。
配置定时任务
系统内置定时计划
菜单路径:系统 > 系统功能 > 定时计划
启用任务标识:bpmScheduleStartScan
如不存在记录,按下述添加
分类:流程相关
任务标识:bpmScheduleStartScan
描述:驱动流程定时启动
执行器类型:注解
执行器参数:
启用:是
Cron:00 1/1 * * * ?
开始使用
菜单路径:流程 > 流程定时启动
添加
任务类型分两种:周期任务和单次任务,他们之间的区别是单次任务执行完不再继续执行。
单次任务
在指定时间执行的任务,执行完成后状态会被标记为已完成
周期任务
周期性的任务,例如每天 18:00:00 启动流程填写工作日志
工作日执行: 定时流程的发起只在工作日才会启动,此处依赖 菜单:CMS > 节假日维护
Cron 表达式: 配置计划,使用上请参考:https://www.jianshu.com/p/b4b8950fb987
任务周期: 指定计划任务执行指定次数后完成,不再继续执行,此时任务状态将会标记为已完成;-1 表示不限制
通用字段
出错重试次数: 启动失败后的重试,默认值0
发起人: 启动流程的用户,支持多个用户
发起人组织: 启动流程的用户所在组织
发起意见: 对应流程审批意见
启动表单: 填写发起流程的业务表单数据
流程变量: 对应流程中的流程变量
Groovy 脚本
定时变量:com.dstz.bpm.engine.action.ActionCmd actionCmd
使用示例
java
// 设置业务数据
def orderData = actionCmd.getData().computeIfAbsent("order", k -> new HashMap><())
orderData['orderNo'] = "xxxx"
orderData['createTime'] = new Date()
// 设置流程变量
actionCmd.getPresetVariable()['orderNo'] = "xxxx"
// 设置跳转节点
actionCmd.setPresetDestination("UserTask1")
// 设置节点候选人
actionCmd.setIdentityMap("UserTask1", [new com.dstz.base.common.identityconvert.SysIdentity("1", "管理员", com.dstz.base.common.enums.IdentityType.USER.getKey())])
// 设置关联业务ID
actionCmd.setBizId("xxxxxx")
// 设置意见
actionCmd.setOpinion("流程定时启动")
查看启动记录
菜单路径: 流程 > 流程定时启动 > 列表操作 > 启动记录