直接跳到内容
本页目录

作者:wacxhs
更新于:4/12/2023

流程定时启动

简介

在业务流程开发中,存在一些需要后台定时发起的流程,例如:巡检、工作上报、月度对账等,使用流程定时启动,能很好的完成这项任务。流程定时启动支持周期性、指定时间来启动业务流程。

配置定时任务

系统内置定时计划

菜单路径:系统 > 系统功能 > 定时计划

启用任务标识: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("流程定时启动")

查看启动记录

菜单路径: 流程 > 流程定时启动 > 列表操作 > 启动记录

图示

启动记录

图示

流程定时启动 has loaded