业务过程死锁与缺乏同步错误的挖掘方法与流程

文档序号:15518115发布日期:2018-09-25 18:48阅读:248来源:国知局

本发明属于过程挖掘领域,具体涉及一种业务过程死锁与缺乏同步错误的挖掘方法。



背景技术:

近年来,随着云计算和大数据技术的发展,业务过程分析成为应用开发和系统集成的主流方法之一,例如,web服务组合,科学工作流程等。因此,过程分析在保证当今应用和信息系统质量方面起着越来越重要的作用。与传统的过程分析和当前热门的大数据分析技术相比,过程挖掘旨在从信息系统的实际执行历史即事件日志中,发现有用的行为知识,这在学术界和工业界受到了越来越多的关注。

现有的过程挖掘技术可以分为三大类:过程发现,即从事件日志中发现过程模型;一致性检查,即识别过程模型;和事件日志之间的差异和过程增强,即根据事件日志改进过程模型。尽管它们注重的是不同方面,但是这三类过程挖掘技术都事先假设事件日志是由健全的业务过程生成的。当且仅当业务过程没有控制流错误时,业务过程事件日志才是健全的。这表明如果一个事件日志是由一个不健全的过程产生的,那么直接应用现有的过程挖掘技术将是不合适的。



技术实现要素:

本发明的目的在于提供一种业务过程死锁与缺乏同步错误的挖掘方法。

实现本发明目的的技术方案为:一种业务过程死锁与缺乏同步错误的挖掘方法,根据业务过程事件日志,挖掘出业务过程中存在的死锁与缺乏同步错误;以xes格式描述的业务过程事件日志作为输入,以pnml格式描述的包含死锁或者缺乏同步错误的过程片段为输出,该方法具体步骤为:

步骤1,解析xes描述的业务过程事件日志,获得事件序列集合l,对l进行预处理,获得分别用于发现死锁与缺乏同步错误的事件序列集合l1和l2;

步骤2,分别遍历事件序列集合l1和l2中的每条事件序列,挖掘所有事件间的关系,包括直接先于关系、因果关系、并行关系、独立关系和传递闭包关系;

步骤3,对从事件序列集合l1中获得的事件关系集利用启发式规则1与α算法,挖掘得到业务过程中所有包含死锁错误的过程片段;

对从事件序列集合l2中获得的事件关系集利用启发式规则2与α算法,挖掘得到业务过程中所有包含缺乏同步错误的过程片段。

本发明与现有技术相比,其显著优点为:本发明首次提出了从事件日志中挖掘死锁与缺乏同步错误;采用了“关注点分离”的原则,将事件日志拆分成两个单独的日志,分别用于发现死锁与缺乏同步错误的所有过程片段,本方法能有效且高效的挖掘出这些控制流错误。

附图说明

图1是本发明业务过程死锁与缺乏同步错误的挖掘方法流程图。

图2是以xes格式描述的事件日志文件示意图。

图3(a)是事件日志文件中描述的事件序列集合l示意图。

图3(b)是用于挖掘死锁错误的事件序列集合l1示意图。

图3(c)是用于挖掘缺乏同步错误的事件序列集合l2示意图。

图4(a)是l1中所有事件之间的关系示意图。

图4(b)是l2中所有事件之间的关系示意图。

图5是过程中包含的死锁错误过程片段示意图。

图6是过程中包含的缺乏同步错误过程片段示意图。

具体实施方式

结合图1,一种业务过程死锁与缺乏同步错误的挖掘方法,根据业务过程事件日志,挖掘出业务过程中存在的死锁与缺乏同步错误;以xes格式描述的业务过程事件日志作为输入,以pnml格式描述的包含死锁或者缺乏同步错误的过程片段为输出,该方法具体步骤为:

步骤1,解析xes描述的业务过程事件日志,获得事件序列集合l,对l进行预处理,获得分别用于发现死锁与缺乏同步错误的事件序列集合l1和l2;具体为:

步骤1-1,解析业务过程事件日志xes文件,依次读取每一条日志信息,获得所有事件序列集合,任意一条事件序列σ={t1,t2,t3,…,tn}包含n个事件,t1……tn代表事件,这n个事件按照事件先后发生顺序排列;

步骤1-2,遍历事件序列集合,如果当前遍历的事件序列不以终止事件te结尾,则将该事件序列置于挖掘死锁错误的事件序列集合l1中;如果当前遍历的事件序列中包含te但不以te结尾,或者包含连续两个以上相同事件,则将该事件序列置于挖掘缺乏同步错误的事件序列集合l2中;为了扩大l2集合,以便更好的挖掘出缺乏同步错误片段,将l1投影到l2的集合上;

步骤1-3,分别遍历事件序列集合l1、l2,在每条事件序列中只保留每个事件的首次出现。

