崔卫华,王慧,杨波
(济南大学机械工程学院,济南 250022)
工作流模型(也称为过程模型[1],本文以下称过程模型)验证是工作流管理的一个重要组成部分,目的是在工作流设计时检验其正确性,在工作流过程实际实施之前探测其中可能存在的各种过程错误,从而降低工作过程运行时的停产、检查和修复的成本[2]。
过程模型验证包括语法检测和结构检测。语法检测较为简单,一般所说的过程模型结构检测主要指结构检测。从查阅文献来看,目前,已有的一些过程模型检测方法侧重对控制流的检测,如规约法则、状态空间、过程逻辑和基于语义的结构检测等方法[3]。控制流与数据流、资源流相结合的更复杂的结构检测问题还没有得到很好解决。文献[4]尝试以过程定义的目标为出发点,突破结构检测的局限,探讨基于 Petri网化简技术的语义检测方法,该方法在进行模型结构检测时较全面地考虑了控制、信息和资源,进行了控制流、数据流和资源三维的语义检测。但是该方法将控制、数据和资源三维信息进行合并,统一考虑,没有考虑到实际设计过程中三种“流”线不一致的情况。
复杂产品是客户需求复杂、产品组成复杂、产品技术复杂、制造过程复杂、项目管理复杂的一类产品[5]。复杂产品开发涉及多个技术领域,是一种基于约束的、多领域的、协同求解过程,因此必然采用多领域协同的开发方式。产品多领域协同设计具有层次性、多领域性、协同性、循环迭代性、阶段性、并行性以及约束和冲突的复杂性等特点[6]。
产品多领域协同设计过程更加复杂,其过程模型检测更为重要。本文针对 CCM_A过程模型的特点,提出基于语义推理的多元结构检测方法,对产品多领域协同设计过程模型进行结构检测。
CCM_A过程建模方法[6]是针对产品多领域协同设计过程特点,基于活动理论,参考活动网络图和协同工作建模方法(Multi-Conext Map)提出、建立的。CCM_A过程模型由活动、活动约束和过程逻辑节点等三类基本建模元素构成,如图 1所示。根据活动理论将活动图示表达为图 2,称为活动元模型,其图示表达充分反映了活动理论对活动的定义,也充分体现了产品多领域协同设计的约束性、协同性;活动 ID是该活动元在 CCM_A过程模型中的唯一标记,其编排原则是“父.子.孙…”的形式,体现了过程的多领域性、层次性;活动约束即活动的输入、输出分为三种“流”,即时序流、信息流、材料流;三“流”分离 (为简化流程,当三种“流”流向一致时,可进行适当合并),为不同流的仿真、管理提供了基础。由图 1、图 2可见,CCM_A过程模型描述信息全面,能够较全面地体现了产品多领域协同设计过程的层次性、阶段性、多领域性、协同性、约束性等特点,能够支持过程管理系统的构建,是一种适用于产品多领域协同设计过程建模的建模新方法。
过程模型检测主要分为两个部分:语法检测和结构检测。语法检测是检测模型是否遵守建模语言语法,语法检测主要是检测 CCM_A中各节点的连接是否符合节点的语义,即检测 CCM_A过程模型的如下方面:
(1)开始节点入度为 0,其它所有节点入度均不为0;结束节点出度为 0,其余节点的出度均不能为 0;
(2)逻辑节点,输入/出流的类型不变。如果其输入/出流为合流,为检测方便,此时将合流作为单一流处理,因此,对于分支型逻辑节点入度等于 1,出度大于1;聚合型逻辑节点入度大于 1,出度等于 1;
(3)活动元的入度和出度必须都等于 3(合流按“3”处理 );
(4)连接弧的起始端点和结束端点不能指向同一节点,亦即,模型不允许存在指向节点自身的回路。
2.2.1 结构冲突
由于过程的复杂性,致使过程模型中的过程逻辑节点可能具有多种逻辑组合,导致结构冲突的校验比较困难,特别是引入多领域过程协同概念及循环迭代结构后,更增加了过程结构中潜在的错误和模型校验的难度。
过程模型一般存在归纳为以下几类冲突[7]:
(1)死锁:由于聚合节点的同步条件无法满足而造成过程执行路径的中断,由于异或聚合节点的并行冲突,使得执行路径中断;
(2)活锁:由于环结构无法退出而导致无休止的循环;例如错误使用与分支循环引起的活锁;
(3)分支丢失:执行过程中,某分支丢失。
另外,CCM_A中时序、信息流是分离的,建模过程中如果某种“流”出现上述的死锁或活锁,都会导致过程不能继续执行。
2.2.2 基本结构语义及其多元语义推理表达
设 CCM_A过程模型中的节点的输入连接用InputXi表示,一个输入连接由 InputTi,InputDi,InputMi三个输入流组成,其中 i为输入连接的序号,i=1,2,…,n;输出连接用 OutputXj表示,一个输出连接由 OutputTj,OutputDj,OutputMj三个输出流组成,其中 j为输出连接的序号,j=1,2,…,m(其中 InputT/OutputT、InputD/OutputD、InputM/OutputM分别表示输入/输出的时序、信息和材料流)。具体定义如下:
输入流:InputXi=1,有相应的“流”到达节点 i;InputXi=0,无相应的“流”到达节点 i。
输出流:OutputXj=1,有相应的“流”输出节点 j;OutputXj=0,无相应的“流”输出节点 j。
除串行结构外,CCM_A模型的各种过程结构如表1所示,所以 CCM_A模型的各种过程结构的形式化语义推理表示如下:
表 1 CCM_A模型的各种过程结构(串行结构除外)
上述语义推理是针对“三流”同向情况,进行定义的;对于时序流、信息流和材料流异向情况,上述语义推理同样适用(见图 3a)。
产品多领域协同设计的复杂性,使得设计过程模型复杂化,一次全面检测整个过程模型难度较大。因此,针对产品多领域协同设计的领域性和层次性,本文确定对其过程模型进行分级结构检测。即,先进行领域内过程模型检测,然后联接领域过程模型进行领域间过程模型结构检测,从而由低到高完成产品多领域协同设计过程模型的整体结构检测。
利用语义推理方法,对各领域过程模型分别进行结构正确性检测。
根据产品多领域协同设计过程各领域设计任务的关联关系,可以确定不同领域间相关过程的起始和终止活动一般是并行进行,因此,根据领域设计的关联关系,确定领域过程模型之间的相关活动节点,并适当增设“与逻辑节点”,构建产品多领域协同设计过程模型;然后利用语义推理方法,以领域间的“与逻辑节点”为终点,检测各领域过程是否为通路,如果为通路,则不存在冲突;否则存在结构冲突,进行相应的修正。
图 3 复杂产品设计过程模型结构检测实例
下面考察一个产品多领域协同设计过程模型,这里仅以其中两个相关设计领域为例。图 3a为简化的分领域 CCM_A过程模型的图示表达(注:此处产品设计是基于网络的设计,设计者之间并不传递实物材料,如纸质图纸,所以,在过程模型中将信息流和材料流合并为信息流;另外,为准确判断“流”类型,在模型中增设了分流/合流器)。首先,基于语义推理分别检测领域 1和领域 2过程模型,发现领域 2过程模型在“与聚合”节点处发生死锁,根据设计实际情况修正模型,如图 3b;根据领域间的关系,在关联活动节点处适当设置“与逻辑节点”,将领域过程模型联接为完整的产品设计过程模型,并进行过程模型结构检测,如发现问题,则根据领域设计过程规划进行领域过程模型修正。完成产品多领域协同设计过程模型结构检测。当然,由于存在分支逻辑结构,使得过程模型存在多条支路,所以在进行过程模型结构检测时应该对所有支路均进行检测,只有当所有支路都不存在上述结构错误时,才能确定过程模型正确。
分析产品多领域协同设计过程模型结构检测结果,可得如下过程模型构建规则:
规则一:按照过程模型的层次嵌套关系,对应的逻辑节点尽可能成对出现。该规则的确定避免了分支丢失和死锁的产生。同步与逻辑节点和异或(或)逻辑节点相对应,则会发生分支丢失;异或(或)逻辑节点和同步节点相对应,则会产生结构死锁(如图 3a所示)。
规则二:若 CCM_A中存在环,则它必须是一个迭代结构,且迭代结构的入口点和出口点分别为异或聚合和异或分支过程逻辑节点。这条规则,消除了与节点引入活锁的可能性以及流程多次终止现象。
另外,与层次建模方法相对应,CCM_A中的活动块节点和子过程节点代表实际的子过程模型,在父过程模型中以节点形式参与校验,它们的过程模型结构正确性可以单独进行校验;而对于如图 4a所示的耦合紧密的迭代结构,可以直接用 CCM_A的一个协同活动元来代替,避免过程死锁,同时简化了过程模型,使流程更为清晰,如图 4b所示。
图 4 耦合结构简化
结构检验规则的制订,可以指导过程建模,帮助检验过程模型结构的正确性。但是,这里需要强调的是,上述结构检测规则是从过程模型的总体结构上帮助把握其正确性,它必须同基于语义推理的结构检测方法相结合,才能完成过程模型的结构检测工作。
本文结合产品多领域协同设计过程特点,针对CCM_A过程模型层次建模、“三流”分离的特点,提出基于语义推理的产品多领域协同设计过程模型多元结构检测方法,该方法根据产品多领域协同设计过程模型的层次性,由低到高分级进行,从而消除过程模型的结构冲突,为产品多领域协同设计及设计过程管理的顺利、有效进行打下基础;并通过分析过程模型结构检测实例,总结过程模型构建时应遵循的规则,为指导构建结构正确的过程模型提供依据。
[1]范玉顺,王刚,高展.企业建模理论与方法学导论[M].北京:清华大学出版社,2001.
[2]HENRYH B,ZHAO L.Process logic for verifying the correctness ofbusiness processmodels[A].Proceeclings of the 2004 International Con ference on Information Systems(2004 ICIS)[C].Washington,D.C.,USA,2004:91-100.
[3]凌鸿,周江波,胥正川.基于语义推理的工作流结构验证方法[J].计算机集成制造系统,2006,12(6):893-899.
[4]周建涛,史美林,叶新铭.一种基于Petri网化简的工作流过程语义验证方法[J].软件学报,2005,16(7):1242-1251.
[5]柴旭东,李伯虎.产品多领域协同协同仿真平台的研究与实现[J].计算机集成制造系统,2002,8(7):580-584.
[6]崔卫华.产品多领域协同设计过程的 CCM_A建模技术研究[D].武汉:武汉理工大学,2007.
[7]李伟刚.产品多领域协同协同开发支撑环境的关键技术研究[D].西安:西北工业大学,2003.