现有的研究方法只是关注检测和解决过程模型之间的差异[6-8],并且多数都需要修改日志 [9]。而在没有可用的修改日志的情形下,很少有研究差异的检测和解决。其中,Küster等提出了基于对应的概念(Correspondences)[10]和单输入单输出分解技术(Single Entry Single Export, SESE)[11]检测和解决过程模型之间差异的方法[5, 12]。本文以BPEL (Business Process Execution Language)过程[1]为例,研究可执行过程之间的差异。与过程模型相比,BPEL过程不仅包含过程模型的控制流信息,而且还包含了很多数据流信息。此外,它还具有一些独有的特点,比如活动间存在异步调用依赖关系、并发结构包含link等,这就导致那些研究过程模型之间差异的方法,在BPEL过程中可能不再适用。
于是,本文提出了检测、展示和解决BPEL过程之间差异的方法。该方法在没有可用修改日志的情形下,应用BPEL程序依赖图和对应关系检测差异。根据对BPEL过程的块结构分解,我们能够将每个差异和解决该差异的复合修改操作联系起来,并建立了一个层次性的修改日志。经过验证,我们的方法能很好地够检测和解决BPEL过程之间差异,并且满足用户友好性的要求,为BPEL过程变种的管理建立了一个坚实的基础。
1.2论文主要工作
本文的主要工作分为四个方面:
(1)我们提出了基于BPEL程序依赖图和对应关系检测和解决BPEL过程之间的差异,该方法无需修改日志,不仅能检测和解决控制流层面的差异,也能检测和解决数据流层面的差异;
(2)我们将活动的前后顺序关系和块结构分解应用到BPEL程序依赖图中,使其不仅能描述BPEL过程中活动之间的行为关系,也能描述BPEL过程的控制流信息;
(3)基于提出的BPEL过程结构图和复合修改操作之间的依赖关系,我们的方法能够建立一个层次性的修改日志,具有良好的可视化效果和可用性;
(4)实现了可执行过程之间差异的检测和解决的原型工具。
1.3论文的组织结构
本文的结构如下:第一和第二部分分别阐述了相关工作和背景。第三部分介绍了BPEL程序依赖图和对应关系的概念。然后,第四部分研究了可执行过程之间差异的检测和解决的问题,并建立了层次性的修改日志。第四和第五部分别给出了应用和讨论。最后,我们进行了总结。
第二章 背景
在业务驱动开发中, BPEL过程变种的管理需要应用合适的修改操作将不同变种整合到一个标准的BPEL过程。而将一个BPEL过程P1经过一系列的修改操作转变成过程P2是我们最常见的一个情景。图2.1为两个BPEL过程P1和P2的控制流程图[12, 13],其中,过程P2是通过修改P1而获得。该案例来自于Oracle 公司BPEL过程管理库,并经过了一些合适的调整,描述的是旅行代理服务。由于它具备一般 BPEL 过程的特点,因此具有一定的代表性,许多论文也都采用了此类案例阐明问题[18, 30]。我们将在随后章节中借助此案例说明应用本文的方法检测和解决BPEL过程之间差异的可行性。首先,我们介绍案例的应用背景:该旅行代理服务根据客户提交的宾馆和机票订购信息,调用宾馆预定服务,并选择合适的机票预定服务和托运服务,最后将调用结果反馈给客户。在每个过程的活动名称都是唯一的前提下,我们假定过程P2是业务人员通过修改过程P1中的一些元素而获得。于是,我们对比BPEL过程P1和P2,发现了以下一些差异(这里只展示了其中一部分差异):
─ 过程P1中的并发结构活动f (Flow#1)与活动d (HotelBooking)调换了执行顺序;
─ 删除了过程P1中的顺序结构活动sequence1和sequence2;
─ 在过程P1中添加了选择结构活动p (If#2)和其子活动q (TravelCancel)。 可执行过程之间差异的检测和解决(2):http://www.751com.cn/jisuanji/lunwen_10371.html