(计算机软件与理论专业论文)基于bpel的web服务组合异常处理方法研究与实现.pdf_第1页
(计算机软件与理论专业论文)基于bpel的web服务组合异常处理方法研究与实现.pdf_第2页
(计算机软件与理论专业论文)基于bpel的web服务组合异常处理方法研究与实现.pdf_第3页
(计算机软件与理论专业论文)基于bpel的web服务组合异常处理方法研究与实现.pdf_第4页
(计算机软件与理论专业论文)基于bpel的web服务组合异常处理方法研究与实现.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

(计算机软件与理论专业论文)基于bpel的web服务组合异常处理方法研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 在s o a 中,b p e l 被广泛用来定义和执行业务流程组合。执行业务流程时,由于 s o a 本身具有松耦合、分布式等特点,因此在调用w e b 服务时可能会因为网络、服务 失败或者提供服务的主机不可访问等原因,而导致业务流程在执行中出现异常。异常的 出现将影响流程的走向,使得流程不能完成正常的功能。因此b p e l 设计者必须捕获这 些异常并且处理它们。通常使用的方法是调用一个被认为可使用的、可访问的并且与失 败服务具有等价功能的w e b 服务来替代出现异常的w e b 服务。这种方法要求b p e l 设 计者在定义流程时就对可能出现的异常进行全部准确的预测,显然这是很难做到的。 本文的研究以国家8 6 3 项目“高可信度软件生产线”的子课题b p e l 引擎设计与实现 为背景,重点研究了异常处理的问题,主要的工作有: 1 提出一个基于中间件的系统异常解决框架。这个框架的主要作用为拦截异常,定位 可替换的服务并调用这个服务来替换出现异常的服务,从而使得流程继续执行,并 且整个替换过程是动态实现的。这个中间件的部署和维护是独立于b p e l 的。 2 在选择最优可替换服务时提出了按照流程使用者所制定的q o s 指标来决定的方法。 这些q o s 指标必须指定最大和最小值,从而表明哪些指标是需要重点参考的。本文 提出的这个方法实现了对用户q o s 需求的考虑,从而使得流程的运行能适应客户需 求的变化。 3 在进行等价服务替换时,本文提出的框架使用基于x s l t 转换的方法把替换服务和 出现异常的服务联系起来。 4 对本文提出的框架进行了设计与实现,并对其性能进行了实验分析。 关键词:w e b 服务,异常处理,b p e l ,q o s ,等价服务 r e s e a r c ha n di m p l e m e n t a t i o no fw e bs e r v i c eco m p o s i t i o n e x c e p t i o nr e s o l u t i o nb a s e do nb p e l a b s t r a c t w s - b p e li sw i d e l yu s e dn o w a d a y sf o rs p e c i f y i n ga n de x e c u t i n gc o m p o s i t eb u s i n e s s p r o c e s s e sw i t h i nt h es e r v i c eo r i e n t e da r c h i t e c t u r e ( s o a ) d u r i n gt h ee x e c u t i o nh o w e v e r , o f s u c hb u s i n e s sp r o c e s s e s ,w h e ni n v o k i n gw e bs e r v i c e s ,an u m b e ro ff a u l t sr e s u l t i n gf r o mt h e n a t u r eo fs o a ( e g n e t w o r ko rs 0 1 w - e rf a i l u r e s ) m a yo c c u r a n dt h e s ef a u l t sw i l lm a k et h e b p e ll o o s et h e r et r a c k 。t h ew s - b p e ls c e n a r i od e s i g n e rm u s tt h e r e f o r eu s et h ep r o v i s i o n s o f f e r e db yw s - b p e lt oc a t c ht h e s ee x c e p t i o n sa n dr e s o l v et h e m ,u s u a l l yb yi n v o k i n gs o m e e q u i v a l e n tw e b s e r v i c et h a ti se x p e c t e dt ob er e a c h a b l ea n da v a i l a b l e h o w e v e r , t h i sm e t h o d i n t r o d u c e sn e wp r o b l e m sw h e ni tc o m e st oe n s u r i n gs u p e r i o rp e r f o r m a n c ea n da v a i l a b i l i t y i nt h i sp a p e r , t h er e s e a r c hi sb a s e do no n eo ft h en a t i o n a l8 6 3p r o j e c tw h i c hi sh i g h r e l i a b i l i t ys o f t w a r ep r o d u c t i o nl i n e ss u bp r o j e c tt h eb p e le n g i n e sd e s i g na n dr e a l i z a t i o n , f o c u so nt h ee x c e p t i o nh a n d i n g p r o b l e m s ,t h em a i nw o r k sa r ea sf o l l o w s : 1 i nt h i sp a p e r , w ep r o p o s eam i d d l e w a r e - b a s e df r a m e w o r kf o rs y s t e me x c e p t i o n r e s o l u t i o n ,w h i c hu n d e r t a k e st h et a s k so ff a i l u r ei n t e r c e p t i o n ,d i s c o v e r yo fa l t e r n a t e s e r v i c e sa n dt h e i ri n v o c a t i o n t h em i d d l e w a r ei s d e p l o y e d a n dm a i n t a i n e d i n d e p e n d e n t l yo ft h ew s - b p e ls c e n a r i o s ,r e m o v i n gt h u st h en e e df o rs p e c i f y i n g a n dm a i n t a i n i n gs y s t e mf a u l th a n d l e r sw i t h i nt h es c e n a r i o s 2 t h ep r o c e s so fs e l e c t i n gt h ea l t e r n a t es e r v i c e st ob ei n v o k e dc a nb ed r i v e nb y p r o c e s sc o n s u m e rs p e c i f i e dq o sp o l i c y , s p e c i f y i n gl o w e ra n du p p e rb o u n d sf o re a c h q o sa t t r i b u t ea sw e l la st h ei m p o r t a n c eo fe a c hq o sp a r a m e t e r t h i sm e t h o dh a s c o n c e d e dt h ep r o c e s su s e r sn e e d s ,a n dc a nm a k et h ep r o c e s sa d a p tt ot h ec h a n g i n g o f t h ec o n s u m e r sd e m a n d 3 m o r e o v e r , t h em i d d l e w a r ea r r a n g e sf o rb r i d g i n gs y n t a c t i cd i f f e r e n c e sb e t w e e nt h e o r i g i n a l l yi n v o k e ds e r v i c e sa n df u n c t i o n a l l ye q u i v a l e n tr e p l a c e m e n t st oi t ,b y e m p l o y i n gx s l t - b a s e dt r a n s f o r m a t i o n s 4 i nt h i sp a p e r , w ee x p l a i n e dt h ef r a m e w o r kw h i c hi n t r o d u c e di nt h i sp a p e r , a n d r e a l i z e dt h ef r a m e w o r kt o o w ea l s oa n a l y s i st h i sf r a m e w o r k sp e r f o r m a n c eb y e x p e r i m e n t k e y w o r d s :w e bs e r v i c e s ,f a u l th a n d l e r s ,b p e l ,q o s ,e q u i v a l e n ts e r v i c e 西北大学学位论文知识产权声明书 本人完全了解西北大学关于收集、保存、使用学位论文的规定。学校 有权保留并向国家有关部门或机构送交论文的复印件和电子版。本人允许 论文被查阅和借阅。本人授权西北大学可以将本学位论文的全部或部分内 容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存 和汇编本学位论文。同时授权中国科学技术信息研究所等机构将本学位论 文收录到中国学位论文全文数据库或其它相关数据库。 保密论文待解密后适用本声明。 学位论文作者签名汤今辜多盎指导教师签名: 砂年月垌矽少年占月歹瑁 西北大学学位论文独创性声明 本人声明:所呈交的学位论文是本人在导师指导下进行的研究工作及 取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,本 论文不包含其他人已经发表或撰写过的研究成果,也不包含为获得西北大 学或其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对 本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。 学位论文作者签名:彳争聋i 妾, 西北大学硕士学位论文 第一章绪论 1 1 研究背景与意义 随着计算机与网络技术的迅速发展,尤其是i n t e m e t 的日益普及和广泛应用,大量 的数据资源、计算资源和应用资源凭借i n t e m e t 成为可被公共获取和访问的网络资源。 由于众多网络用户的需求是多样化、个性化的,因此动态组合i n t e r n e t 上不同机构提供 的各种应用,快速应对不断变化的业务,自动适应各种复杂的运行环境,提供更加方便 快捷的业务应用模式,就成为当今信息化应用发展的主要趋势。 w e b 服务技术的出现,为解决分布式网络环境中的服务组合和应用集成提供了一种 非常好的思路和技术。w 曲服务被绝大多数中间件软件供应商所支持【l 】。w e b 服务的最 主要的目标【2 】是为企业间的业务提供服务以及在基于规定的q o s 条件下为他们的客户 提供联合服务。由于采用流程方式来组织服务、描述业务逻辑是一种非常直观和用户比 较容易接受与理解的方法。所以,诸多基于网络的大型复杂系统采用业务流程来组合各 种服务,通过服务间相互协同来实现业务目标。业务流程代表复杂的业务运营,它由许 多独立的步骤组成。在s o a 中,每一个步骤就是一个w e b 服务。业务流程管理( b p m ) 为组织提供标示、建模、开发、部署和管理他们的业务流程,其中涉及到r r 技术及人 际活动。然而单个w e b 服务是不能提供各种复杂的功能的,因此为了更好的利用好各 种共享的w e b 服务,将不同机构提供的单个或多个服务按照服务描述、约束、可用资 源等进行服务组合来提供强大的服务功能,通过业务流程自动化来降低企业运行成本, 已经成为信息化应用模式发展的主要趋势。 在s o a 中,由于w e b 服务的松耦合性,它能很好的适应企业不断增长的业务需求, 然而确保优越的性能及可用性也是一个新的挑战。由于w e b 服务通常由几个应用程序 共享,而且在事务处理过程中经常会出现失败或者异常,1 1 r 团队又缺少对w e b 服务的 预见性。这就导致基于i n t e r n e t 的网络应用更加复杂,隶属于不同机构的服务之间的协 同工作更难实现,应用执行过程中更容易产生失败和异常。怎样确保业务流程在出现各 种异常的情况下仍能被正常完成,达到预期的目标,从而使得用户的应用得以成功的实 现变得越来越重要。 ,本文的研究以国家8 6 3 项目“高可信度软件生产线”为依托。“高可信度软件生产线”, 研究流程管理领域的共性基础技术,其目标是设计一个和可信的国家软件资源共享,与 协同生产环境相配套的流程管理构件和工具,形成面向流程管理的软件生产线,支持领 第一苹绪论 域应用系统的开发、实施、运行、配置和管理。本文参与的是其中一个子项目“b p e l e n g i n e 设计与实现”,本文重点研究在b p e l 运行中的异常处理。提出了一个用来进行 异常处理的框架,通过这个框架能实现动态的选择替换服务,进而处理异常,在选择最 优的服务时以用户制定的q o s 标准策略为依据,然后把这个最优服务作为出现异常服务 的替代服务。 1 2 国内外研究现状 由于w e b 服务的异构性、松耦合性、自治性和动态性,以w e b 服务组合为基础的 业务流程要如何才能保证应用的一致性即在出现失败、异常等情况下,组合服务的执行 仍能结束于一致状态,是w e b 服务组合应用的一个关键问题。在b p m s 中,异常是指 在流程运行中偏离正常情况并可能导致障碍的流程变化。 所有的w s b p e l 工具像a c t i v e b p e l t 3 1 、o r a c l ea p p l i c a t i o ns e r v e r 中的o r a c l eb p e l p r o c e s sm a n a g e r 4 】、e c l i p s e 5 1 、o p e n e s b t 6 1 都有通过c a t c h 结构或者c a t c h a l l 结构指定一 些活动来处理异常问题,这两个结构也被b p e l 设计者所采用。其中还有一些工具提供 特殊的异常处理机制,比如o r a c l eb p e lp r o c e s sm a n a g e r 就是通过发送一个异常信息给 j m s 死信队列来定位异常。 对于这个产业和研究团体来说,手动的设计异常处理的缺点已经是非常明显的,因 此有许多的学者或者团体在这方面进行研究,以提高在b p e l 执行时的异常处理。文献 f 刀提出了一个把各种容错模式映射w s b p e l 中的一个工具,同时该工具还能在每次调 用前配置各种容错模式。这个工作通过对设计者提供的分离的异常处理机制使用嵌套 域,从而提高了原始的w s b p e l 的异常处理机制。这个技术引进了使用一个迎合产生 异常处理机制的特殊的开发环境,但是它还是没有解决定位一个新的可替换服务或者撤 销一个可替换服务的问题。文献【8 】提出了一个使用一般的方法来解决异常问题的架构。 它提出了一个额外的模块s r r f ,通过s r r f 来处理异常,动态的发现同失败服务等价 的服务并且实现热交换。然而该文献没有清楚的描述s r r f 与b p e l 的联系,同时没有 说明s r r f 怎样指向这些异常,以及热交换后s r r f 将返回什么给w s b p e l 。文献【9 】 详细说明了文献【8 1 所提到的方法,同时它提出了一个预处理机,通过这个预处理机来提 高b p e l 的异常处理机制。它通过在嵌套域内重定向异常,然后发给可选w e b 服务探测 模块( a l t e r n a t ew sl o c a t o rm o d u l e ) ,同时返回给w s b p e l 脚本在失败服务地方必须 调用的替换w e b 服务的本体。然而由于w s b p e l 不允许动态调用服务绑定,因此预处 2 西北大学硕士学位论文 理机必须在产生b p e l 脚本的地方增加一个额外的调用,用来调用可选择服务,这就限 制了动态调用可选服务,同时迫使处理机在可供选择服务列表改变时返回相应的修改结 果。文献【l o 】提出了一个通过s o a 处理路径来定位异常的w e b 服务管理方法。它详细讨 论了c aw i l yw e bs e r v i c e sm a n a g e r ,并且给出了r r 团队怎样通过这个方法来管理w e b 服务的实例。尽管这个方法能够实现组合服务运行时的异常定位,但是它的主要目标是 在遗留系统或者基于w e b 的应用程序和其他组件中准确的定位正确异常的位置,异常 解决却没有得到很好的说明。要想完全自动的动态的处理w s b p e l 执行时出现的异常, 最基本的问题是要定位可替换失败服务的服务。在这个方向上文献1 1 1 2 1 提出了一个 m e t e o r - s 与w s m x ( w e bs e r v i c e se x e c u t i o ne n v k o n m e n t ) 1 3 】协作。w s m x 包含有 一个发现组件,这个组件用来定位能满足特殊用户需求的服务。而这个组件是基于 w s m o t l 4 】的。w s m o 包含有一个选择组件,这个组件使用的算法是从简单的总是使用 第一个的算法到多目标选择的算法,并且这个组件可以直接和服务请求者进行交互。无 论是上述的m e t e o r s 还是其他的方法,都是使用本体来代表那些功能性和非功能性 的属性。这些方法都是使用d a m l + o i l 或者o w b s t l 5 】来表达。这就使得基于语义的方 式来发现那些与失败的服务相当的替代服务成为可能。m e t e o r o s 和w s m x 同样利用 等价服务信息,通过预判异常信息来解决异常的问题。 文献【1 6 ,1 7 】给出了一个a g f l o w 系统。这个系统在执行流程是会参照用户定义的q o s 约束。a g f l o w 有两种策略,一是使用一个基于用户制定的q o s 约束的全局的标准,这 样执行的业务流程全都按照这个标准,一个是对一些特定的基本任务使用一个局部的 q o s 约束标准。这个系统使用文科1 8 】提出的一种简单的加权方法来选择一个最优服务。 文献【1 9 】提出了一个v i e d a m e 系统。这个系统也是在执行b p e l 流程时使用用户定义的 q o s 策略。但是这个系统使用的q o s 属性以及选择策略是通过个插件来预先定义的。 这个系统的缺点是它只是基于a a i v e b p e l 引擎的,不支持其它的b p e l 引擎。 1 3 主要研究内容 本文将主要关注在业务流程执行过程中出现的异常,特别是当一个服务变得不可用 时的处理。导致服务失败或者异常的原因可能是短暂的,如:主机的不可操作、软件异 常、网络失败等;也有可能是永久的,如:服务被撤回、对服务不适合的修改等。由于 这些异常的存在,所以怎样确保这些服务的可访问性以及最终达到在实际运行中确保业 务流程的正确运行就是一个关键问题。一个普遍的方法是用一个服务来代替已失败的服 3 第一章绪论 务。这个替代服务必须具有和失败的服务有相同的功能【1 9 】。b p e l 提供c a t c h 和c a t c h a l l 活动来捕获不可访问的错误以及调用替代的服务。b p e l 的设计者可以使用它们来阻止 一些错误和指定当正常服务不可访问是来调用哪些替代服务。但是这个方法存在以下两 点不足: 1 、b p e l 设计者必须承担额外的工作。他要定位等价的服务,然后把它们放到b p e l 的错误处理机制中去。 2 、当有一个新的服务产生,而这个服务同样可以用来替代那个不可访问的活动并 且它比以前的用来替代的服务更好的接近被替换的服务时,那么相应的b p e l 必须得到 修改。当替换服务被撤回是这些修改也同样要被进行。 由于在b p e l 中任何服务绑定都必须通过代码指定,因此通过一个f a u l th a n d l e r 来 调用所有的替代服务是不可行的,动态的引进新的绑定服务或者删除已过时的服务都是 不可能的。上述的任何改变都将触发一个维修活动,而这将导致w s b p e l 代码的修改。 本文将提出一个可选服务绑定框架a l t e r n a t i v es e r v i c eb i n d i n g ( a s b ) ,这是一个基 于中间件的,用来动态解决在b p e l 执行过程中出现的异常:增加业务流程的健壮性和 可靠性,同时简化它的维修规范。a s b 框架在b p e l 执行时捕获系统异常,调用同失败 的服务功能相同的、可操作的服务来替代该失败的服务。a s b 担当一个w e b 服务代理 的角色,每当b p e l 引擎调用一个服务操作时就会调用a s b 。所以其实是由a s b 来实 现真正的调用服务的功能,因此a s b 可以截获任何在此次调用时产生的错误。当一个 错误被检测到时,a s b 就通过查询服务仓库来查找一个合适的与失败的服务相当的服 务,然后调用这些服务直到其中一个产生了回复,最后把这个回复返回给b p e l 。在选 择合适的可替代服务的时候采用流程用户提供的q o s 标准,用户依据对每个q o s 属性 重要性的不同认识而设置关于这些属性的最大最小值,然后a s b 按照这些标准来选择 最符合用户要求的替代服务。在选择好替代服务之后,a s b 采用x s l t 转换样式表来把 这个替代服务和失败的被替代服务联系起来。 1 4 论文结构 本文主要分成六部分,其中各部分的内容概括如下: 第一章为绪论,本章主要对本文的研究背景,国内外的研究现状做出了简单的分析。 然后介绍了本文的研究内容、课题的来源以及本文的组织结构。 4 西北大学硕士学位论文 第二章为业务流程执行语言及其异常处理机制。本章首先研究了国内外学者对于异 常的分类。分析了当前主要的处理异常的方法,并对学者们对这些方法的应用进行了分 析。然后分析了作为本文进行异常处理的流程定义语言b p e l 的结构以及它的特点。紧 接着对b p e l 中关于异常处理机制进行了详细的分析。最后对本文所采用的b p e l 引擎 的基础o d e 中对异常的处理方式进行了分析。 第三章为等价服务和q o s 属性分析。本章主要是解决怎样判断两个服务是等价的问 题,以及怎样在所有的等价服务中找出最适合服务的问题。本章针对本文提出的异常处 理框架中涉及的等价服务以及进行等价服务选择的标准进行介绍与分析,然后给出了本 文的解决方案。首先提出了本文理解的等价服务的概念,提出了把等价服务分成语法等 价和语义等价两种,其中语法等价是语义等价的子概念。然后本章介绍了用于进行等价 服务转换的基础x s l t ,介绍了x s l t 的基本元素。最后本章对用来进行等价服务选择 的标准q o s 属性进行了相关介绍,并重点说明了本文主要考虑的五个q o s 指标。 第四章为a s b 框架设计。首先介绍了本文提出的a s b 的整体框架。然后分别对框 架中的五个组件进行了说明。接下来在本章介绍了a s b 框架处理异常时的流程,并给出 了相应的伪码说明。最后本章对用来进行等价服务存储的服务仓库进行了重点介绍,并 给出了这个数据库的表结构图。 第五章为对前面所提出的a s b 框架的系统实现。本章首先介绍了x s l t 转换的实 现方式,然后对q o s 信息的实现方式进行了介绍,同时介绍了服务匹配的实现和数据仓 库的实现。接下来给出了使用这个框架的性能分析,并给出了系统实现的一些重要的类 图分析,在最后给出实例运行的界面图。 总结与展望对本文所做的工作进行了总结,并在对已实现的a s b 总结的基础上分 析了a s b 需要进一步完善的地方。 5 第二章业务流程执行语言及其异常处理机制 第二章业务流程执行语言及其异常处理机制 2 1 引言 企业间或者其部门之间为了实现业务流程协作能够顺畅的执行,他们会使用统一的 业务流程描述语言。这就使得越来越多的组织在定义业务流程语言,从而导致了如 b p m l 、d a m l - s 、b p e l 、w s f l 等业务流程语言的出现。其中业务流程语言( b p e l ) 是目前使用最为普遍的一种流程定义语言,本文的研究是基于业务流程语言的。本章将 分析国内外学者对于目前异常的分类以及主要的异常处理方法。同时还将分析业务流程 建模语言b p e l 的结构及其特点,并将重点分析b p e l 中关于异常处理以及补偿机制。 2 2 异常分类 在对异常的研究中,学者们从多方面以不同的角度来对异常进行分类。文献刚中, c h i u 分析异常是以系统的角度出发,因此他把异常分为可预测异常、不可预测异常、基 本失败、应用失败四个方面。从c h i u 的观点出发,像数据库系统、网络以及操作系统 等方面的失败就是基本失败,而在调用执行任务时所产生的失败就被称作应用失败。比 如说输入不可预料的数据产生的失败就是一个应甩失败。流程不可预测异常,顾名思义, 就是指用户不能正常预测的,在流程的运行中产生的异常;相反,用户能够正常预测流 程走向的,在流程运行中可能出现的流程的不正确行为就被称为可预测异常。在文献【2 l 】 中,提出了按照异常产生的来源来划分异常的概念。该文献中指出像操作系统、数据库 系统等工作流管理系统的外部构建所产生的异常就称为外部异常,内部异常则是指工作 流管理系统自己本身所产生的异常。文献【2 2 】贝0 提出将规则的相似程度以及过去的经验作 为区分异常的标准,按照这个方法异常将被分为确实可预测异常、扩展后可预测异常和 不可预测异常三大类。在文献例中提出的观点类似于文献【2 0 】,他异常分为系统级别异常 以及根据过程模型与异常的结合方式不同而分成的嵌入式异常和分离式异常共三大类。 其中系统级别异常又分为基本异常、应用异常、可预料异常和不可预料异常四种。在文 献 2 4 】中提出了根据触发异常的原因来划分异常,他将异常划分为工作流触发的异常、时 间触发的异常、数据触发的异常以及外部触发的异常共四种类型。其中工作流触发的异 常是指因为工作流自己本身的执行时产生的异常,这种异常一般在工作流运行的开始或 者结束时产生。时间触发的异常则是指因为时间关系而抛出的异常,如超时等情况。数 据触发的异常是指在运行时产生的数据出错从而导致异常的发生。而由外部事件触发的 异常就是外部触发异常。 6 西北大学硕士学位论文 文献2 习认为应该根据异常对工作流所产生的影响的大小来给这些异常分类。它根据 异常影响力的大小把异常分为以下几类:第一类称为噪音,表示这类异常对工作流的影 响很小,几乎可以忽略不计;第二类是只对流程的一部分或者某些特殊流程造成影响的 异常,这些异常被称为特殊异常;第三类就是指可以所以流程新产生的实例的异常,这 些异常是在流程的运行过程中产生,称为演进异常。但是在文献【2 q 中虽然也是根据异常 的影响力来划分异常,但是它注重的是异常所影响到的系统的层次,根据这个层次是应 用层还是系统层或者内部而把异常对应分为应用层异常、工作流级异常和框架级异常。 无论是按照哪种分类方法,从哪个角度出发,异常都是被学者们看作是对流程预计 功能的偏移,并很有可能导致流程执行障碍。异常通常都具有以下几个特点。 异常是发生在流程运行时, 异常通常都将导致流程不能正常运行,虽然说也有一小部分的异常对流程造成 的影响可以忽略不计, 异常都是不可预见的,不能够事先去定义, 基本上所有异常都是需要人为的干预才能被很好的处理。 2 3 异常处理方法 在当今的软件开发过程中,人们逐渐认识到合理的业务逻辑以及完整的处理手段对 整个软件系统是非常重要的,这也带动了人们对异常处理的研究。由于异常是在运行时 才发生的,是不可预见的,因此异常并不能在设计阶段就被考虑到。因此,越来越多的 学者把研究重点放到了在异常发生后怎么进行异常处理这个方向上。 在如今的b p m s 系统中,对于异常的处理主要分为三个步骤。第一步是异常检测, 这一功能主要由系统的异常监控模块来实现。其实现方式是通过比较输入输出值是否与 预期的值有偏移来判断是否产生了异常。第二步是当异常监控模块发现异常后就会生成 一个异常检测报告,然后把它发送给处理模块,第三步就是异常处理模块对异常进行处 理。而在b p m s 系统中对于异常的处理通常会按照异常对流程的影响程度而采取不同的 处理策略,下面是主要的处理策略介绍: 忽略,当系统认为出现的异常对流程造成的影响可以忽略不计的时候,系统就忽 略该异常,继续执行下面的流程。 重试,在这个方式下,系统会重新执行活动,直到它成功完成或者超时。 回滚,在这个方式下,系统将调用补偿机制来处理异常。 7 第二苹业务流程执行语言及兵异常处理机制 修改实例,在这个方式下,系统通过修改实例的某些属性来解决异常。 修改模型,使用这个策略的条件是模型与现实不匹配,这时就要修改模型来解决 异常。 组合,就是通过多种策略来解决一些复杂的异常。 而根据异常处理的特点,当前主流的异常处理方法有失败补偿法、 e c a ( e v c n t - c o n d i t i o n a c t i o n ) 规则法、案例推理法三种。下面分别介绍这三种处理方法。 1 、失败补偿法 失败补偿法就是对流程中的活动都给出一个补偿活动,当流程执行到某个活动 时发生了异常就调用它对应的补偿活动来执行。这在b p e l 中是由补偿机制来实现。补 偿法是使用最广泛的一种异常处理方法。它的缺点是很难去定义恢复的范围。文献【2 7 】 提出了一种面向服务工作流的补偿机制,它按照工作流的日志实施补偿策略。文献2 8 】 出了一种基于补偿业务生成图的补偿机制,当业务流程出现异常时,就按照补偿业务生 成图采取向前或者向后补偿的恢复处理。 2 、e c a 规则法 e c a 规则最先是由文献2 9 1 提出的。e c a 规则法中的e 是指异常事件,c 是条件, 是预先就设定的,a 则是代表着活动,也是预先就准备好的。e c a 规则的处理流程是当 发生了异常e 时,如果这个e 满足c ,那么系统就调用a 来继续执行。文献3 0 , 3 1 1 介绍 了一种基于规则的流程自适应方法,当到达一定的条件的时候就使用规则来确保流程的 完成。 3 、案例推理法 案例推理法是将以前的异常处理方法保存在异常库中,当有异常发生时,就拿 它与异常库中的案例进行比较,找到匹配的就按照这个匹配的异常处理方式进行异常处 理;当没有匹配的异常时就以案例解决方案这个模版进行一些修改,从而解决这个异常, 同时把这个异常的解决方法保存到异常库中。文献3 2 1 提出了一种基于流程知识库的 b p m 异常处理方法,对于与e c a 知识库中匹配的异常就使用e c a 知识库中的方法处 理异常,否则就按照e c a 知识库中相似度最大的那个异常的处理方法处理。文献【3 3 】提 出了一种交互式的案例推理方法来实现异常处理。当发生了一个异常时,系统根据以前 收集的关于异常处理的知识来处理异常,然后通过与用户的交互,由用户来决定这个案 西北大学硕士学位论文 例是否符合处理条件,能否到达要求。这个系统的缺点是它要求系统必须有学习能力。 文献瑚提出了一种使用树结构的异常知识库的方法。在这个树结构中的父节点是代表通 用的流程,而子节点则代表着特殊的流程。通过匹配知识库中的异常信息来决定调用哪 个节点处理异常。 而在本文中将主要研究一种基于服务替换的异常处理方法。在一个组合应用过程 中,可能会有很多的服务被部署,而这些服务可能由于不同的原因而变得无效。在这种 情况下就可以调用一个与这个服务等价的服务来替换。 2 4 业务流程执行语言 b p e l ( b u s i n e s sp r o c e s se x e c u t i o nl a n g u a g e ) 也叫w s b p e l 或者b p e l 4 w s ,是一 种用来编排、组合和协调w e b 服务的规范标准语言,它是在2 0 0 2 年由o a s i s 组织推出 来的,在2 0 0 7 年4 月,o a s i s 正式批准b p e l 的最新版本为w s b p e l 2 0 。它继承了 i b m 公司的w s f l 和m i c r o s o f t 公司的x l a n g 语言的优点,即b p e l 是集p i c a l c u l u s 和p e t r i 网两者之长,确又没有这两种语言的复杂繁琐,是一种可执行的、高级的、抽 象的建模语言。它支持结构化构造流程和面向图形的流程。要想充分发挥w e b 服务作 为集成平台的作用,就必须让应用程序与业务流程通过统一的标准来进行有效地交互, 这就需要业务流程建模语言。在b p e l 以前,广泛使用w s d l 语言支持无状态的交互模 型,但是业务流程的交互是涉及至少两方的,有状态的、长期运行的交互模型,并且这 些交互的消息交换可以是同步的,也可以是异步的。 2 4 1b p e l 涉及的相关技术 一 b p e l 语言是一种流程建模语言,它是依赖于以下这些基于x m l 的一系列开放技 术标准的,像w s d l 、x m ls c h e m a 和x p a t h 等。图2 1 给出了b p e l 与它所涉及的标 准的关系。 9 第二章业务流程执行语言及其异常处理机制 图2 1b p e l 及相关标准的关系 x p a t h 是用来定位x m l 文档中的节点或者节点集的。x m ls c h e m a 是一个使用x m l 来定义其它标准的一个标准,它提供了定义标准的一些语法,像b p e l 、s o a p 和w s d l 等都是用x m ls c h e m a 来定义的,特别是在b p e l 中定义的输入输出变量也是由x m l s c h e m a 定义的。s o a p 给服务之间的消息提供了封装的标准。w s d l 是对b p e l 影响最 大的一个标准了。w s d l 语言为b p e l 流程与其参与者之间的交互接口进行了描述。如 图2 - 1 ,b p e l 定义的流程模型是在w s d l 定义的上面的。在下一节将要介绍到的b p e l 流程结构中的流程和伙伴链接都是被描述成w s d l 服务。所以也可以这么说,一个b p e l 流程是定义了一个或者多个的w s d l 服务,并通过由w s d l 描述的接口与w e b 服务交 互。b p e l 是一个平台无关的标准,其运行环境可以是j a v a 平台,也可以是m i c r o s o f t 的n e t 平台。b p e l 流程的服务发布、查询和调用是通过w e b 服务的执行平台来实现的。 b p e l 本身关注的是流程的逻辑、事件处理、异常处理等问题。 2 4 2b p e l 流程结构 要组成一个b p e l 流程,需包含有以下这些基本的元素:伙伴链接( p a r t n e rl i n k s ) 、 变量( v a r i a b l e s ) 、相关集( c o r r e l a t i o ns e t s ) 、活动( a c t i v i t y ) 、以及补偿处理程序( c o m p e n s a t i o n h a n d l e r ) 、异常处理程序( f a u l th a n d l e r s ) 和事件处理程序( e v e n th a n d l e r s ) 。伙伴是指与业务 流程进行交互的w e b 服务,而w e b 服务与b p e l 流程之间的交互关系就被定义为伙伴 链接。变量是用来保存流程状态,而相关集是一组属性的集合,这些属性是用来将消息 与会话关联在一起的。活动是b p e l 流程的基本单位,用来定义b p e l 流程的基本行为。 流程对于撤销某一事务行为并将其对应的数据恢复到执行前的状态这个操作的定义是 1 0 西北大学硕士学位论文 在补偿处理程序结构中定义的。异常处理程序的作用是捕获并且处理业务流程执行过程 中出现的异常,而事件处理程序的作用则是用来并行处理业务流程执行过程中产生的事 件。图2 2 对b p e l 的这些基本元素进行了说明。 图2 - 2b p e l 流程基本结构图 l 、伙伴链接( p a r t n e rl i n k e r ) b p e l 业务流程主要是用来描述企业之间或者不同部门之间的业务交互的,每次业 务流程之间的交互都是通过w e b 服务接口来实现。业务流程与这些w e b 服务是对等关 系的,在服务层次上它们也是相互依赖的。这就是说一个w e b 服务可以调用b p e l 流程 中定义的服务,同时这个服务业很有可能是b p e l 中定义的某一服务的提供者。伙伴链 接就是用来在b p e l 中形容这种关系的。如图2 2 所示,一个伙伴链接是一个伙伴链接 类型( p a r t n e rl i n k e rt y p e ) 的一个实例。伙伴链接类型使用定义服务的角色来描述它们 之间的关系,使用p o r t t y p e 来实现对交互时产生的消息的接收。一个伙伴链接类型中是 最多只能定义b p e l 本身和一个伙伴两个角色的。而在b p e l 中自定义的伙伴链接数目 是可以很多个的,这由流程中涉及到的w 曲服务数量来决定。例如,假设有a 个面向 客户的链接,b 个流程完成必须的服务,那么就会有a + b 个伙伴链接。图2 3 给出了b p e l 第二章业务流程执行语言及其异常处理机制 通过伙伴链接及p o r t t y p e 与w e b 服务联系的示例。 图2 - 3b p e l 与w e b 服务关系图 2 、变量( v a r i a b l e s ) 和相关集( c o r r e l a t i o ns e t ) 变量是b p e l 用来保存业务逻辑等发送给伙伴链接所产生的中间数据信息。在b p e l 中的变量的可以声明为w s d l 消息类型,也可以是x m ls c h e m a 类型或者x m ls c h e m a 元素。声明在全局的流程作用域中的变量叫做全局变量,而声明在 q b 的变量则 被称为局部变量。变量是只有在声明它的作用域范围内或者其嵌套域中才是可见的。 相关集是将会话和消息关联在一起的一组属性的集合。b p e l 通过属性来指定消息 的上下文,同时把它作为区别其他的唯一的标示。在w s d l 中,属性通过不同的属性 别名来映射到消息的不同的作用域中去,以实现对不同消息的关联。在一个业务流程的 生命周期内,它将会涉及到许多的不同的会话,涉及的w e b 服务也有很多个,这就必 须保证特定的消息和会话能匹配到正确的流程实例中区,而相关集就是b p e l 提供用来 实现这一功能的。 3 、活动( a c t i v i t y ) 活动是组成b p e l 流程结构的基本元素。b p e l 中一个语句或者一个步骤的执行就 是一个活动。活动又可分为基本活动和结构化活动两类。基本活动执行某种功能,它是 具体行为的执行者,是不可再分的。而结构化活动描述的是对流程逻辑的控制,它规定 1 2 西北大学硕士学位论文 了基本活动的执行顺序。像流程中的数据流、异常处理以及事件处理等都是在结构化活 动中得到说明。 基本活动有以下几种: ,事件接收活动是b p e l 用来从外部的伙伴那接收数据,然后保存到 变量中去。它允许业务流程阻塞以等待消息的到来。 ,应答活动是流程用来发送消息给伙伴已达到回复 活动的消息。 ,调用活动室流程用来调用伙伴通过p o r t t y p e 定义的操作。 ,变量赋值活动用于更新变量。 ,抛出活动,是b p e l 用来显示抛出异常的。 ,等待活动允许业务流程等待某一给定时段或直到某一时刻为止。 ,终止活动用于立即终止某一运行的业务流程实例。 ,空活动是不定义任何操作的活动。 结构化活动有: ,顺序活动是b p e l 用来指定一个顺序执行的活动集。 ,循环活动是b p e l 用来指定一个循环执行的活动集。 ,多分支处理结构是b p e l 用来指定从一组活动中选择一个特定活动。 ,并发活动表示活动之间的并发和同步 ,事件选择活动会等待一组相互排斥事件中的一个事件的发生,然后执 行与发生事件相关联的活动。 4 、作用域( s c o p e ) s c o p e 活动可以将流程定义的部分逻辑细分到使用这个活动的范围中。在s c o p e 中 可以定义不同的异常处理程序。作用域为嵌套在其中的活动提供上下文,并且也是定义 异常处理程序和补偿处理程序的地方。因此,可以将作用域看作是一个可补偿的、可恢 复的工作单元的封装。每个活动的执行上下文由s c o p e 来提供。s c o p e 可以提供异常处 理程序、事件处理程序、补偿处理程序、数据变量和相关集。c o m p e n s a t e 活动命名了执 行补偿所在的作用域,即将要被执行的补偿处理程序的作用域。为了让补偿处理程序通 过名称来调用,所有直接嵌套在作用域和活动的名称必须是唯一的。c o m p e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论