当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于令牌的支持并发侧面编程的BPEL扩展实现方法技术

技术编号:11306069 阅读:72 留言:0更新日期:2015-04-16 01:00
本发明专利技术公开了一种基于令牌的支持并发侧面编程的BPEL扩展实现方法,业务流程执行语言BPEL是一个面向过程的支持Web服务集成的编程语言,它有很多诸如并发分支(flow),控制连接(link),事件处理(event handler),异步调用等支持并发编程的特性。然而,目前大多数面向侧面编程(AOP)的BPEL扩展方法在侧面定义中缺乏对并发的支持,导致涉及并发控制的侧面不能方便而简洁的表达。本发明专利技术专利申请提出了一种基于令牌的支持并发侧面编程的BPEL的扩展实现方法,主要包括:1)一个基于令牌的支持并发的侧面编程语言模型,侧面与原程序并发执行,通过获取和释放令牌完成同步;2)一个基于Petri网的侧面定义合法性验证算法;3)一个基于ODE的支持侧面动态编织的BPEL执行引擎。

【技术实现步骤摘要】
一种基于令牌的支持并发侧面编程的BPEL扩展实现方法
本专利技术涉及对BPEL面向侧面编程的扩展实现,特别是涉及侧面与BPEL原工作流的并发与协作能力,为此提出了一种新的面向侧面编程语言模型,并扩展了ODE引擎加以实现。
技术介绍
BPEL(业务流程执行语言)是由OASIS提出的Web服务集成的标准执行语言。是一个面向过程的支持Web服务集成的编程语言,该语言已经被Oracle,IBM,Apache等广泛支持以搭建面向服务的体系结构(SOA)。一方面与其它面向过程(POP)和面向对象(OOP)的编程语言类似,BPEL中诸如调试,日志,安全,商业规则等非功能性需求不能很好地从主要功能分离出来。面向侧面软件开发(AOSD)是众所周知的解决方法。另一方面BPEL语言中诸多如并发分支(flow),控制连接(link),事件处理(eventhandler),异步调用(asynchronousinvoke)等支持并发编程的特性,要求其面向侧面的扩展需要有相应地并发的支持,从而简洁有效的表达涉及并发控制的侧面。目前面向侧面编程语言模型主要包括pointcut-advice模型,历史敏感的侧面模型(EAOP),支持并发的侧面模型(CEAOP),区间侧面模型(regionaspect)。所述pointcut-advice模型允许侧面在一组通过逻辑关系,通配,正则表达式选出来的原程序中的操作(pointcut)之前、之后执行,或者取代原来操作的执行。该模型为传统的AOP语言模型被广泛应用。所述历史敏感的侧面模型考虑历史执行信息,将操作抽象为事件,允许侧面在一系列事件即一个执行轨迹之后执行。所述支持并发的侧面模型是历史敏感的侧面模型的提升,它修改了编织策略,允许侧面从原程序中分离出来与原程序并发执行。所述区间侧面模型提出Regioncut机制将两行以上的代码包装在一起形成一个区间,从而可以选择一段连续的代码作为插入点。目前BPEL面向侧面的扩展主要有AO4BPEL和Padus两种。AO4BPEL采用动态编织方式将传统的pointcut-advice模型应用于BPEL语言上,侧面能够在BPEL的一个活动(activity)之前、之后执行,或者取代原来活动的执行。Padus采用静态编织的方式将历史敏感的侧面模型应用于BPEL语言上,允许在原工作流中添加任意的合法BPEL元素。纵观上述面向侧面的语言模型以及BPEL面向侧面的扩展,均不能完全满足BPEL侧面与原程序的并发协同执行需求。所述并发协同执行需求包括三点:1、侧面应当能够与源程序和其他侧面并发执行。2、侧面能够以开发者的意愿在原程序中的某一点之前与原程序合并。3、侧面能够和源程序协同合作。为此,我们提出了一种基于令牌的支持并发侧面编程的BPEL扩展实现方法。
技术实现思路
专利技术目的:BPEL面向侧面编程(AOP)的扩展缺乏对并发的支持,这导致涉及并发控制的侧面不能方便简洁的表达出来。本专利技术基于此问题提出了一种基于令牌的支持并发侧面编程的BPEL扩展实现方法。技术方案:一种基于令牌的支持并发侧面编程的BPEL扩展实现方法,包括如下部分:1)一种基于令牌的支持并发的侧面编程语言模型;2)一个基于Petri网的侧面定义合法性验证算法;3)一个基于ODE的支持侧面动态编织的BPEL执行引擎。基于令牌的支持并发的侧面编程语言模型,区别于传统AOP语言模型的以操作(方法调用,对类成员的访问)作为插入点(joinpoint)定义的最小单元。所述模型将操作的前置条件和后置条件作为插入点定义的最小单元。用一个四元组(Pre,Post,T,N)来定义一个侧面。其中Pre为前置条件,Post为后置条件,T为advice是BPEL中的一组活动,N为skip或proceed表明是否要执行原工作流中相关的活动。T与BPEL工作流并发执行,通过获取前置条件令牌和释放后置条件令牌完成同步。前置条件规定了T开始运行的时机,后置条件则规定了T合并到原程序的条件。将工作流建模为Petri网,当原工作流Pre中所有的库所都曾经有过令牌,T开始运行;Post后的变迁需要T执行结束释放额外的令牌才能继续执行。该语言模型的语义由Petri网变迁的偏序关系形式化定义。从而达到支持BPEL面向侧面的扩展并发和协作需求。所述语言模型中不是任意的前置条件和后置条件的组合都是合法的。侧面的协同合作不能与原程序中的依赖关系产生冲突。为此侧面的定义需要满足相关的约束规则,所述约束规则主要有四个,所述验证算法根据这四个约束设计和实现。所述约束规则包括:规则1:一个侧面CTA=(Pre,Post,T,proceed/skip)涉及的活动不能穿梭于正常流程,事件处理,出错处理和补偿处理之间。规则2:一个侧面CTA=(Pre,Post,T,proceed/skip)涉及的活动不能穿梭于循环内外。规则3:一个侧面CTA=(Pre,Post,T,proceed/skip)不能与原程序的依赖关系产生冲突。规则4:一个侧面CTA=(Pre,Post,T,skip),前置条件Pre与后置条件Post代表的必须是一个区间。所述基于ODE的支持侧面动态编织的BPEL执行引擎对现用的BPEL执行引擎ODE进行扩展,该引擎引入Aspect编译器对侧面进行编译。引入Aspect运行环境,控制原程序与侧面的执行。从而实现侧面与原程序的协同合作。所述编译器编译输入为侧面文件(.aspect),及相关WSDL文件,所述WSDL文件为侧面中所调用Web服务描述文件。编辑器首先根据输入验证侧面定义以及侧面内BPEL活动定义是否合法。如果合法则将侧面文件编译为OAspectJava对象存取。OAspect包含相应的OAdivce,OPrecondition,OPostcondition,skip等对象和属性。OAdvice继承了ODE引擎中OProcess描述侧面活动。引入Aspect运行环境,所述Aspect运行环境包含了aspect部署模块,工作流状态监控模块,Aspect同步运行管理模块。所述aspect部署模块用于部署侧面;所述工作流状态监控模块通过ODE提供的BPEL运行时事件监听器监控BPEL工作流实例OProcess的运行状态;所述Aspect同步运行管理模块在侧面OAspect前置条件满足时阻塞侧面后置条件相对应活动的执行,并执行侧面相应活动,在侧面活动执行完成后,取消阻塞之前阻塞活动,使其继续执行。若侧面OAspect的skip属性为true(默认为false),则需要跳过执行在前置条件和后置条件之间的活动,从而实现侧面与原程序的协同合作。有益效果:与现有技术相比,本专利技术提供的基于令牌的支持并发侧面编程的BPEL扩展实现方法,支持BPEL面向侧面编程的侧面与原工作流的并发和协作能力。附图说明图1为BPEL工作流中基本活动的Petri网语义;图2为BPEL工作流中结构化活动的Petri网语义;图3为基于偏序关系的支持并发的面向侧面编程语言模型的Petri网语义;图4为在BPEL工作流中加入典型的侧面的Petri网语义;图5为基于Petri网的侧面定义合法性验证算法;图6为基于ODE的支持侧面动态编织的BPEL执行引擎的框架;图7为旅行代理服务使用案本文档来自技高网
...
一种基于令牌的支持并发侧面编程的BPEL扩展实现方法

