李 朋, 朱山川, 朱婷婷
(滁州职业技术学院,安徽 滁州 239000)
对于流程模型的一致性问题的研究主要有:Martens在2005年提出通过对比所提取的具体执行的模型和抽象模型间相关信息所生成的对应通信图自动管理一致性的方法[4];文献[5]给出了一个最优一致性关系的框架用以解决B2B流程集成场景时模型间交互的行为兼容性问题;Egyed 在2008提出了在UML中使用模型分析器监视模型的各个部分来识别和解决不一致问题,但是该方法是半自动的[6];此后,2010年Silva等人在文献[6]的基础上,开发了一种关于模型构建动作序列的逻辑规则来识别模型中的不一致并且通过深度优先搜索算法寻找最佳处理不一致方案的自动方法[7];Weidlich 等人在2011年提出了基于模型运行期间的迹等价和所捕获到的行为轮廓关系计算用以模型间的一致性度的测量,该方法可以计算出两个模型之间的相似程度[8];文献[9]提出了一个基于节点名称类型的算法用于建立不同抽象层次模型间的节点之间的对应关系管理一致性;文献[10]将基于迹等价和行为等价进行了实验对比分析,得出基于行为等价更适合作为一致性的标准,并提出了行为一致性的概念;Grossmann等人于2015年在文献[11]的基础上提出带标签Petri网的基于规则设计的方法来检验不同抽象视图模型的一致性问题[12]。目前业务流程模型研究现状大多考虑的都是模型的控制流结构方面,很少涉及数据流信息。因此,本文依据流程模型的变迁和数据之间的依赖关系,提出基于数据规则约束的抽象模型一致性检验分析,将业务流程转换为基于Petri网的工作流系统,目的是实现控制流和数据流两个方面的一致性检验。所提出的方法充分考虑了模型的数据流和控制流两个方面,具有一定的可行性。
定义1[3](工作流Petri网)一个网N=(S,T;F,i,o)称为工作流Petri网,当且仅当满足条件:
(1)该Petri网有唯一的源库所i:·i=φ.
(2)该Petri网有唯一的终止库所o:o·=φ.
(3)该Petri网上的每一个节点都属于i到o的一条路径上,即Petri网是强连通的。
定义2(带数据约束的Petri网)一个网Σ=(S,T;D,F,M0,BP;DC)称为数据流Petri网,当且仅当满足条件:
(1)S为库所集:S≠φ;
(2)T为变迁集:T≠φ;
(3)M0是初始标识,F是控制流关系,BP是变迁间的行为轮廓关系;
(4)D为数据集:D={d1,d2,…,dm};
(5)DC为数据流的数据连接集:DC={dc1,dc2,…,dcm}且dc=(d,t,INP(t)/OUT(t),write/read),其中d∈D,t∈T.INP(t)为一个输入参数,OUT(t)为一个输出参数;write为输出数据信息的函数,即当变迁t发生时输出数据;read为输入数据信息的函数,即当变迁t发生时输入数据。
本文研究抽象模型和初始模型间的一致性问题,因此下面给出初始模型和抽象模型间的一个映射函数。
h:S∪T∪D→S′∪T′∪D′∪{ξ}(h是完全的和满射)
(1)∀s∈S⟹h(s)∈S′∪{ξ};
(2)∀t∈T⟹h(t)∈T′∪{ξ};
(3)∀d∈D⟹h(d)∈D′∪{ξ};
(4)s∈S,|·s|=0∧h(s)=s′⟹|·s′|=0;
(5)h(n)∈S∪T∪D⟺h(n)=n;
(6)h(n1)=n′∧h(n2)=n′⟹n1=n2;
其中性质(1)保证Σ中的库所被映射为Σ′中的一个库所或者被删除;性质(2)保证Σ中的变迁被映射为Σ′中的一个变迁或者被删除;性质(3)保证Σ中的数据被映射为Σ′中的一个数据或者被删除;性质(4)保证Σ中的源库所被映射为Σ′中的源库所;性质(5)保证被映射到Σ′中的一个节点(库所、变迁和数据)如果属于Σ中的节点,则在抽象过程中该节点未发生变化;性质(6)保证Σ中有且仅有唯一的一个节点与Σ′中的节点相对应。模型的抽象涉及三个基本操作:节点不变、节点聚合和节点删除。当节点保持不变时,有h(n)=n;当节点n1,n2,n3被聚合成一个节点n′时,有h({n1,n2,n3})=n′;当节点被删除时,有h(n)=ξ。
下面给出上述定义的具体例子,如图1所示的带数据流的Petri业务流程模型,其中d1,d2为模型中的数据元素,实线箭头代表的是变迁之间的控制流关系,虚线箭头代表了变迁之间的数据连接。1)模型的控制流结构:由BP定义可知,变迁t2,t5为并发序关系,记为t2‖t5;t3,t4为排他序关系,记为t3+t4;t1,t7为严格序,记为t1→t7;2)模型的数据流结构:如变迁t1发生要将数据d1发送给变迁t2,根据定义3可知,此时变迁t1的数据连接为dc1=(d1,t1,OUT(t1),write)。而当变迁t1发生后通过库所s1导致变迁t2发生,此时数据d1被变迁t2连接,因此变迁t2的数据连接为dc2=(d1,t2,INP(t2),read)。
现在对图1的模型进行抽象化简,现假设给定一个指定的抽象条件,需要将模型中的变迁t3,t4进行聚合操作,变迁t2进行删除操作,其他的保持不变,则由分析可知,t2接收来自t1发送的数据信息d1,现t2进行删除操作,因此,d1也将被删除,则有h({t3,t4})=X,h(t2)=ξ,h(d1)=ξ,h(ti)=ti(i≠2,3,4),h(d2)=d2,h(sj)=sj(j≠2,3),抽象后的模型Σ′如图2所示。
图1 带数据流的Petri业务流程模型Σ
图2 图1的抽象模型Σ'
根据不同利益相关者指定的抽象条件,将初始模型进行不同的抽象化简,则需要对抽象模型和初始模型进行一致性检验分析,检查抽象模型的一致性和非一致性。下面给出具体的基于控制流和数据流的抽象模型的一致性检验规则。
现有关于一致性问题的研究主要针对流程模型的控制流结构,本文延伸了先前的工作,不仅包括控制流还包括数据流方面,下面先给出抽象模型的控制流的一致性检验规则,其次再给出数据流的一致性检验规则。
(1)规则2.1.1 变迁不变的前集和后继满足:
a)∀s1∈S,t1∈T:
h(s1)=s1∧h(t1)=t1∧(s1,t1)∈F′⟹(s1,t1)∈F
b)∀s1∈S,t1∈T:
h(s1)=s1∧h(t1)=t1∧(t1,s1)∈F′⟹(t1,s1)∈F
规则2.1.1针对的是抽象操作前后不变的变迁前集和后继满足情况,该规则保证了抽象模型视图中未发生改变的流关系需要被反映在初始模型中对应的流关系。
(2)规则2.1.2 变迁删除的前集和后继满足:
a) ∀s1∈S,t1∈T:
h(t1)=ξ∧(s1,t1)∈F⟹h(s1)=
ξ∧(h(s1),h(t1))=ξ
b)∀s1∈S,t1∈T:
h(t1)=ξ∧(t1,s1)∈F⟹h(s1)=
ξ∧(h(t1),h(s1))=ξ
规则2.1.2针对的是抽象操作前后被删除变迁的前集和后继满足情况,该规则保证了流程模型在抽象过程中,如果一个变迁被删除操作,则抽象模型视图中该变迁的前后库所以及对应的流关系都应被删除。
图3描述了一个初始模型a给定将变迁t2删除操作,根据规则2.1.2需要同时将t2的前后库所s1,s2都删除,抽象后的视图如b所示。
图3 规则2.1.2案例模型
(3)规则2.1.3 变迁聚合的前集和后继满足:
b)∀t1,t2,…,tm∈T,s1∈S,s1′,s2′∈S′,t′∈T′:
规则2.1.1针对抽象操作前后被聚合变迁的前集和后继满足情况,该规则验证了在抽象模型视图中的行为关系要被正确反映在初始模型中,该规则约束保证了初始模型和抽象模型视图之间流关系彼此的一致性。
图4描述了一个初始模型a给定将变迁t1,t2,t3聚合操作,由于变迁t2有一个前集库所s5且该库所不包含在被聚合操作里,根据规则2.1.3,s5与被聚合后的变迁的行为关系应该被保留,抽象后的视图如b所示。
图4 规则2.1.3案例模型
在2.1部分已经介绍了控制流的一致性检验标准,现在来介绍对应的数据流的一致性检验标准。本文定义了两种类型关于流程模型数据流的抽象操作,即概括(generalization)和删除(deletion)。其中,概括是指对于那些在抽象过程中作为数据输入对象的且不发生改变的变迁,其数据在抽象过程中保持不变;对于那些在抽象过程中作为数据输入对象且被认为是不重要的被删除的变迁,或者作为数据输入和输出的变迁包含在一组被抽象的变迁序列中,则其数据在抽象过程中被删除。
(1)规则2.2.1 数据不变时满足
a) ∀t1,t2∈T,d∈D:
h(t1)=t1∧h(t2)=t2∧t1→dt2⟹h(d)=d
b1) ∀t′,ti′∈T′,t1,…,tm∈T,d∈D:
⟹∃ti∈TR(t′):h(ti)=ti′∧ti→dtj(tj∈R(t′))
b2) ∀t′,ti′∈T′,t1,…,tm∈T,d∈D:
h({t1,…,tm})=t′∧h(d)=d∧t′→dti′
⟹∃ti∈TR(t′):h(ti)=ti′∧tj→dti(tj∈R(t′))
c) ∀t1,t2∈T,d∈D:
h(d)=d∧t1→dt2∧h(t2)≠ξ⟹h(t1)≠ξ
规则2.2.1针对,规则a)检查了如果抽象过程中初始模型中的两个变迁不发生变化,则两个变迁之间的数据连接也应该被放映到抽象模型视图中对应变迁中;b1),b2)检查了抽象模型视图中被聚合后变迁的数据输入和输出都应该被反映在初始模型中该变迁的域所包含的组件中;c)检查了作为数据输入对象的变迁如果在抽象过程中不被删除,则作为数据输出的变迁在抽象过程中也应该被保留,规则2.2.1保证了抽象过程中初始模型和抽象模型视图之间数据不变的一致性。
图5 规则2.2.1案例模型
图6 规则2.2.2案例模型
图5描述了一个初始模型a给定将变迁t1,t2,t3聚合操作,由于变迁t2有一个输入数据d且d的输出变迁t4不包含在被聚合操作里,根据规则3.2.1,数据d应该被保留,抽象后的视图如b所示。
(2)规则2.2.2 数据被删除时满足
a) ∀t1,t2∈T,d∈D:t1→dt2∧h(t2)=
ξ∧(⎤∃t3∈T:t1→dt3∧h(t3)≠ξ)⟹h(d)=ξ
b) ∀t1,t2,…,tm∈T,d∈D,t′∈T:
h({t1,…,tm})=t′∧ti→dtj⟹h(d)=
ξ(ti,tj∈R(t′))
规则2.2.2针对的是抽象操作前后数据被删除时的满足情况,规则a)检查了如果在抽象过程中,某个数据被删除当且仅当该数据的输入对象被删除且没有另一个变迁作为此数据的输入对象时,则在抽象视图中该数据被删除;规则b)检查了包含在一组被抽象变迁序列中的变迁之间的数据输入和输出应该被删除。
图6描述了一个初始模型a给定将变迁t1,t2,t3聚合操作,由于变迁t1,t2之间有一个输入数据d且d包含在被聚合操作的域中,根据规则3.2.1,数据d应该被隐藏(删除),抽象后的视图如b所示。
本文基于Petri网的工作流系统,提出基于控制流和数据流两个方面的抽象模型一致性检验规则,并且通过实例验证了该方法的有效性和可行性,未来可以进一步针对大型的较复杂的业务流程系统的抽象检验规则进行探究。