一种网络服务交互行为形式化建模和死锁定位方法

文档序号:6400983阅读:181来源:国知局
专利名称:一种网络服务交互行为形式化建模和死锁定位方法
技术领域
本发明涉及一种形式化建模的方法,属于数据挖掘和网络服务分析领域,特别是涉及一种网络服务交互过程中基于H演算的建模及死锁定位方法,主要解决网络服务交互行为的形式化表示问题。
背景技术
网络服务是一个由URL标识的软件系统,其接口和绑定都可以通过XML来定义、描述,并且网络服务是可以被发现的。单个网络服务时通过支持基于网络的协议和使用基于XML的消息来达到与其他网络服务或其他软件应用直接交互的目的。从上个世纪七、八十年代起,研究人员就一直在研究如何对系统进行正确建模,从而获得好的系统设计。本人对国内外网络服务交互行为建模方法进行了大量的研究,发现大多数研究集中于三个方面,分别是Petri网建模、自动机理论建模和进程代数建模[1]。Petri网是由物理学家卡尔.A.佩特里提出的,Petri网的一个重要的贡献,就是Petri网里面不存在所谓的“全局时间”的概念,它能够很容易地表达狭义相对论的观点。Petri网用直观的图形和丰富的形式化语义来表示网络服务的交互行为,可以自然的描述一些系统特性、网络服务的交互行为,而且可以进行验证。通过利用petri网可以对BPEL4WS进行建模,可以通过库和变迁来表示服务,可以采用着色petri网的方法进行映射,可以直接将网络服务组合的各种操作符映射到petri网结构,然后采用合适的工具对建模后的模型进行验证[2]。但是对于不同的网络服务的提供者,语义的定义以及图形的表述各不相同,很难统一,也就是说我们还要浪费人力物力去理解其他网络服务提供者提供的服务的功能,从而进行整合。自动机理论是将离散数学系统的构造、作用和关系作为研究对象的数学理论。自动机可分为有限自动机、后进先出自动机、线性有界自动机、图灵机等几种[3]。它们对语言的识别能力各不相同。把自动机理论应用到网络服务组合中,也就是把单个的网络服务按照一定的规则表示出来,然后通过自动机进行筛选和判断。通过利用自动机理论,我们可以快速而准确的对网络服务组合的正确性进行判断,比如:FuX.,BultanT.,SuJ提出的囊括guardedautomata、promela语义、SPIN模型检测器的工具,FuX.提出的卫式自动机,AalstW.,HofstedeA.,KiepuszewskiB.等人提出的基于扩展有限自动机的方法[4],然而,上述成果都没有给出一整套利用自动机理论对网络服务交互行为进行建模的规则,这样建模后的模型通常存在状态空间爆炸的问题。软件的形式化方法就是在这个背景下产生的,C.A.R.Hoare的CSP和R.Milner的CCS等理论都是其中的重要代表[5]。研究人员尝试将程序建模为代数结构,从而用代数的方法进行推理,进而证明它们的正确性。形式化的描述就是用形式化的语言(具有严格的语法语义定义的语言)作为描述工具,研究各种子系统的性质。形式化的软件开发,就是用形式化的语言来描述软件需求和特征,并且通过推理论证来保证最终的软件产品满足这些需求和具备这些特征。进程代数是一类使用代数方法来研究通信并发系统的理论的泛称[6],进程间通过通信来实现彼此的联系以及发生相互作用,进程代数包括通信系统演算(CCS)、通信顺序进程(CSP)和π演算[7]。利用CCS和CSP对网络服务的交互行为进行建模都是将网络服务交互行为流程描述语言转换成相应的进程代数进行描述,然后利用已有的工具进行验证,但是这两种方式只能对网络服务进行验证,并不能对网络交互行为的流程进行正确性的验证。网络服务不断受到各界人士的关注,网络服务交互在互联网区域中占据主要地位将是大势所趋。目前存在的主要问题是对网络服务交互行为正确的自动建模,也就是说强调两点:一是自动建模,从而减少手动建模的人力浪费,并且降低因人为判断错误造成的错误的建模;二是正确的建 模,这一点也相当重要,错误的建模不仅浪费时间和资金,还有可能会造成严重的损失。[I]W.Kongdenfhaj R.Saint-Paulj B.Benatallahj F.Casat1.AnAspect-orientedFramework for Service Adaptation.1nternational Conference on Service-OrientedComputing, 2006:15-26.
[2]Milanovic Nj MalekM.Current solutions for Web Service composition.[J].1EEE Internet Computing(S1089-7801).IEEE,2004,8(6):51-59.
-[3] Chen Zj Wang J,Dong Wj Qi Z.An interface model for service-orientedsoftware architecture.Joural of Software, 2006,17(6):1459-1469.
[4] H.Yang,Zhao X,Qiu Zj PuG.A formal model for web service choreographydescription language (WS-CDL).1n:FeigEj ed.Proc.0f the IEEE Int’ IConf.0nWebServicesj2006.
[5] Mart enA.0n compatibility of Web services.Petri NetNewsletter, 2003,65(2):12-20.
[6]Hamadi R.,Benatallah B.APetri Net-based Model for Web ServiceComposition[A].Proceedings of the Fourteenth Austarlasian database conferenceon Database technologies[C].AdelaideAustraliaj 2003:191-200[7]Fu X.,Bultan T.,Su J..WSAT:A Tool for Formal Analysis of Webservice [A].Proceedings of the 16th International.Conference on Computer AidedVerification[C].1EEEComputer Society Press,2004:510-51
发明内容
技术问题:本发明的目的是提供一种网络服务交互行为形式化建模和死锁定位方法。针对各种现有的形式化语言描述的网络服务之间的交互,利用转换规则,将形式化语言的描述转换为进程代数的描述。设计基于η演算的其他形式化语言的转换规则。并在此基础上构建HXML工具,用于对由进程代数描述的网络服务交互行为进行自动建模,自动定位流程中异常发生的位置以达到自动发现服务流程中异常的目的。技术方案:随着信息时代的不断发展,单个的网络服务已无法满足用户的需求,于是就需要若干个网络服务之间进行交互组合,即把部署于互联网上由不同网络服务提供者提供的网络服务根据特定的需要组合成一个新的网络服务,使得整合后的网络服务具有更为强大的功能,从而满足用户的需要。然而网络服务系统本身的并行性、分布性和高度动态性,仅仅依靠开发者的直观认识,将越来越难以把握所开发系统的行为,也就是说在网络服务进行交互的过程中可能会有死锁现象的出现,从而影响整个网络服务的质量,因此,在整合后的网络服务实施前对网络服务组合进行正确性验证是十分必要的。本发明提出的基于π演算的网络服务交互行为的建模和死锁定位,是一种基于进程代数的建模方法,是在CCS的基础上提出的传名演算。传统的进程代数描述的是一个静态的拓扑结构,这个静态的拓扑结构里所有进程间的交互是在固定的通道上进行的。而H演算则把通道名看作是普通的变量和值,不加以区分,因此,通道名和普通变量一样可以在进程间进行传递,而进程间可以在新传递的通道上进行交互。整个方法包括用户输入的网络服务流程的显示模块、流程的解析模块、流程的建模模块、流程的验证模块和流程的死锁定位模块。文件的导入模块主要负责导入文件,对现有的形式化建模语言进行分析后,发现现有语言语法的共同点是都是基于XML的,因此我们可以在导入文件的过程中忽略语言的语言特性,那么文件导入其实就是导入XML文档。文件的解析模块主要负责解析文件,对XML文档进行解析有两种方法比较常用:一个是使用基于事件的XML的简单API,即SAX。另一个是基于树和结点的文档对象模型称为D0M,本文采用DOM树分析。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合,应用程序正是通过对这个对象模型的操作,来实现对XML文档数据的操作。DOM接口提供了一种 通过分层对象模型来访问XML文档信息的方式,这些分层对象模型依据XML的文档结构形成了一棵节点树。无论XML文档中所描述的是什么类型的信息,即便是制表数据、项目列表或一个文档,利用DOM所生成的模型都是节点树的形式。也就是说,DOM强制使用树模型来访问XML文档中的信息。由于XML本质上就是一种分层结构,所以这种描述方法是相当有效的。建模模块主要负责对解析后的XML文档进行形式化描述,其中建模规则要依据描述XML文档的形式化建模语言到π演算的转换规则。模型的验证模块主要负责自动验证流程的正确与否,因为用来建模的业务流程不可能是完全正确的,根据现有的资料显示,流程中可能存在的错误主要有死锁、活锁,或者不可达状态。HXML主要研究的是对模型状态死锁的验证,如果验证通过,则说明模型不存在死锁。死锁定位模块主要负责对存在死锁的业务流程就行死锁定位,现有的模型验证工具只能验证流程是存在死锁的,但是不能定位死锁发生的位置,如果交互的网络服务行为过多,定位发生死锁的位置对开发人员来说是相当巨大的工程,这也是开发本方法的原因。本发明的网络服务交互行为形式化建模和死锁定位方法中,用来建模和分析的文档都是可扩展标记语言XML格式的,即必须保证构建的用于对由进程代数描述的网络服务交互行为进行自动建模的HXML工具打开的文件是可扩展标记语言XML格式的,实现所包含的步骤为:步骤I)导入所需验证的文档,这里的文档必须是可扩展标记语言XML格式的,可以在导入文件的过程中忽略各种语言的语言特性,那么文件导入其实就是导入可扩展标记语言XML文档;步骤2)对可扩展标记语言XML文档进行解析,采用文档对象模型DOM树分析,文档对象模型DOM接口提供了一种通过分层对象模型来访问可扩展标记语言XML文档信息的方式,这些分层对象模型依据可扩展标记语言XML的文档结构形成了一棵节点树,无论可扩展标记语言XML文档中所描述的是什么类型的信息,即便是制表数据、项目列表或一个文档,利用文档对象模型DOM所生成的模型都是节点树的形式;也就是说,文档对象模型DOM强制使用树模型来访问可扩展标记语言XML文档中的信息,具体的实现过程如下:步骤2.1)建立一个解析器工厂,并通过这个工厂来获得一个具体的解析器对象;步骤2.2)使用解析器工厂的静态方法获得一个具体的文档对象模型DOM解析器;步骤2.3)利用这个解析器对可扩展标记语言XML文档进行解析,步骤3)对可扩展标记语言XML文档进行建模,根据各类语言的建模规则,并将建模结构进行有机的结合,具体实现过程如下:步骤3.1)读取整个流程的起始标志〈process〉,开始对文件建模,步骤3.2)读取关键元素并进行判断,如果是结束标志〈/process〉,则建模结束;步骤3.3)如果不是结束标志〈/process〉,与接收活动、响应活动、调用活动、赋值活动、空活动、等待活动、终止活动、抛出异常、顺序活动、分支活动、选择活动、流活动进行匹配,按照匹配成功的活动建模规则进行建模,步骤3.4)继续执行步骤3.2)与步骤3.3),直到读取到〈/process〉;步骤4)对步骤3)建立的模型进行验证,具体实现过程如下:步骤4.1)从模型中读取所有单一网络服务的输入和输出;

