OA流程节点超时功能

在OA系统中,节点超时功能是一个关键的技术特性,它能够确保流程的顺畅进行,避免任务因为个别环节的延误而影响整体进度。本文将探讨OA系统中节点超时功能的技术实现和优化策略。

参考泛微OA ecology E9 

前台设置:

   系统管理员在管理后端设置对应的流程节点相关超时设置,可分为超时提醒 超时处理 两大类(如图)

超时提醒:只提醒 不处理流程

超时处理:会处理流程。

系统设计实现:

  在应用系统启动的时候,会起一个多个线程进行超时功能的运行。系统启动 搜索所有节点超时的相关数据,初始化线程 以及一些队列。

在泛微OA中。该功能实现方式为:时钟轮 + 延时队列 模式实现的!

同机器人节点一样,集群环境中 只有主节点处理具体业务逻辑,子节点只通过redis发布数据,不参与超时处理任务当中。

核心启动类为:OvertimeBiz,时间轮 等具体实现为:BaseOvertimeThread

前台保存超时节点设置后,会放入队列中,OvertimeBiz中 会有线程监控和这个队列 ,

监听到队列有新内容后,则添加到任务中  区分是超时提醒 还是超时处理

如任务在时钟轮上的刻度 则放入延迟队列中 等待消费。如果不在,放入父时间轮钟。

系统启动时,初始化时间轮相关数据 以及线程,这里按的是秒 一轮为60秒 ,启动后有单独线程模拟指针运作。

当指针跳到下个刻度的时候 获取延迟队列中符合条件的首个元素进行超时任务的处理。会区分 时超时提醒 还是超时任务。

至此大致逻辑完毕,当然这个功能是超级复杂的 我这里只是讲了很粗的代码。具体实现可以看具体业务场景。

节点超时数据 会存在 数据库表 比如A员工收到这个流程后 没操作,则会取这个员工收到流程的时间+前台设计的超时任务 求出来这个流程将在未来多少秒后超时!

有其他疑问 可以留言哦.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你真好看≧◔◡◔≦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值