流程引擎歷時算法

這是一個電信項目,企業內的流程管理。市面上也有不少流程引擎軟件。幾年前的工做內容了,曾經得到過公司的「技術創新獎」。這個算法抽象起來,也有通用的應用場景。算法

需求:

爲了可以清楚知道一個流程從開始環節到結束環節總共花費了多少時間,或者是停留某個環節的時間多長,所以引入了流程歷時方案,經過流程方案來計算出流程或環節的耗時時長。優化

一個流程的耗時,只包含天天工做日的工做時間段且不包含午休時間。若是所負責的員工請假,那麼流程還須要掛起並不計入流程耗時。一個流程可能存在成千上萬張單,每張單通過人各不相同,並且一個流程從開始就會天天都更新曆時;要算出一個流程的歷時,須要排除合併計算不少次的時間段。況且流程不止一個。spa

 

固然,直接合並時間段是最直接想到的作法,只是效率很是低下。這個問題歸納起來,就是不少維度的時間段交叉合併,得出最終的時間段,而後把最終的時間段累加算出耗時。.net

成果:

一、幾個月的時間段:時間段數:212,剔除後的時間段數:153blog

原程序運行耗時:0.83ms/次博客

優化後運行耗時:0.076ms/次效率

優化比率:10.9倍基礎

二、在幾個月的基礎上再增長一年的時間段:時間段數:578,剔除後的時間段數:413軟件

原程序運行耗時:6ms/次程序

優化後運行耗時:0.2ms/次

優化比率:30倍

 

優化算法:

原創博客,轉帖請註明原出處:http://my.oschina.net/u/223522/blog/729118

相關文章
相關標籤/搜索