【技术保护点】
一种基于令牌的支持并发侧面编程的BPEL扩展实现方法,其特征在于,主要包括如下几个部分:1)一种基于令牌的支持并发的侧面编程语言模型;2)一个基于Petri网的侧面定义合法性验证算法;3)一个基于ODE的支持侧面动态编织的BPEL执行引擎;其中,所述基于令牌的支持并发的侧面编程语言模型,将操作的前置条件和后置条件作为插入点定义的最小单元;用一个四元组(Pre,Post,T,N)来定义一个侧面;其中Pre为前置条件,Post为后置条件,T为advice是BPEL中的一组活动,N为skip或proceed表明是否要执行原工作流中相关的活动;所述基于Petri网的侧面定义合法性验证算法通过四个约束规则实现;所述基于ODE的支持侧面动态编织的BPEL执行引擎,对现用的BPEL执行引擎ODE的扩展,该引擎引入Aspect编译器对侧面进行编译;引入Aspect运行环境,控制原工作流与侧面的执行;从而实现侧面于原程序的协同合作。

【技术特征摘要】
1.一种基于令牌的支持并发侧面编程的BPEL扩展实现方法,其特征在于,包括如下几个步骤:1)定义基于令牌的支持并发的侧面编程语言模型;2)执行基于Petri网的侧面定义合法性验证算法;3)通过基于ODE的支持侧面动态编织的BPEL执行引擎实现对现用的BPEL执行引擎ODE的扩展;其中,所述基于令牌的支持并发的侧面编程语言模型,将操作的前置条件和后置条件作为插入点定义的最小单元;用一个四元组(Pre,Post,T,N)来定义一个侧面;其中Pre为前置条件,Post为后置条件,T为advice是BPEL中的一组活动,N为skip或proceed表明是否要执行原工作流中相关的活动;所述基于Petri网的侧面定义合法性验证算法通过四个约束规则实现;所述基于ODE的支持侧面动态编织的BPEL执行引擎,对现用的BPEL执行引擎ODE进行扩展,该基于ODE的支持侧面动态编织的BPEL执行引擎引入Aspect编译器对侧面进行编译;引入Aspect运行环境,控制原工作流与侧面的执行;从而实现侧面与原程序的协同合作。2.如权利要求1所述的基于令牌的支持并发侧面编程的BPEL扩展实现方法,其特征在于,所述基于令牌的支持并发的侧面编程语言模型中,T与BPEL工作流并发执行,通过获取前置条件令牌和释放后置条件令牌完成同步;前置条件规定了活动T的开始运行时机,后置条件则规定了活动T合并到原程序的条件;将工作流建模为Petri网,当原工作流Pre中所有的库所都曾经有过令牌,T开始运行;Post后的变迁需要T执行结束释放额外的令牌才能继续执行;该语言模型的语义由Petri网变迁的偏序关系形式化定义;从而达到支持BPEL面向侧面的扩展并发和协作需求。3.如权利要求1所述的基于...

【专利技术属性】
技术研发人员:吕建徐锋袁明珠
申请(专利权)人:南京大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1