本發(fā)明屬于業(yè)務(wù)過程領(lǐng)域,具體為業(yè)務(wù)過程日志的最小修復(fù),即給定業(yè)務(wù)過程的模型和對應(yīng)的帶有丟失事件的業(yè)務(wù)過程日志,得到業(yè)務(wù)過程日志的最小修復(fù)的技術(shù)。
背景技術(shù):
20世紀(jì)90年代早期,美國企業(yè)為尋回它們在上一個(gè)十年間丟掉的競爭力,廣泛開展了稱為“再造工程”(Reengineering)的企業(yè)改造活動(dòng)。再造工程的倡導(dǎo)者們明確地對亞當(dāng)·斯密的勞動(dòng)分工論做出了反思,并提出了以過程為中心這一新的組織原則。再造工程的實(shí)踐和思想在短短幾年傳遍全世界,“業(yè)務(wù)過程”這一概念被明確地界定和廣泛地接受,以業(yè)務(wù)過程為中心已經(jīng)取代了“職能分工”,成為管理的首要原則。在新的業(yè)務(wù)過程理念基礎(chǔ)上,進(jìn)一步形成了“以過程為中心”的理念,以此打破傳統(tǒng)組織常見的部門隔閡、僵化遲鈍等弊端。而圍繞著過程所建立的組織,具有更高的敏捷性、效率和效益。傳統(tǒng)的辦公自動(dòng)化系統(tǒng)、科學(xué)工作流到最近的Web服務(wù)和在線事務(wù)處理,這些都屬于業(yè)務(wù)過程領(lǐng)域。
為了支持管理決策,業(yè)務(wù)過程日志記錄了過程實(shí)例的執(zhí)行,通過分析過程日志數(shù)據(jù)可以了解業(yè)務(wù)過程的執(zhí)行,實(shí)現(xiàn)業(yè)務(wù)過程的管理、改進(jìn)、再造。
然而,由于手動(dòng)記錄時(shí)忘記提交,或者系統(tǒng)宕機(jī),異構(gòu)執(zhí)行環(huán)境的事件日志混雜等一系列原因都會(huì)導(dǎo)致業(yè)務(wù)過程實(shí)例執(zhí)行記錄的丟失。丟失事件是拉低事件日志質(zhì)量的重要原因。不修復(fù)這些丟失的事件,基于這些丟失事件的日志進(jìn)行的應(yīng)用和挖掘是不可信的。事件日志的質(zhì)量嚴(yán)重影響了商業(yè)智能功能的分析結(jié)果,復(fù)雜的事件挖掘,信源分析,過程挖掘。因此,修復(fù)丟失的事件變得尤為重要。
de Leoni等人提出了一種先進(jìn)的基于對齊的一致性檢驗(yàn)技術(shù),這項(xiàng)技術(shù)旨在將序列中的事件與過程規(guī)約中的事件進(jìn)行對齊來計(jì)算日志和業(yè)務(wù)過程的一致性程度。A.Rogge-Solti1等人基于對齊的思想并結(jié)合了隨機(jī)Petri nets,貝葉斯網(wǎng)絡(luò)提出了對該方法的改進(jìn),使改方法能應(yīng)用于日志修復(fù)。該方法應(yīng)用路徑概率來確定最有可能的丟失事件,并應(yīng)用貝葉斯網(wǎng)絡(luò)來計(jì)算各個(gè)插入事件的最大概率的時(shí)間戳。但該方法由于枚舉搜索了過程規(guī)約上的所有完備發(fā)生序列而缺乏效率。為了解決效率問題,Wang等人提出了gap和fill概念,并提出了基于分支框架的 修復(fù)算法。該方法將過程規(guī)約同態(tài)映射為一個(gè)不包含OR-join的分支網(wǎng)絡(luò),并且利用索引和減枝技術(shù)有效的減少了搜索空間,提高了修復(fù)效率。但實(shí)現(xiàn)較為復(fù)雜且效率存在提升空間。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提出一種修復(fù)丟失事件的業(yè)務(wù)過程日志的方法。
實(shí)現(xiàn)本發(fā)明目的的技術(shù)解決方案為:一種啟發(fā)式過程日志修復(fù)方法,以Petri net描述的過程規(guī)約和帶有丟失事件的業(yè)務(wù)過程日志為輸入,以相應(yīng)的修復(fù)日志為輸出結(jié)果。步驟如下:
(1)輸入以Petri net格式表示的業(yè)務(wù)過程及對應(yīng)的帶有丟失事件的日志文件。判斷業(yè)務(wù)過程中是否包含循環(huán),然后將業(yè)務(wù)過程分解為不包含選擇結(jié)構(gòu)的子過程,并計(jì)算每個(gè)子過程,得出每個(gè)子過程的結(jié)構(gòu)信息;
(2)運(yùn)用啟發(fā)式規(guī)則確定帶有丟失事件的日志文件對應(yīng)的能產(chǎn)生最小修復(fù)的子過程;
(3)運(yùn)用軌跡重現(xiàn)技術(shù)得到日志的最小修復(fù)。
本發(fā)明與現(xiàn)有技術(shù)相比,有顯著優(yōu)點(diǎn)為:本發(fā)明提出的方法將業(yè)務(wù)過程分解,運(yùn)用啟發(fā)式規(guī)則確定丟失事件日志對應(yīng)的子過程,運(yùn)用軌跡重現(xiàn)得到對應(yīng)的最小修復(fù)。并將一致性檢驗(yàn)與日志修復(fù)結(jié)合為一步,與其他方法相比,該方法實(shí)現(xiàn)簡單并提高了修復(fù)效率。
附圖說明
圖1為本發(fā)明的流程圖。
圖2為back transition和exit transition以及S1和S2結(jié)構(gòu)示意圖。
圖3為本發(fā)明Casual net實(shí)例。
圖4為本發(fā)明為帶選擇的Petri net實(shí)例及其分解后的子過程。
圖5為本發(fā)明為帶循環(huán)的Petri net實(shí)例。
具體實(shí)施方式
本發(fā)明一種啟發(fā)式過程日志修復(fù)方法,以Petri net描述的過程規(guī)約和帶有丟失事件的業(yè)務(wù)過程日志輸入,以相應(yīng)的修復(fù)日志為輸出結(jié)果,具體流程如附圖1所示。
其具體實(shí)現(xiàn)如下:
1.輸入以Petri net格式表示的業(yè)務(wù)過程及對應(yīng)的帶有丟失事件的日志文件。判斷業(yè)務(wù)過程中是否包含循環(huán),然后將業(yè)務(wù)過程分解為不包含選擇結(jié)構(gòu)的子過程,并計(jì)算每個(gè)子過程,得出每個(gè)子過程的結(jié)構(gòu)信息;
業(yè)務(wù)過程以及子過程為一個(gè)以(P,T,F(xiàn))表示的三元組,其中P為庫所的有限集,T為變遷的有限集,為有向邊。
其中主路徑為Petri net表示的有向圖中從source place出發(fā)到sink place結(jié)束的最短路徑,循環(huán)體為該有向圖中的環(huán)路,S1為循環(huán)體與主路徑的交集,S2為循環(huán)體與主路徑的差集,back transition為循環(huán)體S2結(jié)構(gòu)中偏離主路徑的第一個(gè)變遷,exit transition為在主路徑上跳出循環(huán)體S1結(jié)構(gòu)的第一個(gè)變遷,如圖2所示。
其具體步驟為:
1.1對業(yè)務(wù)過程S=(P,T,F(xiàn))從source place開始作深度優(yōu)先遍歷,并將遍歷中遇到的變遷加入到ArrayList集合path中,繼續(xù)深度優(yōu)先遍歷,如果遍歷到一個(gè)存在于path中的回退變遷,則s中存在循環(huán),否則不存在;
1.2定義子過程集petriNets,若S沒有選擇結(jié)構(gòu),則petriNets等于S;否則將S分解為不包含選擇結(jié)構(gòu)的子過程,petriNets為S分解后的子過程集;
1.3對每個(gè)子過程運(yùn)用步驟1.1的方法判斷其是否包含循環(huán);如果某個(gè)子過程中有循環(huán),則計(jì)算出其所有S1、S2、back transition和exit transition結(jié)構(gòu),一一對應(yīng)放入集合S1s、S2s、backs和exits中。
2.運(yùn)用啟發(fā)式規(guī)則確定帶有丟失事件的日志文件對應(yīng)的能產(chǎn)生最小修復(fù)的子過程。步驟如下:
2.1對σ中的每個(gè)事件,計(jì)算它在σ中的發(fā)生次數(shù),并以事件名和對應(yīng)的次數(shù)為格式放入一個(gè)HashMap eventFreq中。
2.2根據(jù)步驟1.1,如果S中沒有循環(huán)則遍歷petriNets應(yīng)用準(zhǔn)則1得到對應(yīng)的子過程Ss,如果S中有循環(huán)則遍歷petriNets運(yùn)用準(zhǔn)則2得到對應(yīng)的子過程Ss。
準(zhǔn)則1:
給定一個(gè)不帶循環(huán)的業(yè)務(wù)過程S=(P,T,F(xiàn)),子網(wǎng)Ss=(Ps,Ts,F(xiàn)s)能得到不完整的事件序列σ的最小修復(fù)σ',如果它滿足以下條件
(1)S(σ)代表σ中所包含的事件集。
(2)沒有另外的causal net Ss'=(Ps',Ts',F(xiàn)s')滿足條件(1)并且|Ts'|<|Ts|。
準(zhǔn)則2
給定一個(gè)帶循環(huán)的業(yè)務(wù)過程S,分解后的子過程Ss=(Ps,Ts,F(xiàn)s)能得到不完整的事件序列σ的最小修復(fù)σ',如果它滿足以下條件
(1)S(σ)代表σ中所包含的事件集。
(2)如果σ中的任意事件e的發(fā)生次數(shù)不超過一次并且σ不包含Ss的S2中的變遷對應(yīng)的事件,則刪除Ss的S2結(jié)構(gòu);
(3)沒有其他子過程滿足條件(1)和(2)并且滿足|Ts'|<|Ts|。
3.運(yùn)用軌跡重現(xiàn)技術(shù)得到日志的最小修復(fù)。
具體步驟如下:
3.1對應(yīng)過程中沒有循環(huán)的或者子過程中本來有循環(huán)但被刪除所有S2結(jié)構(gòu)的子過程運(yùn)用算法1得到日志的最小修復(fù);
3.2對于子過程中有循環(huán)的運(yùn)用算法2得到日志的最小修復(fù)。
步驟3.2:如果back transition不丟失的話,情況3.2用算法1也能得到最小的修復(fù),由于實(shí)際情況中back transition也會(huì)丟失。所以我們必須計(jì)算back transition的丟失數(shù)目missingNo。back transition的missingNo為S1中變遷的最大的發(fā)生次數(shù)K1,減去S2中的變遷發(fā)生的最大次數(shù)K2,再減去1。即為K1-K2-1。然后運(yùn)用算法2得到對應(yīng)的最小修復(fù)。
算法1:SequenceRecovery(σ,S)
輸入:待修復(fù)的日志中事件序列σ和過程規(guī)約S
輸出:修復(fù)后的事件序列σ
1.σ′←null
2.Mc←M0
3.i←1
4.while i<|σ|do
5.i←i+1
6.σ′←Append(σ′,σ[i])
7.Mc[t>Mc′
8.σ′←Append(σ′,t)
9.Mc←Mc′
10.Find P∈T*:Mc[P>Mf
11.σ′←Append(σ′,p)
12.return σ′
具體可分為如下步驟
1.1初始化修復(fù)后的事件序列σ'為null,當(dāng)前標(biāo)識(shí)Mc為初始標(biāo)識(shí)M0,計(jì)數(shù)器i為1;
1.2當(dāng)i小于σ的總長時(shí),判斷σ中第i個(gè)事件σ[i]是否是使能的,如果是,則將其放到σ'后,否則執(zhí)行下一步;
1.3在此過程中任意找一個(gè)使能的變遷t,它能使當(dāng)前標(biāo)識(shí)Mc變?yōu)镸c'。觸發(fā)它,并把它加入σ'后,當(dāng)前標(biāo)識(shí)Mc變?yōu)镸c';
1.4當(dāng)i大于σ的總長時(shí),找到一個(gè)事件序列P(T的集合)使得當(dāng)前標(biāo)識(shí)Mc能到達(dá)最終標(biāo)識(shí)Mf,并把它加入σ'后,并返回σ';
算法2:SequenceRecovery+(σ,SP)
Input:
outPut:
1.σ′←null
2.Mc←M0
3.i←1
4.while i<|σ|do
5.if Mc[σ[i]>Mc′
6.i←i+1
7.σ′←Append(σ′,σ[i])
8.elseifte∈Te:Mc[tb>Mc′ and Mc[teMc″then
9.tb.missingNo←tb.missingNo-1
10.if tb.missingNo≥0then
11.σ′←Append(σ′,tb)
12.Mc←Mc′
13.else
14.σ′←Append(σ′,te)
15.Mc←Mc″
16.Mc[t>Mc′
17σ′←Append(σ′,t)
18.Mc←Mc′
19.Find P∈T*:Mc[P>Mf
20.σ′←Append(σ′,p)
21.return σ′
具體可分為如下步驟:
2.1初始化修復(fù)后的事件序列σ'為null,當(dāng)前標(biāo)識(shí)Mc為初始標(biāo)識(shí)M0,計(jì)數(shù)器i為1;
2.2當(dāng)i小于σ的總長時(shí),判斷σ中第i個(gè)事件σ[i]是否是使能的,如果是,則將其放到σ'后,否則執(zhí)行下一步;
2.3遍歷backs和exits集合判斷是否存在第j個(gè)back[j]tb和exits[j]te使能,tb能使當(dāng)前標(biāo)識(shí)Mc變?yōu)镸c',te能使當(dāng)前標(biāo)識(shí)Mc變?yōu)镸c”。判斷tb的丟失數(shù)目;如果tb的丟失數(shù)目大于1,則選擇觸發(fā)tb,把它加入到σ'后,置標(biāo)識(shí)Mc變?yōu)镸c'。否則選擇觸發(fā)te,把它加入到σ'后,當(dāng)前標(biāo)識(shí)Mc變?yōu)镸c”;
2.4在此過程中任意找一個(gè)使能的變遷t,它能使當(dāng)前標(biāo)識(shí)Mc變?yōu)镸c'。觸發(fā)它,并把它加入σ'后,當(dāng)前標(biāo)識(shí)Mc變?yōu)镸c';
2.5當(dāng)i大于σ的總長時(shí),找到一個(gè)事件序列P(T的集合)使得當(dāng)前標(biāo)識(shí)Mc能到達(dá)最終標(biāo)識(shí)Mf,并把它加入σ'后,并返回σ';下面結(jié)合實(shí)例對本發(fā)明做進(jìn)一步說明:
本發(fā)明的實(shí)例來源于一個(gè)Dongfang Boiler(東方鍋爐)公司。為了更具一般性,分別選取一個(gè)Casual net,一個(gè)帶選擇的,一個(gè)帶循環(huán)的來說明。如圖3,4(a),5所示。
1.考慮圖3所示的過程規(guī)約S的一個(gè)帶有丟失事件日志對應(yīng)的不完整序列 σ=[trans_2,trans_3,trans_0]。
1.1由于S是Casual net,所以深度優(yōu)先遍歷不存在回退變遷,沒有選擇結(jié)構(gòu),其分解后為其自身,即petriNets等于S;
1.2由于S沒有循環(huán),所以遍歷petriNets運(yùn)用準(zhǔn)則1得到Ss等于S,所以σ對應(yīng)的過程為S;
1.3根據(jù)算法1得到最小恢復(fù)序列σ':
1.3.1i=1<|σ|=3,σ[1]=trans_2使能
1.3.2i=2,σ'=[trans_2]同樣σ[2]=trans_3使能
1.3.3i=3,σ'=[trans_2,trans_3]。接下來σ[3]=trans_0不是使能的,在變遷集中找一個(gè)使能的trans_1發(fā)生σ'=[trans_2,trans_3,trans_1]?,F(xiàn)在σ[3]=trans_0使能。
1.3.4i=4,σ'=[trans_2,trans_3,trans_1,trans_0],i>3退出循環(huán)。返回σ'=[trans_2,trans_3,trans_1,trans_0]。
2.考慮圖4(a)的過程規(guī)約S的兩個(gè)不完整的序列σ1=[trans_4,trans_3,tran_2,trans_1]和σ2=[trans_0,trans_2,trans_1]。
2.1對S深度優(yōu)先遍歷不存在回退變遷,所以沒有循環(huán),將其分解。分解后的子過程為Sa,Sb如圖4(b),(c)所示,由于S不包含循環(huán),所以子過程Sa和Sb也不包含循環(huán);
2.2對于σ1=[trans_4,trans_3,tran_2,trans_1],按啟發(fā)式規(guī)則1得到包含σ1中的所有事件名的對應(yīng)的變遷,且變遷數(shù)目最小的的子過程為Sa。對于σ2=[trans_0,trans_2,trans_1],按啟發(fā)式規(guī)則1得到它對應(yīng)的子過程為Sb;
2.3對σ1和對應(yīng)的子過程Sa運(yùn)用算法1得到σ1的最小修復(fù)σ1'=[trans_4,trans_3,tran_2,tran_5,trans_1]。對σ2和對應(yīng)的子過程Sb運(yùn)用算法1得到σ2的最小修復(fù)σ2'=[trans_4,trans_0,tran_2,tran_5,trans_1]。
3.考慮圖5的過程規(guī)約S的兩個(gè)不完整的序列σ1=[trans_4,trans_5,tran_2,trans_7]和σ2=[trans_4,trans_6,trans_5,trans_5,trans_8,trans_3,trans_6,trans_5,trans_7].
3.1對S深度優(yōu)先遍歷當(dāng)path=[trans_4,trans_6,tran_5,trans_8,trans_3,trans_6]時(shí)trans_6為回退變遷,S中存在循環(huán),對S進(jìn)行分解,由于S中沒有選擇結(jié)構(gòu),所以分解后為自身。計(jì)算得它的back transition為trans_3,exit transition 為trans_2。S1中的變遷為[trans_6,trans_5,trans_8],S2中的變遷為[trans_3]。
所以S1s={[trans_6,trans_5,trans_8]}、S2s={[trans_3]}、backs={trans_3}和exits={trans_2}。
3.2.1由于S中存在循環(huán),對于σ1每個(gè)事件的發(fā)生次數(shù)eventFreq為{trans_4=1,trans_5=1,trans_2=1,trans_7=1},由于σ1在S1出發(fā)生的最大次數(shù)小于等于1并且不包含S2結(jié)構(gòu)的變遷,所以刪除了所有S2結(jié)構(gòu)的S為σ1對應(yīng)的子過程;
3.2.2對于σ2每個(gè)事件的發(fā)生次數(shù)為{trans_4=1,trans_6=1,trans_5=3,trans_8=1,trans_3=1,trans_6=1,trans_7=1},由于σ1在S1出發(fā)生的最大次數(shù)大于1,所以S為σ2對應(yīng)的子過程。
3.3.1對于σ1和刪除了S2結(jié)構(gòu)的S運(yùn)用算法1得到最小修復(fù)為σ1'=[trans_4,trans_6,tran_5,trans_8,tran_2,trans_7];
3.3.2對于σ2,計(jì)算出back transition trans_3的丟失數(shù)目為3-1-1=1,即trans_3在日志中丟失了一次。再運(yùn)用算法2得到最小修復(fù)σ2'=[trans_4,trans_6,tran_5,trans_8,trans_3,trans_6,tran_5,trans_8,trans_3,trans_6,tran_5,trans_8,tran_2,trans_7]。