步骤2,分别遍历事件序列集合l1和l2中的每条事件序列,挖掘所有事件间的关系,包括直接先于关系、因果关系、并行关系、独立关系和传递闭包关系;具体为:

步骤2-1,遍历事件序列集合l1,挖掘获得所有事件之间的直接先于关系,符号表示为>,即对于任一事件序列σ={t1,t2,t3,…,tn},当a=ti,b=ti+1,则a>b;

步骤2-2,遍历事件序列集合l1中的事件集合,根据步骤2-1得到的直接先于关系集合,挖掘获得事件之间的因果关系,符号表示为→,当且仅当a>b并且b≯a时,a→b;并行关系,符号表示为||,当且仅当a>b,并且b>a时,a||b;以及独立关系,符号表示为#,当且仅当a≯b并且b≯a时,a#b;

步骤2-3,根据步骤2-2得到的因果关系,挖掘获得事件之间的传递闭包关系,符号表示为-→,当且仅当a→c1,c1→c2,……,cn→b时,a-→b;

步骤2-4,对事件序列集合l2进行步骤2-1、步骤2-2、步骤2-3操作,挖掘获得l2中所有事件之间的直接先于关系、因果关系、并行关系、独立关系以及传递闭包关系。

步骤3,对从事件序列集合l1中获得的事件关系集利用启发式规则1与α算法,挖掘得到业务过程中所有包含死锁错误的过程片段;对从事件序列集合l2中获得的事件关系集利用启发式规则2与a算法,挖掘得到业务过程中所有包含缺乏同步错误的过程片段;具体为:

步骤3-1,对于从事件序列l1中获得的事件关系集,根据启发式规则1,判断该过程中是否包含死锁错误;启发式规则1为:

如果存在事件t,{ti|1≤i≤m},{t′j|1≤j≤n},t1#t2#…#tm,t′1#t′2#…#t′n,对于任意ti:t→ti并且对于任意t′j,存在ti:ti-→t′j,但是不存在t′使得对于任意t′j:t′j→t′,表示存在死锁错误;

如果该过程中包含死锁错误,利用α算法挖掘得到过程中包含的所有死锁错误片段。

步骤3-2,对于从事件序列l2中获得的事件关系集,根据启发式规则2,判断该过程中是否包含缺乏同步错误;启发式规则2为:

如果存在t,{ti|1≤i≤m},{t′j|1≤j≤n},t1||t2||…||tm,t′1||t′2||…||t′n,,对于任意ti:t→ti并且对于任意t′j,存在ti:ti-→t′j,但是不存在t′使得对于任意t′j:t′j→t′,表示存在缺乏同步错误;

如果该过程中包含缺乏同步错误,利用α算法挖掘得到过程中包含的所有缺乏同步错误片段。

下面结合具体实施例对本发明作进一步说明。

实施例

本发明为业务过程死锁与缺乏同步错误的挖掘方法,通过对事件日志的分析,挖掘得到过程中所有包含死锁或缺乏同步错误的过程片段,具体步骤为:

步骤1-1,如图2为某一事件日志的部分展示由xes文件格式描述,该日志通过标签经过解析,其中trace标签代表事件序列,event代表事件。如图3(a)所示,该事件日志共读取14条事件序列;

步骤1-2,遍历图3(a)中的事件序列集合,如果当前遍历的事件序列不以终止事件te结尾,则将该事件序列置于挖掘死锁错误的事件序列集合l1中;如果当前遍历的事件序列中包含te但不以te结尾,或者包含连续两个或多个相同事件,则将该事件序列置于挖掘缺乏同步错误的事件序列集合l2中。为了扩大l2集合,以便更好的挖掘出缺乏同步错误片段,将l1投影到l2的事件集合上;

步骤1-3,分别遍历事件序列集合l1、l2,在每条事件序列中只保留每个事件的首次出现。最后获得用于挖掘死锁错误的事件序列集合l1,如图3(b)所示,以及用于挖掘缺乏同步错误的事件序列集合l2,如图3(c)所示。

步骤2,分别遍历事件序列集合l1和l2中的每条事件序列,挖掘所有事件之间的关系,包括直接先于关系、因果关系、并行关系、独立关系以及传递闭包关系,获得l1中所有事件间的关系,如图4(a),以及l2中所有事件间的关系,如图4(b)。

步骤3,对于图4(a)中的事件关系集合,根据启发式规则1,发现当遍历到事件t5时,t5→t6,t5→t7,且t6#t7,但不存在t′使得t6→t′,t7→t′;满足启发式规则1的条件,然后根据α算法挖掘得到过程中包含的死锁错误片段,如图5所示。

对于图4(b)中的事件关系集合,根据启发式规则2,发现当遍历到事件t2时,t2→t3,t2→t4,且t3||t4,但不存在t′使得t3→t′,t4→t′;满足启发式规则2的条件,然后根α算法挖掘得到过程中包含的所有缺乏同步错误片段,如图6所示。

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