流程引擎历时算法

这是一个电信项目,企业内的流程管理。市面上也有很多流程引擎软件。几年前的工作内容了,曾经获得过公司的“技术创新奖”。这个算法抽象起来,也有通用的应用场景。

需求:

为了能够清楚知道一个流程从开始环节到结束环节总共花费了多少时间,或者是停留某个环节的时间多长,因此引入了流程历时方案,通过流程方案来计算出流程或环节的耗时时长。

一个流程的耗时,只包含每天工作日的工作时间段且不包含午休时间。如果所负责的员工请假,那么流程还需要挂起并不计入流程耗时。一个流程可能存在成千上万张单,每张单经过人各不相同,而且一个流程从开始就会每天都更新历时;要算出一个流程的历时,需要排除合并计算很多次的时间段。何况流程不止一个。

 

当然,直接合并时间段是最直接想到的做法,只是效率非常低下。这个问题概括起来,就是很多维度的时间段交叉合并,得出最终的时间段,然后把最终的时间段累加算出耗时。

成果:

1、几个月的时间段:时间段数:212,剔除后的时间段数:153

原程序运行耗时:0.83ms/次

优化后运行耗时:0.076ms/次

优化比率:10.9倍

2、在几个月的基础上再增加一年的时间段:时间段数:578,剔除后的时间段数:413

原程序运行耗时:6ms/次

优化后运行耗时:0.2ms/次

优化比率:30倍

 

优化算法:

原创博客,转帖请注明原出处:http://my.oschina.net/u/223522/blog/729118

转载于:https://my.oschina.net/u/223522/blog/729118

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值