1.一種啟發(fā)式過程日志修復方法,其特征在于步驟如下:
(1)輸入以Petri net格式表示的業(yè)務過程及對應的帶有丟失事件的日志文件,判斷業(yè)務過程中是否包含循環(huán),然后將業(yè)務過程分解為不包含選擇結構的子過程,并計算每個子過程,得出每個子過程的結構信息;
(2)采用啟發(fā)式規(guī)則確定帶有丟失事件的日志文件對應的能產生最小修復的子過程;
(3)運用軌跡重現技術得到日志的最小修復。
2.根據權利要求1所述的啟發(fā)式過程日志修復方法,其特征在于:步驟(1)中,
業(yè)務過程以及子過程為一個三元組(P,T,F),其中P為庫所的有限集,T為變遷的有限集,F(P×T)(T×P)為有向邊;子過程結構信息中的主路徑表示該過程中從source place出發(fā)到sink place結束的最短路徑,循環(huán)體為該過程中的環(huán)路,S1為循環(huán)體與主路徑的交集,S2為循環(huán)體與主路徑的差集,back transition為S2結構中偏離主路徑的第一個變遷,exit transition為在主路徑上跳出S1結構的第一個變遷;
步驟(1)的具體實現為:
1.1對業(yè)務過程S=(P,T,F)從source place開始作深度優(yōu)先遍歷,并將遍歷中遇到的變遷加入到ArrayList集合path中,繼續(xù)深度優(yōu)先遍歷,如果遍歷到一個存在于path中的回退變遷,則s中存在循環(huán),否則不存在;
1.2定義子過程集petriNets,若S沒有選擇結構,則petriNets等于S;否則將S分解為不包含選擇結構的子過程,petriNets為S分解后的子過程集;
1.3對每個子過程運用步驟1.1的方法判斷其是否包含循環(huán);如果某個子過程中有循環(huán),則計算出其所有S1、S2、back transition和exit transition結構,一一對應放入集合S1s、S2s、backs和exits中。
3.根據權利要求1所述的啟發(fā)式過程日志修復方法,其特征在于:步驟(2)中,帶有丟失事件的日志文件的事件序列σ=[event1,event2,event3......]對應的能產生最小修復的子過程為Ss=(Ps,Ts,Fs),遍歷petriNets求得Ss的啟發(fā)式規(guī)則分為兩種情況:
對于S不包含循環(huán)的,其啟發(fā)式規(guī)則為:
(1)S(σ)Ts,S(σ)代表σ中所包含的事件集;
(2)沒有另外的子過程Ss'=(Ps',Ts',Fs')滿足條件(1)并且|Ts'|<|Ts|;
對于S包含循環(huán)的,其啟發(fā)式規(guī)則為:
(1)S(σ)Ts,S(σ)代表σ中所包含的事件集;
(2)如果σ中的任意事件e的發(fā)生次數不超過一次并且σ不包含Ss的S2中的變遷對應的事件,則刪除Ss的S2結構;
(3)沒有另外的子過程Ss'=(Ps',Ts',Fs')滿足條件(1)和(2)并且滿足|Ts'|<|Ts|;
步驟(2)的具體實現如下:
2.1對σ中的每個事件,計算它在σ中的發(fā)生次數,并以事件名和對應的次數為格式放入一個HashMap eventFreq中;
2.2根據步驟1.1所得到的S中是否包含循環(huán)的判斷,分別選擇對應的啟發(fā)式規(guī)則遍歷子過程集petriNets,得到對應的能產生最小修復的子過程為Ss。
4.根據權利要求1所述的啟發(fā)式過程日志修復方法,其特征在于:步驟(3)的實現分為兩種情況:
對于Ss不包含循環(huán)的,其步驟如下:
3.1.1初始化修復后的事件序列σ'為null,當前標識Mc為初始標識M0,計數器i為1;
3.1.2當i小于σ的總長時,判斷σ中第i個事件σ[i]是否是使能的,如果是,則將其加入到σ'后,否則執(zhí)行下一步;
3.1.3在Ss中任意找一個使能的變遷t,它能使當前標識Mc變?yōu)镸c';觸發(fā)它,并把t加入到σ'后,當前標識Mc變?yōu)镸c';
3.1.4當i大于σ的總長時,找到一個事件序列es,使得當前標識Mc能到達最終標識Mf,并把es加入到σ'后,并返回σ';
對于Ss包含循環(huán)的,其步驟如下:
3.2.1初始化修復后的事件序列σ'為null,當前標識Mc為初始標識M0,計數器i為1;
3.2.2當i小于σ的總長時,判斷σ中第i個事件σ[i]是否是使能的,如果是,則將其加入到σ'后,否則執(zhí)行下一步;
3.2.3遍歷backs和exits集合得到第j個back[j]和exits[j]使能,back[j]能使當前標識Mc變?yōu)镸c',exits[j]能使當前標識Mc變?yōu)镸c”;判斷back[j]的丟失數 目;如果back[j]的丟失數目大于1,則選擇觸發(fā)back[j],把它加入到σ'后,置標識Mc變?yōu)镸c',否則選擇觸發(fā)exits[j],把它加入到σ'后,置當前標識Mc變?yōu)镸c”;
3.2.4在Ss中任意找一個使能的變遷t,它能使當前標識Mc變?yōu)镸c”';觸發(fā)t,并把它加入到σ'后,當前標識Mc變?yōu)镸c”';
3.2.5當i大于σ的總長時,找到一個事件序列es,使得當前標識Mc能到達最終標識Mf,并把es加入到σ'后,并返回σ'。
5.根據權利要求4所述的啟發(fā)式過程日志修復方法,其特征在于:步驟(3)中的back[j]的丟失數目為日志中它應該發(fā)生的次數與日志中現有次數的差,其判斷方法如下:
對于back[j],遍歷eventFreq得到S1s[j]中變遷發(fā)生的最大次數K1和S2s[j]中變遷發(fā)生的最大次數K2,則K1-K2-1即為back[j]的丟失數目。