步骤4.2)根据网络服务的交互的先后顺序,检测上一步的输出是否为下一步的输A ;步骤4.3)如果判定为是,则依次入栈,直到最后一个元素入栈;步骤4.4)如果判定为否,发出报告“模型中存在死锁”,并停止入栈,步骤5)死锁定位,若步骤4)中报告不存在死锁,则步骤5)可省略,否则,若存在死锁,则根据最后入栈的情况进行定位,具体实现过程如下:步骤5.1)到数据库查找与可扩展标记语言XML文档相对应的形式化描述语言的建模规则;步骤5.2)收集步骤4)中入栈的元素,并找到其对应的转换规则;步骤5.3)步骤4)中栈中的元素依次出栈,同时根据第二步找到的转换规则进行逆转换;步骤5.4)将逆转换后得到的可扩展标记语言XML语句放到原可扩展标记语言XML文档中进行定位,发出准确的位置信息给用户。有益效果:本发明方法针对现有的建模工具对网络服务的交互不能自动建模、不能自动定位异常发生的位置,采用进程代数中的η演算对网络服务的交互行为进行建模,并对建模后的模型进行验证和异常的定位。通过本方法的使用,能够提高网络服务交互的成功率,节省服务流程中发生异常重新挖掘相关网络服务的时间,另外有助于开发人员准确方便的定位异常发生的位置。


