一种启发式过程日志修复方法与流程

文档序号:12364859阅读:142来源:国知局
一种启发式过程日志修复方法与流程

本发明属于业务过程领域,具体为业务过程日志的最小修复,即给定业务过程的模型和对应的带有丢失事件的业务过程日志,得到业务过程日志的最小修复的技术。



背景技术:

20世纪90年代早期,美国企业为寻回它们在上一个十年间丢掉的竞争力,广泛开展了称为“再造工程”(Reengineering)的企业改造活动。再造工程的倡导者们明确地对亚当·斯密的劳动分工论做出了反思,并提出了以过程为中心这一新的组织原则。再造工程的实践和思想在短短几年传遍全世界,“业务过程”这一概念被明确地界定和广泛地接受,以业务过程为中心已经取代了“职能分工”,成为管理的首要原则。在新的业务过程理念基础上,进一步形成了“以过程为中心”的理念,以此打破传统组织常见的部门隔阂、僵化迟钝等弊端。而围绕着过程所建立的组织,具有更高的敏捷性、效率和效益。传统的办公自动化系统、科学工作流到最近的Web服务和在线事务处理,这些都属于业务过程领域。

为了支持管理决策,业务过程日志记录了过程实例的执行,通过分析过程日志数据可以了解业务过程的执行,实现业务过程的管理、改进、再造。

然而,由于手动记录时忘记提交,或者系统宕机,异构执行环境的事件日志混杂等一系列原因都会导致业务过程实例执行记录的丢失。丢失事件是拉低事件日志质量的重要原因。不修复这些丢失的事件,基于这些丢失事件的日志进行的应用和挖掘是不可信的。事件日志的质量严重影响了商业智能功能的分析结果,复杂的事件挖掘,信源分析,过程挖掘。因此,修复丢失的事件变得尤为重要。

de Leoni等人提出了一种先进的基于对齐的一致性检验技术,这项技术旨在将序列中的事件与过程规约中的事件进行对齐来计算日志和业务过程的一致性程度。A.Rogge-Solti1等人基于对齐的思想并结合了随机Petri nets,贝叶斯网络提出了对该方法的改进,使改方法能应用于日志修复。该方法应用路径概率来确定最有可能的丢失事件,并应用贝叶斯网络来计算各个插入事件的最大概率的时间戳。但该方法由于枚举搜索了过程规约上的所有完备发生序列而缺乏效率。为了解决效率问题,Wang等人提出了gap和fill概念,并提出了基于分支框架的 修复算法。该方法将过程规约同态映射为一个不包含OR-join的分支网络,并且利用索引和减枝技术有效的减少了搜索空间,提高了修复效率。但实现较为复杂且效率存在提升空间。



技术实现要素:

本发明的目的在于提出一种修复丢失事件的业务过程日志的方法。

实现本发明目的的技术解决方案为:一种启发式过程日志修复方法,以Petri net描述的过程规约和带有丢失事件的业务过程日志为输入,以相应的修复日志为输出结果。步骤如下:

(1)输入以Petri net格式表示的业务过程及对应的带有丢失事件的日志文件。判断业务过程中是否包含循环,然后将业务过程分解为不包含选择结构的子过程,并计算每个子过程,得出每个子过程的结构信息;

(2)运用启发式规则确定带有丢失事件的日志文件对应的能产生最小修复的子过程;

(3)运用轨迹重现技术得到日志的最小修复。

本发明与现有技术相比,有显著优点为:本发明提出的方法将业务过程分解,运用启发式规则确定丢失事件日志对应的子过程,运用轨迹重现得到对应的最小修复。并将一致性检验与日志修复结合为一步,与其他方法相比,该方法实现简单并提高了修复效率。

附图说明

图1为本发明的流程图。

图2为back transition和exit transition以及S1和S2结构示意图。

图3为本发明Casual net实例。

图4为本发明为带选择的Petri net实例及其分解后的子过程。

图5为本发明为带循环的Petri net实例。

具体实施方式

本发明一种启发式过程日志修复方法,以Petri net描述的过程规约和带有丢失事件的业务过程日志输入,以相应的修复日志为输出结果,具体流程如附图1所示。

