流程引擎历时算法

原创
2016/08/07 14:29
阅读数 265

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

需求:

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

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

 

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

成果:

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

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

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

优化比率:10.9倍

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

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

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

优化比率:30倍

 

优化算法:

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

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
2 收藏
1
分享
返回顶部
顶部