下面结合附图对本发明的具体实施方式
作进一步的描述
图1是建模及验证依据的π演算的图形化表示,图2是面向服务的体系架构(SOA),SOA的关键是“服务”的概念,SOAP是简单对象访问协议,WSDL是网络服务描述语言,UDDI是通用描述、发现与集成服务,图3是HXML工具的总体模块图,BPEL是指业务流程执行语言,WS-⑶L是指服务编舞描述语言,图4是HXML工具的总体包图,图5是XML文档的解析过程, 图6是BPEL业务流程到π演算自动建模的流程图。
具体实施例方式HXML工具的实现方法所包含的步骤为:步骤I)以xml文件的格式读取用户输入的文件,并按照原文的格式显示出来。步骤2)建立一个解析器工厂,并通过这个工厂来获得一个具体的解析器对象,实现方法如下:DocumentBuilderFactoryfactory=DocumentBuilderFactory.newlnstance ();步骤3)使用上一步获得的工厂对象的静态方法newDocumentBuilder获得一个DocumentBuilder对象,即具体的DOM解析器,实现方法如下:DocumentBuilderbuilder=factory.newDocumentBuilder ();步骤4)利用这个解析器对XML文档进行解析。步骤5)读取整个流程的起始标志〈process〉,开始对BPEL文件建模。根据相应的形式化建模语言到η演算的转换规则进行建模,直至读取到结束标志〈/process〉。步骤6)读取单个网络服务的输入输出,并根据单个网络服务的发生顺序依次入栈,同时比较前一网络服务的输出是否为后一网络服务的输入,若是则继续入栈,直至所有网络服务的输入输出读取完毕;若不是,则停止动作。步骤7)判断步骤6)动作停止时,所有单一 web服务的输入输出是否全部入栈,若是,则业务流程中不存在死锁,验证流程结束。步骤8)若不是,则输出动作停止时入栈的单一网络服务的输出,并根据相应形式化描述语言到η演算的建模规则进行逆转换,从而得到死锁发生时执行的网络服务行为。步骤9)将步骤8)还原得到的网络服务行为放回原xml文档,定位死锁发生的位置,并显示给用户,验证流程结束。利用基于π演算的网络服务交互行为的形式化建模和死锁定位方法需要以下条件:条件I) HXML工具内部的转换规则及时更新,从而适应快速发展的形式化描述语言;条件2)需要进行验证和死锁定位的网络服务必须是现有的形式化描述语言描述的;利用Ji演算作为建模的方式,采用Visual Studio为开发工具,应用C#编程。其中详细的步骤如下:一、转换规则制 定阶段:选择当前较常用的用来描述网络服务交互行为的形式化建模语言,为形式化建模语言与H演算之间的转换制定合理的转换规则。a)常用的形式化语言选择阶段:步骤I)搜集比较常用的网络服务交互行为;步骤2)根据描述语言的不同对搜集到的网络服务交互行为进行分类;步骤3)通过步骤2)得到了分类结果,选取其中的两到三个进行转换规则的制定;b)规则制定阶段:步骤4)以现有的转换规则为例,扩充形式化建模语言的转换规则,从外部活动、内部活动、结构化活动等方面进行建模规则的制定。如BPEL到的转换规则为:(1)接收活动〈receive〉的建模
〈receive
partnerLink= “plname ” portTvpe= “pname” operation= £< oname variable= “ncname,,
creatlnstance= “yes|no” stand-attributesslan dard-el e m en ts/>
</receive>由于我们只关心其中 partnerLink,portType,operation, variable 四个属性的
取值,因此接收活动〈receive〉可以表示如下:
<receive
partnerLink= “plname” portType= “pname” operation= “onarne” variable= uncname" />
<...>
〈/receive〉即用〈…〉表示〈receive〉的其他属性、子元素等定义,后面对其他活动的π演算建模同样用这种形 式。〈receive〉活动将等待一个调用的请求,π演算建模中表示通过通道Channel接收消息,用O进程表示通过通道在发送完一个被请求的数据后进入的下一个进程。于是〈receive〉活动在π演算中建模为:<receive>pi=ChanneI (BPELNcname).0其中,BPELNcname为 partnerLink, portType, operation, variable 四个属性的值。
(2)响应活动〈reply〉的建模
权利要求
1.一种网络服务交互行为形式化建模和死锁定位方法,其特征在于该方法中用来建模和分析的文档都是可扩展标记语言XML格式的,即必须保证构建的用于对由进程代数描述的网络服务交互行为进行自动建模的HXML工具打开的文件是可扩展标记语言XML格式的,实现所包含的步骤为: 步骤I)导入所需验证的文档,这里的文档必须是可扩展标记语言XML格式的,可以在导入文件的过程中忽略各种语言的语言特性,那么文件导入其实就是导入可扩展标记语言XML文档; 步骤2)对可扩展标记语言XML文档进行解析,采用文档对象模型DOM树分析,文档对象模型DOM接口提供了一种通过分层对象模型来访问可扩展标记语言XML文档信息的方式,这些分层对象模型依据可扩展标记语言XML的文档结构形成了一棵节点树,无论可扩展标记语言XML文档中所描述的是什么类型的信息,即便是制表数据、项目列表或一个文档,利用文档对象模型DOM所生成的模型都是节点树的形式;也就是说,文档对象模型DOM强制使用树模型来访问可扩展标记语言XML文档中的信息,具体的实现过程如下: 步骤2.1)建立一个解析器工厂,并通过这个工厂来获得一个具体的解析器对象; 步骤2.2)使用解析器工厂的静态方法获得一个具体的文档对象模型DOM解析器; 步骤2.3)利用这个解析器对可扩展标记语言XML文档进行解析, 步骤3)对可扩展标记语言XML文档进行建模,根据各类语言的建模规则,并将建模结构进行有机的结合,具体实现过程如下: 步骤3.1)读取整个流程的起始标志〈process〉,开始对文件建模, 步骤3.2)读取关键元素并进行判断,如果是结束标志〈/process〉,则建模结束;步骤3.3)如果不是结束标志 〈/process〉,与接收活动、响应活动、调用活动、赋值活动、空活动、等待活动、终止活动、抛出异常、顺序活动、分支活动、选择活动、流活动进行匹配,按照匹配成功的活动建模规则进行建模, 步骤3.4)继续执行步骤3.2)与步骤3.3),直到读取到〈/process〉; 步骤4)对步骤3)建立的模型进行验证,具体实现过程如下:步骤4.1)从模型中读取所有单一网络服务的输入和输出; 步骤4.2)根据网络服务的交互的先后顺序,检测上一步的输出是否为下一步的输入; 步骤4.3)如果判定为是,则依次入栈,直到最后一个元素入栈; 步骤4.4)如果判定为否,发出报告“模型中存在死锁”,并停止入栈, 步骤5)死锁定位,若步骤4)中报告不存在死锁,则步骤5)可省略,否则,若存在死锁,则根据最后入栈的情况进行定位,具体实现过程如下:步骤5.1)到数据库查找与可扩展标记语言XML文档相对应的形式化描述语言的建模规则;步骤5.2)收集步骤4)中入栈的元素,并找到其对应的转换规则;步骤5.3)步骤4)中栈中的元素依次出栈,同时根据第二步找到的转换规则进行逆转换;步骤5.4)将逆转换后得到的可扩展标记语言XML语句放到原可扩展标记语言XML文档中进行定位,发出准确的位置信息给用户。
全文摘要
一种网络服务交互行为形式化建模和死锁定位方法,对现有的规则进行分类,并对各分类进行扩充;对尚不存在的规则进行建立,使转换规则数据库能够适应快速发展的形式化描述语言。介于现有的建模工具需要人工参与,不能实现自动建模,并且整个建模过程对用户是不可见的,如果流程出现错误,用户无法确定异常发生的位置。利用扩充或建立得到的转换规则数据库,对形式化建模语言描述的网络服务交互行为进行自动建模,并选取具有代表性的案例对建立的模型进行验证,证明模型的正确性以及转换规则的正确性。采用前向查找方法对出现异常的环节进行重现和定位,实现建模、验证、定位全自动。
文档编号G06F17/30GK103218414SQ201310100798
公开日2013年7月24日 申请日期2013年3月26日 优先权日2013年3月26日
发明者张卫丰, 韩鲁峰, 王慕妮, 张迎周, 周国强, 周国富, 许碧欢, 陆柳敏 申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1