其具体实现如下:

1.输入以Petri net格式表示的业务过程及对应的带有丢失事件的日志文件。判断业务过程中是否包含循环,然后将业务过程分解为不包含选择结构的子过程,并计算每个子过程,得出每个子过程的结构信息;

业务过程以及子过程为一个以(P,T,F)表示的三元组,其中P为库所的有限集,T为变迁的有限集,为有向边。

其中主路径为Petri net表示的有向图中从source place出发到sink place结束的最短路径,循环体为该有向图中的环路,S1为循环体与主路径的交集,S2为循环体与主路径的差集,back transition为循环体S2结构中偏离主路径的第一个变迁,exit transition为在主路径上跳出循环体S1结构的第一个变迁,如图2所示。

其具体步骤为:

1.1对业务过程S=(P,T,F)从source place开始作深度优先遍历,并将遍历中遇到的变迁加入到ArrayList集合path中,继续深度优先遍历,如果遍历到一个存在于path中的回退变迁,则s中存在循环,否则不存在;

1.2定义子过程集petriNets,若S没有选择结构,则petriNets等于S;否则将S分解为不包含选择结构的子过程,petriNets为S分解后的子过程集;

1.3对每个子过程运用步骤1.1的方法判断其是否包含循环;如果某个子过程中有循环,则计算出其所有S1、S2、back transition和exit transition结构,一一对应放入集合S1s、S2s、backs和exits中。

2.运用启发式规则确定带有丢失事件的日志文件对应的能产生最小修复的子过程。步骤如下:

2.1对σ中的每个事件,计算它在σ中的发生次数,并以事件名和对应的次数为格式放入一个HashMap eventFreq中。

2.2根据步骤1.1,如果S中没有循环则遍历petriNets应用准则1得到对应的子过程Ss,如果S中有循环则遍历petriNets运用准则2得到对应的子过程Ss。

准则1:

给定一个不带循环的业务过程S=(P,T,F),子网Ss=(Ps,Ts,Fs)能得到不完整的事件序列σ的最小修复σ',如果它满足以下条件

(1)S(σ)代表σ中所包含的事件集。

(2)没有另外的causal net Ss'=(Ps',Ts',Fs')满足条件(1)并且|Ts'|<|Ts|。

准则2

给定一个带循环的业务过程S,分解后的子过程Ss=(Ps,Ts,Fs)能得到不完整的事件序列σ的最小修复σ',如果它满足以下条件

(1)S(σ)代表σ中所包含的事件集。

(2)如果σ中的任意事件e的发生次数不超过一次并且σ不包含Ss的S2中的变迁对应的事件,则删除Ss的S2结构;

(3)没有其他子过程满足条件(1)和(2)并且满足|Ts'|<|Ts|。

3.运用轨迹重现技术得到日志的最小修复。

具体步骤如下:

3.1对应过程中没有循环的或者子过程中本来有循环但被删除所有S2结构的子过程运用算法1得到日志的最小修复;

3.2对于子过程中有循环的运用算法2得到日志的最小修复。

步骤3.2:如果back transition不丢失的话,情况3.2用算法1也能得到最小的修复,由于实际情况中back transition也会丢失。所以我们必须计算back transition的丢失数目missingNo。back transition的missingNo为S1中变迁的最大的发生次数K1,减去S2中的变迁发生的最大次数K2,再减去1。即为K1-K2-1。然后运用算法2得到对应的最小修复。

算法1:SequenceRecovery(σ,S)

输入:待修复的日志中事件序列σ和过程规约S

输出:修复后的事件序列σ

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初始化修复后的事件序列σ'为null,当前标识Mc为初始标识M0,计数器i为1;

1.2当i小于σ的总长时,判断σ中第i个事件σ[i]是否是使能的,如果是,则将其放到σ'后,否则执行下一步;

1.3在此过程中任意找一个使能的变迁t,它能使当前标识Mc变为Mc'。触发它,并把它加入σ'后,当前标识Mc变为Mc';

1.4当i大于σ的总长时,找到一个事件序列P(T的集合)使得当前标识Mc能到达最终标识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初始化修复后的事件序列σ'为null,当前标识Mc为初始标识M0,计数器i为1;

