飞龙工作流FlowLong:超时审批自动处理
在企业审批流程中,经常遇到审批人忘记处理或拖延审批的情况,导致业务流程阻塞。飞龙工作流FlowLong提供了强大的超时审批自动处理功能,能够有效解决这一痛点,确保业务流程顺畅运行。
超时审批的核心价值
超时审批功能为企业带来以下核心价值:
| 功能优势 | 具体描述 |
|---|---|
| 避免流程阻塞 | 自动处理超时任务,防止审批流程停滞 |
| 提高审批效率 | 减少人工干预,自动化处理超时审批 |
| 灵活配置策略 | 支持多种超时处理模式(自动通过/拒绝) |
| 智能提醒机制 | 超时前进行多次提醒,降低超时发生率 |
| 完整审计追踪 | 记录超时处理全过程,便于追溯分析 |
超时审批配置详解
基础配置参数
在FlowLong流程设计中,超时审批通过以下关键参数进行配置:
{
"termAuto": true, // 启用超时自动处理
"term": 1, // 超时时间(单位:天)
"termMode": 0, // 超时处理模式:0-自动通过,1-自动拒绝
"remind": true, // 是否启用提醒
"remindTime": "2:h" // 提醒时间配置(2小时前提醒)
}
超时时间单位说明
FlowLong支持多种时间单位配置:
| 单位代码 | 含义 | 示例 |
|---|---|---|
s | 秒 | "30:s" - 30秒 |
m | 分钟 | "10:m" - 10分钟 |
h | 小时 | "2:h" - 2小时 |
d | 天 | "1:d" - 1天 |
w | 周 | "1:w" - 1周 |
实现原理与架构
超时处理核心流程
核心代码实现
FlowLong通过FlowLongScheduler类实现超时审批的定时扫描和处理:
public void remind() {
// 获取所有超时或需要提醒的任务
List<FlwTask> flwTaskList = taskService.getTimeoutOrRemindTasks();
for (FlwTask flwTask : flwTaskList) {
// 任务提醒处理
if (null != flwTask.getRemindTime()) {
handleTaskReminder(flwTask);
}
// 任务超时处理
if (null != flwTask.getExpireTime()) {
handleTaskTimeout(flwTask);
}
}
}
private void handleTaskTimeout(FlwTask flwTask) {
ProcessModel processModel = flowLongEngine.runtimeService()
.getProcessModelByInstanceId(flwTask.getInstanceId());
NodeModel nodeModel = processModel.getNode(flwTask.getTaskKey());
// 检查是否启用超时自动处理
if (nodeModel.getTermAuto() != null && nodeModel.getTermAuto()) {
Integer termMode = nodeModel.getTermMode();
if (null == termMode) {
// 默认超时处理
context.getRuntimeService().timeout(flwTask.getInstanceId(),
flwTask, this.getAutoFlowCreator());
} else if (Objects.equals(termMode, 0)) {
// 自动通过
flowLongEngine.autoCompleteTask(flwTask.getId(), this.getAutoFlowCreator());
} else if (Objects.equals(termMode, 1)) {
// 自动拒绝
flowLongEngine.autoRejectTask(flwTask, this.getAutoFlowCreator());
}
}
}
实战配置示例
示例1:24小时超时自动通过
{
"nodeName": "部门审批",
"type": 1,
"termAuto": true,
"term": 1,
"termMode": 0,
"remind": true,
"remindTime": "4:h",
"nodeAssigneeList": [
{
"id": "dept_manager",
"name": "部门经理"
}
]
}
示例2:48小时超时自动拒绝
{
"nodeName": "财务审核",
"type": 1,
"termAuto": true,
"term": 2,
"termMode": 1,
"remind": true,
"remindTime": "24:h,12:h,1:h",
"nodeAssigneeList": [
{
"id": "finance_auditor",
"name": "财务审核员"
}
]
}
提醒机制配置
多级提醒策略
FlowLong支持配置多级提醒,可以在超时前进行多次提醒:
@Component
public class CustomTaskReminder implements TaskReminder {
@Override
public Date remind(FlowLongContext context, Long instanceId, FlwTask currentTask) {
// 发送提醒通知(邮件、短信、钉钉等)
sendReminderNotification(currentTask);
// 设置下次提醒时间(6小时后再次提醒)
return DateUtils.toDate(DateUtils.now().plusHours(6));
}
}
提醒参数配置
flowlong:
remind:
cron: "0 */5 * * * ?" # 每5分钟执行一次提醒扫描
maximum: 10 # 最大提醒次数
weeks: "1,2,3,4,5" # 工作日(周一到周五)
workTime: "9:00-18:00" # 工作时间段
高级特性
分布式锁保障
FlowLong使用分布式锁确保超时处理在高并发环境下的数据一致性:
public void remind() {
try {
if (!jobLock.tryLock()) {
log.info("Scheduling is already running, just return.");
return;
}
// 执行超时处理逻辑
} finally {
jobLock.unlock();
}
}
自定义超时处理策略
支持自定义超时处理逻辑,满足特殊业务需求:
public class CustomTimeoutHandler {
public void handleTimeout(FlwTask task) {
// 自定义超时处理逻辑
if ("紧急流程".equals(task.getProcessName())) {
// 紧急流程特殊处理
escalateToManager(task);
} else {
// 普通流程按配置处理
defaultTimeoutHandler.handle(task);
}
}
}
最佳实践建议
1. 合理设置超时时间
根据业务流程紧急程度设置不同的超时时间:
| 流程类型 | 建议超时时间 | 处理模式 |
|---|---|---|
| 紧急审批 | 2-4小时 | 自动通过 |
| 普通审批 | 24-48小时 | 自动通过 |
| 重要审核 | 72小时 | 自动拒绝 |
| 财务审批 | 5个工作日 | 多级提醒 |
2. 多级提醒策略
建议采用三级提醒机制:
- 一级提醒:超时前50%时间(温和提醒)
- 二级提醒:超时前80%时间(重要提醒)
- 三级提醒:超时前95%时间(紧急提醒)
3. 异常处理与监控
// 监控超时处理异常
try {
flowLongEngine.autoCompleteTask(taskId);
} catch (Exception e) {
log.error("超时自动处理失败: taskId={}", taskId, e);
// 发送告警通知
sendAlertNotification(taskId, e);
}
总结
飞龙工作流FlowLong的超时审批自动处理功能为企业提供了完整的流程自动化解决方案。通过灵活的配置选项、强大的提醒机制和可靠的处理逻辑,能够有效解决审批流程中的阻塞问题,提升业务流程效率。
关键优势总结:
- ✅ 零编码配置:通过JSON配置即可实现复杂超时策略
- ✅ 多模式支持:支持自动通过、自动拒绝等多种处理方式
- ✅ 智能提醒:多级提醒机制降低超时发生率
- ✅ 高可靠性:分布式锁保障数据一致性
- ✅ 易于扩展:支持自定义超时处理逻辑
通过合理配置和使用FlowLong的超时审批功能,企业可以显著提升审批流程的自动化水平和运行效率,确保业务流程的顺畅执行。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