2.2当i小于σ的总长时,判断σ中第i个事件σ[i]是否是使能的,如果是,则将其放到σ'后,否则执行下一步;

2.3遍历backs和exits集合判断是否存在第j个back[j]tb和exits[j]te使能,tb能使当前标识Mc变为Mc',te能使当前标识Mc变为Mc”。判断tb的丢失数目;如果tb的丢失数目大于1,则选择触发tb,把它加入到σ'后,置标识Mc变为Mc'。否则选择触发te,把它加入到σ'后,当前标识Mc变为Mc”;

2.4在此过程中任意找一个使能的变迁t,它能使当前标识Mc变为Mc'。触发它,并把它加入σ'后,当前标识Mc变为Mc';

2.5当i大于σ的总长时,找到一个事件序列P(T的集合)使得当前标识Mc能到达最终标识Mf,并把它加入σ'后,并返回σ';下面结合实例对本发明做进一步说明:

本发明的实例来源于一个Dongfang Boiler(东方锅炉)公司。为了更具一般性,分别选取一个Casual net,一个带选择的,一个带循环的来说明。如图3,4(a),5所示。

1.考虑图3所示的过程规约S的一个带有丢失事件日志对应的不完整序列 σ=[trans_2,trans_3,trans_0]。

1.1由于S是Casual net,所以深度优先遍历不存在回退变迁,没有选择结构,其分解后为其自身,即petriNets等于S;

1.2由于S没有循环,所以遍历petriNets运用准则1得到Ss等于S,所以σ对应的过程为S;

1.3根据算法1得到最小恢复序列σ':

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不是使能的,在变迁集中找一个使能的trans_1发生σ'=[trans_2,trans_3,trans_1]。现在σ[3]=trans_0使能。

1.3.4i=4,σ'=[trans_2,trans_3,trans_1,trans_0],i>3退出循环。返回σ'=[trans_2,trans_3,trans_1,trans_0]。

2.考虑图4(a)的过程规约S的两个不完整的序列σ1=[trans_4,trans_3,tran_2,trans_1]和σ2=[trans_0,trans_2,trans_1]。

2.1对S深度优先遍历不存在回退变迁,所以没有循环,将其分解。分解后的子过程为Sa,Sb如图4(b),(c)所示,由于S不包含循环,所以子过程Sa和Sb也不包含循环;

2.2对于σ1=[trans_4,trans_3,tran_2,trans_1],按启发式规则1得到包含σ1中的所有事件名的对应的变迁,且变迁数目最小的的子过程为Sa。对于σ2=[trans_0,trans_2,trans_1],按启发式规则1得到它对应的子过程为Sb

2.3对σ1和对应的子过程Sa运用算法1得到σ1的最小修复σ1'=[trans_4,trans_3,tran_2,tran_5,trans_1]。对σ2和对应的子过程Sb运用算法1得到σ2的最小修复σ2'=[trans_4,trans_0,tran_2,tran_5,trans_1]。

3.考虑图5的过程规约S的两个不完整的序列σ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深度优先遍历当path=[trans_4,trans_6,tran_5,trans_8,trans_3,trans_6]时trans_6为回退变迁,S中存在循环,对S进行分解,由于S中没有选择结构,所以分解后为自身。计算得它的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中存在循环,对于σ1每个事件的发生次数eventFreq为{trans_4=1,trans_5=1,trans_2=1,trans_7=1},由于σ1在S1出发生的最大次数小于等于1并且不包含S2结构的变迁,所以删除了所有S2结构的S为σ1对应的子过程;

3.2.2对于σ2每个事件的发生次数为{trans_4=1,trans_6=1,trans_5=3,trans_8=1,trans_3=1,trans_6=1,trans_7=1},由于σ1在S1出发生的最大次数大于1,所以S为σ2对应的子过程。

3.3.1对于σ1和删除了S2结构的S运用算法1得到最小修复为σ1'=[trans_4,trans_6,tran_5,trans_8,tran_2,trans_7];

3.3.2对于σ2,计算出back transition trans_3的丢失数目为3-1-1=1,即trans_3在日志中丢失了一次。再运用算法2得到最小修复σ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]。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1