(计算机软件与理论专业论文)基于saga的高级事务模型在工作流系统中的应用研究.pdf_第1页
(计算机软件与理论专业论文)基于saga的高级事务模型在工作流系统中的应用研究.pdf_第2页
(计算机软件与理论专业论文)基于saga的高级事务模型在工作流系统中的应用研究.pdf_第3页
(计算机软件与理论专业论文)基于saga的高级事务模型在工作流系统中的应用研究.pdf_第4页
(计算机软件与理论专业论文)基于saga的高级事务模型在工作流系统中的应用研究.pdf_第5页
已阅读5页,还剩59页未读 继续免费阅读

(计算机软件与理论专业论文)基于saga的高级事务模型在工作流系统中的应用研究.pdf.pdf 免费下载

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

文档简介

摘要 王佟滚技术是发矮金韭信意系统静核心掖术之一。企盈照务流穗中体现蹬来 的事务特性,对传统事务理论提出了新的挑战。这砦事务具有生命周期长、姑构 复杂、需要分布式支特等将缓。为了鳃决这一海题,久餐在钨统事务模登静基础 上提出了许多高级事务模型。但是往往因为结构过于复杂,溅者实现起来过于困 难,褥缀难寝露羁实际懿王俸涟系统中。 s a g a 模型是一种针对长期事务的高级事务模型,其核心思想是将一个长期事 务翔分爻一缀龛许攀猿提交熬短麓琢予事务窳挠行,著逶遥对嚣子事务戆羚偿活 动来保证整个事务的原子性。本文d a s a g a 模型为基础,结合成熟的j t a ( j a v a t r a n s a c t i o n a p i ,j a v a 搴务接口) 技术,疆蠢并实瑗了一葶孛可嚣豹毫级事务接壁x s a g a ( e x t e n ds a g a ) 。x s a g a 模型掇高t s a g a 中原予事务的粒度,减少了需要补偿的活 动数疆,提供了分_ 鸯式支接,扩大了事务牲资源懿菠强。 本文给出_ r x s a g a 模型的形式化描述和j a v a 实现,并且通过与工作流参考模型 蛇标壤实瑷捆缝合,遮耀裂实器敬业务系统b s l 8 5 中,舞决了工俸滚系统中滚是一 定条件的长期事务的控制问题。 关键词:高级事务工作流管理系统s a g a j t a a b s t r a c t t h ew o r k f l o wt e c h n o l o g yi soneo ft h ek e yt e c h n o l o g i e so ft h ed e v e l o p m e n to f e n t e r p r i s ei n f o r m a t i o ns y s t e m s b u tt h et r a n s a c t i o n si ne n t e r p r i s eb u s i n e s sp r o c e s s e s c h a l l e n g et h et r a d i t i o n a lt r a n s a c t i o nt h e o r i e s i ng e n e r a l ,t h e s ea d v a n c e dt r a n s a c t i o n sa r e l o n g l i v e d ,c o m p l i c a t e d ,a n dd i s t r i b u t e d t os o l v et h e s ep r o b l e m s ,m a n ya d v a n c e d t r a n s a c t i o n sm o d e l sa l ep r e s e n t e d b u tm o s to ft h e mcann o tb ee m p l o y e di nr e a l i s t i c w o r k f i o ws y s t e m s ,b e c a u s eo ft h e i rc o m p l i c a t e ds t r u c t u r e s o rd i f f i c u l t i e si n i m p l e m e n t a t i o n s a g ai soneo fa d v a n c e dt r a n s a c t i o nm o d e l s ,w h i c ha i mt o s o l v el o n g - l i v e d t r a n s a c t i o n s i td i v i d e sal o n g l i v e dt r a n s a c t i o ni n t oa t o m i ct r a d i t i o n a lt r a n s a c t i o n s , w h i c hc a nb ec o m m i t t e dr e s p e c t i v e l y c o m p e n s a t ea c t i v i t i e sa r ee m p l o y e dt og u a r a n t e e t h ea c i dc h a r a c t e r i s t i c so ft h ew h o l et r a n s a c t i o n t h i sp a p e rp r e s e n t sx s a g a ( e x t e n d s a g a ) ,an e wa d v a n c e dt r a n s a c t i o nm o d e l ,w h i c hi sb a s e do ns a g am o d e la n dm i x e d w i t hj t at e c h n o l o g y x s a g am o d e le n l a r g e st h eg r a n u l a r i t yo ft h ea t o m i ct r a n s a c t i o n s a n dd e c r e a s e st h en u m b e ro ft h en e e d e dc o m p e n s a t ea c t i v i t i e s i t s u p p o r t s t h e d i s t r i b u t e de n v i r o n m e n ta n de x t e n d st h es c o p et h et r a n s a c t i o n a lr e $ o l l r c e $ t h ef o r m a ld e s c r i p t i o na n di m p l e m e n t a t i o no ft h ex s a g am o d e la r ep r e s e n t e d a n d t h i sm o d e li sc o m b i n e dw i t ho f b i z ( o p e nf o rb u s i n e s s ) ,as t a n d a r di m p l e m e n t a t i o no f t h ew o r k f l o wm a n a g e m e n ts y s t e mr e f e r e n c em o d e l ,a n di su s e di nb s18 5 ,ar e a l i s t i c b u s i n e s ss y s t e m i ti sp r o v e dt ob eaf i n es o l u t i o no fs o m el o n g l i v e dt r a n s a c t i o n s , w h i c hs a r i s f ys o m ec o n d i t i o n s 。 k e y w o r d s :a d v a n c e dt r a n s a c t i o nm o d e lw f m ss a g a j t a 创新性声明 r $ 8 3 4 0 8 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果;也不包含为获得西安电子科技大学或 其它教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做 的任何贡献均己在论文中做了明确的说明并表示了谢意。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:园垡塞二! 日期:洲,g 关于论文使用授权的说明 本人完全了解西安电子科技大学有关保留和使用学位论文的规定,即:研究 生在校攻读学位期间论文工作的知识产权单位属西安电子科技大学。本人保证毕 业离校后,发表论文或使用论文工作成果时署名单位仍然为西安电子科技大学。 学校有权保留送交论文的复印件,允许查阅和借阅论文:学校可以公布论文的全 部或部分内容,可以允许采用影印、缩印或其它复制手段保存论文。( 保密的论文 在解密后遵守此规定) 本学位论文属于保密,在一年解密后适用本授权书。 本人签名:因垡叠! , 导师签名:值聋 r 期 日期 p 如j | 山口o p 第一章绪论 第一章绪论 1 1 引言 企业运行机制从集中式向分工合作式的转变,对企业信息系统的建设提出了 新的要求。传统的独立、封闭式的信息系统早已不能适应现代企业高速发展的需 要,越来越多的信息系统被要求能够根据市场情况进行快速的调整,并且能够互 连、互通,以实现信息的共享与协同计算。 工作流( w o r k f l o w ) 技术是实现企业业务流程( b u s i n e s sp r o c e s s ) 的建模与 仿真、分析与优化、管理与集成,从而最终实现业务流程的自动化的核心技术【“。 利用工作流技术进行企业信息系统的开发,不仅可以规范企业的业务流程,发现 业务流程中不合理的环节,进而对企业的业务流程进行优化或重组,而且可以根 据业务的需要或者市场的变化,快速的调整或者重建业务流程,实现业务系统对 业务需求的快速响应。 工作流系统的核心思想在于细化企业的业务流程并进行合理的拆分与整合, 从而达到最大限度的灵活控制。企业可以根据需要,实时的改变业务流程或者业 务规则。业务流程是由一组工作流活动( a c t i v i t y ,包括内部活动和按照一定标准 暴露出来的外部活动) 按照一定的逻辑关系组合而成,系统的运行过程,实际就 是这些活动的迁移过程。所以,如何保证活动迁移过程中流程数据和系统状态的 一致性,也就是传统意义上的事务性,成为影响工作流系统可靠性的一个关键因 素。如果按照传统数据库事务理论,通过锁定资源来实现业务流程的事务属性, 又无法满足现代企业系统支持并发与分布的基本要求,因为这些事务往往具有较 长的生命周期,需要访问多种异构数据源,其结构也比较复杂。如何处理长期事 务或者全局事务这类高级事务,成为近l o 年来事务研究领域的一大热点。 为了解决这一问题,人们在传统事务模型的基础上提出了许多高级事务模型, 但是往往因为结构过于复杂,或者实现起来过于困难,而很难应用到实际的工作 流系统中。本文以s a g a 模型为基础,结合成熟的j t a 技术,提出并实现了一种切实 可行的高级事务模理j x s a g a ,并通过与工作流参考模型的标准实现相结合,成功地 运用到实际的业务系统中,解决了工作流系统中满足一定条件的长期事务的控制 问题。 、 基于s a g a 的一种高级事务模型在工作流系统中的应用 1 2 工作流中的高级事务对传统事务模型的挑战 数据库系统中的传统事务和工作流系统中的高级事务都旨在保护数据或者状 态的一致性,以及在出现错误或故障时,如何保证数据或者状态的可靠性。但是, 两者对于这种一致性和可靠性的保护又有所不同,主要体现在以下几个方面: 1 、两者面向的对象不同。传统事务模型主要针对单一数据库中的事务,它的 主要特点是以数据为中心。这样的语义不能直接应用到工作流系统中。因 为,工作流宁的活动可能是传统的数据库数据操作,也可能是与数据库全 无关系的其它操作( 如发送电子邮件) 。相比而言,工作流中的事务面向 的对象更具复杂陡。 2 、两者对于事务原子性的要求不同。传统事务的原子性( 即所有操作同时成 功或者同时失败) 对于工作流流程显得过于严格而且代价太高。困为一个 不重要的活动失败就回滚整个业务流程是不现实的,因为这样的流程可能 已经花费了很长的时洲或者大量的人力和物力。工作流事务要避免这样的 问题,就必须提供足够灵活的事务处理机制,在一定程度上放宽对原子性 的要求。 3 、两者的生命周期不同。传统数据库中的事务操作一般执行时间相对较短, 占用资源的时间也较短,通过对所需资源的锁定就能够很好的保证事务的 隔离性,并且允许并发。但这种方法无法在工作流系统中应用,因为工作 流中的事务活动通常执行时间长,涉及到的资源多,控制逻辑也比较复杂, 所以排他性的资源锁定对于并发性能的影响非常大。这种长期执行的活动 如果作为单独的传统事务处理,会严重影响其他事务的执行,进而影响到 整个系统的并发性能。 4 、两者的恢复策略不同。在传统事务模型中,由于面向的对象相对比较简单, 尤其是在数据库事务中,每一个事务操作都有一个预先定义的语义集合, 所以当发生错误时,事务的回滚操作也相对简单,甚至可以象数据库操作 那样自动回滚。但在工作流系统中,情况完全不一样,工作流事务面向的 对象的复杂性,导致这些事务的回滚操作无法自动生成。例如发送一组邮 件的动作,如果其中的一个发送失败,如何对已经成功的发送操作进行回 滚,就只能通过人工参与来解决。甚至有一些操作是根本无法回滚的,例 如销毁文件,另外,工作流系统中的回滚操作,除了要恢复工作流中的数 据和状态,还要使业务流程能继续推进。所以,与传统事务相比,工作流 系统中的高级事务的恢复策略更加复杂。 针对这些不同,。人们提出了许多基于传统事务的高级事务模型,f f t j 如s a g a l 6 】、 第一章缔论 嵌套事务1 4 1 、灵活事掣2 8 1 等,但这些模型大都因为结构复杂或者实现困难而停留在 试验阶段,并没有真正应用到成熟的工作流产品中去。 1 3 论文的工作内容 本文来源予西安电子科技大学软件工程研究所的“i c a l l 呼叫中心平台系统” 项目。笔者主要负责呼口q 中心业务系统的设计与服务器端的实现。在项目实施过 程中,笔者主要完成了以下工作: l 、通过引入j t a 事务,提出了一种基于- s a g a 的三层事务模型x s a g a ,较好的解 决了原有s a g a 模型中底层传统事务的边界划分问题,提高了s a g a 中子事务的 粒度,减少了补偿节点的数目,增加了对分布式事务的支持,从而使得s a g a 这种简单的高级事务模型能够真正的应用到实际系统中。 2 、对x s a g a 模型进行了形式化的描述,利用图理论给出j z x s a g a 模型中各个层 次上的事务的形式化定义,确定了连接各个层次的操作接口,这些接口以 一组谓词的形式进行表述。各个层次上的事务定义和谓词操作构成了系统 实现模型的基础。以x s a g a 模型的形式化描述为基础,讨论了几种常见的恢 复策略在x s a g a r p 的实现,并且结合实际情况,提出了一种更具可操作性的 恢复策略,人工恢复策略( m a n u a lr e c o v e r y ) ,并且在x s a g a 模型中给出了 该策略的形式化描述与代码实现。 3 、实现t x s a g a 模型,并且成功的与o f b i z ( o p e nf o rb u s i n e s s ) 系统的工作流 引擎对接。这种结合具有一定的普遍意义,因为o f b i z 作为工作流参考模型 p 】的个标准实现,具有一般工作流系统的主要特征,x s a g a 系统与o f b i z 的成功结合,证实t x s a g a 这种高级事务模型在工作流系统中的普遍适用 性。 4 、基于3 中实现的事务性工作流系统,实现了i c a l l 呼叫中心业务系统的平 台建设。良好的支持了业务系统的二次开发工作,并且对具有高级事务特 性的机票预定业务,以及其它几类常见业务进行了分析,对x s a g a 模型描述、 实现这些业务的能力进行了实践检验。 1 4 各章节的主要内容 第二章主要讨论本文的些理论基础,首先介绍了工作流参考模型,以及模 型中的几个重要元素,然后讨论了几种常见的高级事务模型和几种典型的恢复策 略,并且分析了工作流系统对这些模型的挑战,最后简要介绍 j t a 技术的核心思 想,以及它在工作流系统中应用的局限性。 4 基于s a g a 的一种i 渐级$ - 7 r 模型d :丁作流系统中的成用 第三章主要讨论x s a g a 系统的理论模趔,给出了系统中各个熬簧元素的形式化 定义、蕉来避行运算蕊一系臻谣谰、激及系统涉及鬟懿主要算法,讨论了常觅羧 复策略在x s a g a 模型中的实现,掇出了人工恢复策略及其算法,最后讨论了形式化 接述懿意义。 第四章主要讨论系统的设计及实现,首先给出t x s a g a 实现模型的逻辑结构, 分援了o f b i z 中与x s a g a 蜜凌紧密撵关兹实俸模型( e n t i t ym o d e l ) 、鼹努蓬黎 ( s e r v i c ef r a m e w o r k ) 、工作流弓i 擎( w o r k f l o we n g i n e ) 的实现,以及它们与逻, 瓣结兹中各组件瓣对应关系,然爱讨论了对x p d l 戆扩展、x s a g a 霉i 擎昶j 善a 工厂黪 实现细节。最后给出系统中大量使用的图的存储与运算簿法的实现。 第夏拳是应爝实捌及试验数攥分辑。主要讨论了在x s a g a 基麓上实理靛i c a l l 呼q 中心业务系统的实现框架,分析了一个典型的长期事务性业务( 预定机票业 务) 以及其它几类常见业务熬漉稔特征,势剩矮x s a g a 模型对这些业务送纾了搓述, 从而验证- v x s a g a 在实际应用中的重要作用。 第六辈结衷溪。总终了论文辑完成的主要工终,以及对于下一步工撂的一些 设想。 第二章理论基础 第二章理论基础 2 1 工作流参考模型眦3 】 工作流参考模型包含了籀述一个能够被工作流引擎执行的流程所需要的所有 信息【,l 。这些信息包撼流程的开始和完成条件、构成流程的活动以及进行活动问导 航的规则、粥户所需器完成的任务、可能被调用的成用、工作流引擎闻的引用关 系,以及所有与工作流相关数据的定义。 作为工髂流技术的标准制定者,工作流管理联澄( w f m c ) 主要开展了两个 方面的工作:一是定义了一个工作流元模型。所谓元模型,一般是指描述模测的 模型。工作流元模型楚用来攒述所有工作流模型内在联系的模型。它用于描述工 作流模型内部包含的各个对琢、对象之间的关系及对象的属 生。元模型的建立, 使得多个工俸流产品之闻可以相互交换信息。另个工作是定义了一套用予工作 流管理系统之间、管理系统与建模工县之间交互过程模型定义的a p i 。 2 1 ,1 工作流元模型【3 】 图2 1 为工作流管理联盟定义的工作流元模型。 r o l e w o r k l l o w t 饿d e f i n i t i o n 。“。_ 。+ 。1 。“。“。一 | 掣时5 1 1 1 a v , l 划a c t i i 、i i 4 棚 o 1 , l n 矗v i 阳、e 1 1 i a n s i t i o n ( o n d i t i o n s w o n k f l o w r e l e v a n ld 8 t a a i p n ,v i o ;。k 。e 。d i 。l ,:鳜。 幽2 1t :作流元模型 该摸型毯含了以下足个基本实体: 6箍于s a g a 的一种高级事务模型以二丁作流系统中的虚用 1 、业务流程定义( w o r k f l o wt y p ed e f i n i t i o n ) :它一般包含诸如工作流模型 名称、版本号、过程启动和终止的条件、系统安全、监控和控制信息等一 系列基本属性。流程反映了一个企业业务流程的目的和过程,即这个过程 要实现的目的和最终达到的目标是什么,以及这个目标是如何实现的。 2 、活动( a c t i v i t y ) :主要属性有活动名称、活动类型( 原子级活动、子流程 等) 、活动的前后条件、调度约束参数( 如最长处理时间、排队等待时间) 等。当工作流运行在分布的环境下时,在活动的属性中还应该包括该活动 的工作流引擎的位置等信息。活动相应于企业业务流程中的任务,它主要 反映了完成企业业务流程需要执行哪些功能操作。 3 、转换条件( t r a n s i t i o nc o n d i t i o n s ) :主要负责为流程实例的推进提供导航 依据,主要参数包括工作流过程条件( f l o wc o n d i t i o n ,过程实例向前推进 的条件) 、执行条件( e x e c u t i o nc o n d i t i o n ,执行某个活动的条件) 和通知 条件( n o t i f i c a t i o nc o n d i t i o n ,通知不同用户的条件) 。转换条件对应于企 业业务流程中的业务规则和操作的顺序,如在订单处理完成后,执行生产 计划制定。 4 、工作流相关数据( w o r k f l o wr e l e v a n td a t a ) :工作流根据工作流相关数据 和转换条件进行推进。工作流相关数据的属性包括数据名称、数据类型和 数据值等。它是工作流引擎执行任务推进的依据。 5 、角色( r o l e ) :角色属性主要包括角色的名称、组织实体、角色的能力等。 角色或组织实体决定了参与某个活动的人员或组织单元。它主要描述了企 业业务流程中参与操作的人员和组织单位。 6 、参与激活的应用程序( i n v o k e da p p l i c a t i o n s ) :主要属性包括应用程序的 类型、名称、路径及运行参数等。应用主要描述用于完成企业业务流程所 采用的工具或手段,如采用e r p 软件或决策支持软件完成具体的企业业务 功能。 2 1 2 工作流引擎3 工作流引擎是工作流管理系统的核心,也是企业业务流程的任务调度器,在 某种程度上还是业务资源分配器。在采用工作流管理系统支持业务流程运行的企 业中,工作流引擎可以看成是企业的业务操作系统。企业的业务流程在它的管理、 监控和调度下运行,因此,工作流引擎的性能和可靠性直接决定了业务流程的运 行效率和安全性。它提供了执行业务流程需要的运行环境,主要完成以下功能: 1 、解释流程定义。 2 、控制流程实例的创建、激活、挂起、终止等。 第二章理论基础 3 、控制活动实例问的转换,包括串行或并行操作、工作流相关数据的解释等。 4 、提供支持用户操作的接口。 5 、维护工作流控制数据和工作流相关数据,在应用或用户间传递工作流相关 数据。 6 、提供用于激活外部应用程序和访问工作流相关数据的接口。 7 、提供控制、管理和监督业务流程历史执行情况的功能。 企业业务流程的执行过程,就是流程实例和活动实例的状态转换过程。工作流管 理联盟提出的参考模型对流程实例运行状态和活动实例运行状态进行了定义口j ,并 给出了状态转化条件。流程实例包括以下几个运行状态: 1 、开始( i n i t i a t e d ) :一个流程实例已经生成,但是该实例目前还没有满足开 始执行的条件; 2 、准备运行( r u n n i n g ) :该流程实例已经可以执行,但是还不满足开始执行 第一个活动并生成一个任务项的条件: 3 、运行中( a c t i v e ) :一个或多个活动已经开始执行( 也就是已经生成一个或 者多个任务项并分配给了适合的活动实例) ; 4 、挂起( s u s p e n d e d ) :该流程实例正在运行,但处于静止状态时,除非有一 个“重启”的命令或者外部事件促使该实例回到准备运行状态,否则所有 的活动都不会运行; 5 、结束( c o m p l e t e d ) :该流程实例执行已经完成,并且满足了结束该实例的 条件,系统将执行流程实例结束后的其它操作,并删除该流程实例; 6 、终止( t e r m i n a t e d ) :该流程实例在正常结束前被迫终止( 如出现错误或者 异常情况) ,系统将执行补救措施,并删除该实例。 以下是活动实例的运行状态: 1 、开始( i n a c t i v e ) :一个活动实例已经生成,但是还没有被激活( 例如,活 动开始条件没有满足) ; 2 、运行中( a c t i v e ) :该活动实例已经被激活,正在运行; 3 、挂起( s u s p e n d e d ) :该活动实例被暂时挂起,活动处于静止状态; 4 、结束( c o m p l e t e d ) :浚活动已经执行完毕,系统将进行活动结束后的导航 工作,激活下一个符合启动条件的活动实例。 图2 2 和图2 3 分别描述了流程状态之间和活动状态之间的转换关系。 基于s a g a 的一种z 精级事务模型扣:工作流系统中的成用 塑 图2 2 流程状态转换幽 慧裂忖 礼“t 一社一 幽2 3 活动状态转换图 根据以上描述可以看出,工作流也可以看成是一系列有序操作的集合,只不 过这些操作的对象具有更广的内涵,并不仅仅限于数据库中的数据。而且,工作 流也同样具有事务特性。比如,工作流中的某一活动实例正在对一用户数据进行 写操作,此时就不应该再允许其他的活动实例同时对该数据进行有关的读写操作; 还有,当一个工作流过程在执行到某一活动时被迫取消,那幺,在这一活动之前 已经完成的活动所造成的影响也就应该尽可能地取消( 当然,有些操作结果是无法 取消的) ,特别是被改动的数据,应该把它们恢复成过程执行前的状态。为了处理 这些情况,需要在工作流管理系统中引入事务概念和相应的事务处理方法。但是, 工作流的事务处理要比数据库中的事务处理复杂得多,因为工作流具有更复杂的 操作、更广的分布性以及更多的异构性。 2 2 高级事务模型h 6 9 1 0 为了更好地描述工作流的事务特性和解决工作流的事务处理问题,人们在传 统数据库事务模型的基础上提出了许多高级事务模型,包括嵌套事务模型【4 j 、 s a g a s i 叭、分支汇合事务模型、柔性事务模型【2 8 】、a c t a 9 1 等。高级事务模型通 常把一系列的操作分组成为层次化的结构,并且放宽了经典事务模型对a c i d 特性 的要求,以便适应不同性质的实际问题,因此,又被称为扩展事务模型。由于高 级事务模型在解决长时洲事务方面仍有很多局限性,人们把注意力由专门的数据 第二章理论綦础 9 库事务扩展到了工作流这一范围。a m i ts h e t h 在对这些高级事务模型进行研究的基 础上提出了事务性工作流1 1 0 ( t r a n s a c t i o n a lw o r k f l o w ) l 拘概念,他完全从工作流的角 度提出了任务的结构化定义以及基于任务问依赖关系的工作流定义,还对系统的 实现方法提出了有意义的见解。下面将对嵌套模型和s a g a 模型,以及事务性工作 流做一些简单的介绍。 2 2 1 常见高级事务模型h 一6 ,2 8 】 嵌套事务模型h 从经典事务模型到高级事务模型,一个很重要的改进步骤就是由单层结构扩 展为多层结构。嵌套事务( n e s t e d t r a n s a c t i o n ) 模型由m o s s 提出。它把一个事务分解 为多个子事务( s u b t r a n s a c t i o n ) ,同时,子事务也可以继续分解成为更细的子事务, 由此形成了一棵“事务树”。 子事务只有在其父事务开始后才可以开始,而父事务只有在所有的子事务全 部结束后才能结束。如果父事务退出,则所有的子事务必须退出,包括已经提交 的子事务也必须撤销;如果某个子事务失败,父事务可以选择自己的恢复方法, 比如,执行一个替换性操作,称为意外子事务。同层的子事务之间可以同时处于 活动状态,但一个子事务不能看到另外一个可能退出的子事务的更新结果。 嵌套事务模型在全局层次上保证了完全的分离性,同时增加了事务的模块化 程度,在失败处理时具有更韧的粒度,在事务内部具有更高的并发性,减少了处 理的响应时间。有关嵌套事务模型的详细信息请参考文献1 4 。 s a g a s 6 】 s a g a s 是由普林斯顿大学的h g a r c i a - - m o l i n a 等人提出,用于解决长时间事务 问题的一种模型。它的基本思想是允许事务在全部提交之前能够释放某些占用的 资源。这一点对于持续时间很长的事务而言是很有意义的,它大大地提高了资源 的利用率,同时也增强了系统的事务处理能力。在这里,一个长时间的事务被称 为一个“s a g a 。它由一个预先定义好执行顺序的子事务集合r 和一个相对应的补 偿子事务集合c t 组成。子事务集合丁是一个子事务序列正,瓦,瓦,补偿子事务 集合c t 则包括了集合r 中的每一个子事务所对应的补偿子事务c 正,c 兀,:c 瓦。任 意一个子事务瓦都具有a c i d 特性,以保证数据的一致性。一旦子事务瓦完成,通 过释放锁定,它的操作结果对其他事务而言就是可见的。只有当e ,l ,一l 按顺序 依次提交后,一个s a g a ;d 4 被成功地完成;如果其中的某个子事务执行失败,比如 是第k 个子事务瓦,那么系统将通过执行补偿子事务来撤销疋和前面已经提交的 k 1 个子事务的操作结果,补偿子事务一般都是逆序执行的,这样,整个过程的 执行顺序为f ,疋,瓦,c 瓦,c 瓦+ ,c 疋,c r , 。由于各个子事务间的执行是完全串 0 基于s a g a 的一种高级事务模嬖! 张工作流系统中的心用 行的,因此,这一模型又被称为线性s a g a s ,是种基本的s a g a s 模型。s a g a s 放松 了霹事务搽侔戆分胬往蘸要求,瓒麓7 事务滔懿并发萑。东线性s a g a s 熬基旗上, h g a r c i a - - m o l i n a 等人又进行了扩展,提出了并行s a g a s 模型和一般s a g a s 模型, 雩 入了必要瓣劳行极涮纛嵌襄税糕。 s a g a s 把个需癸长时闯运行的察务分解成几个部分,同时在各个部分之间建 立骥壤熬控裂流与数据浚。这嵇愚慧与工传漉夔过稳定义蘩常类戳,灵不避螽者 具有疆为复杂的形式。但是,s a g a s 也存在些未解决的问题,例如分布式处理问 题、攀务划分边赛不臻礁、枣 偿事务过予笺袋等超熬。本文将在蜃鬻兹章节孛对 其中的一部分问题提出相应的解决方案。有关s a g a 事务模型的详细信息请参考文 献f 6 】。 2 2 2 事务性工作流【1 0 攀务性工作滚是g e o r g i a 大学a m i ts h e t h 等人最先提出浆。这一壤念强调了与 工作流密切褶关的事务属性。一个事务工作流包含了多个任务的协作运行。这些 任务砥能要访问异构的、自治的、分森的数据库系统。任务阔的协调是通过基于 相互依赖的控制流方法进行擒述的,它为每个任务定义了执行的筑决条件,这 些条件可以怒基于其他任务的执行状念( 比如,某一任务是孬提交、是否退如或 结束簿) ,识可以墓予其他任务的输出参数,或者鏊于某些外部变鬣f 比如时问) 。 前面提到的多种赢级事务模型都可以被用来建立二e 作流的模型,其中每一个子 事务虢对应工作流中的任务,而事务的执幸亍结构对墩工作流中的控制流。这样, 工作流的分离性与原予性完众由它所使用的高级事务模型决定。a m i ts h e t h 认为, 许多黼级事务模壅的筏行结稳都狠有限,高级事务模整所预先定义的许多满性对 于工作流应用而言可能并不必要;而且在工作流的执行过程中,有数参与执行的 系统可麓并不支持这蓬事务模壅( 西为工俸流系统不能傈话所有的促务处毽实体 都是鼹有事务管理特征的d b m s ) ;另外,事务模型所注重的是保护数据的一撤性, 对于躐雩亍不溺经务静裙互独立静系绞之闽静镪调刘并不擅长。因藏,a m i ts h e t h 提 出了时事务憾工作流的一些有意义的处理方法,主要包括任务的定义、依赖与正 确经藏鲻、王佟流静执行等。有关事务注工佟流摸蘩的详缀信息请参考文献“。 2 。2 。3 工佟瀛系统对高级事务摸型酶挑战 疑率章黠嚣移摸搂戆论遮来看,互 睾渡掰考虑懿器类实钵为:趱户、滔动、 程序和数据,工作流瞥理系统则实现了活动问控制流与数据流的自动化,并且将 活动躞魅给用户与程序;薅褒袁黪攀务漠型剐并未遴滢懿梵多憨癍容,茬毪只羧 第二章理论基础 于解决其中的一部分问题,具体而言,工作流系统给高级事务模型提出以下一些 问题: 1 、工作流中的活动并不仅仅限于计算机应用程序,它是为一般性的企业活动 而设计的,而并非专门针对事务操作而设计,只要活动能够向工作流管理系统通 知其进展情况,就可以被容纳于工作流系统之中;相反,传统的高级事务模型则 有很强的针对性,主要是在数据方面的操作。所以,为了能够扩充工作流系统在 事务性资源上的处理能力,需要提供一种灵活的资源管理机制。 2 、工作流系统大多支持并且需要分布式的运行环境,而且,工作流系统的各 个组件或者不同的工作流引擎之间的网络连接不能得到保障,但是以往的高级事 务模型在分布式支持上存在着明显的不足。 3 、工作流模型一般不具备恢复与失败处理的语义,通常是依靠管理人员的手 工参与来实现此功能;而以往的高级事务模型则在自身的定义中重点对这方面内 容进行了约束,提出了一些相应的解决方法。从这一点来看,工作流模型正好需 要引入一定的事务处理能力,一方面可以提高工作流系统的性能,同时也是对事 务模型中相应解决方法的一个验证。但是,类似于s a g a 模型中的补偿,在工作流 中未必可行,因为业务流程的复杂,所以在子事务( 传统事务) 粒度太小的情况 下,为每个子事务提供补偿节点的做法不切实际。 针对上述问题,本文通过引入j t a 事务模型,提出了一种基于s a g a 的三层事务 模型x s a g a ,比较好的解决了原有s a g a 模型中分布式支持、子事务粒度以及事务性 资源的扩充性问题。在2 3 中,将简要介绍j t a 事务的基本结构和特征,以便于在 后面的章节中结合这些特征提, 出, x s a g a n 型。 2 3j t a 事务简介 2 3 1 分布式事务模型f 1 3 】 在分布式事务管理领域,x o p e nd t p ( d i s t r i b u t e dt r a n s a c t i o np r o c e s s ) 是使 用得最为广泛的分布式事务模型( 参见文献1 ) ,它定义了三个基本组件:应用 组件( a p p l i c a t i o nc o m p o n e n t ) 、资源管理器( r e s o u r c em a n a g e r ) 和事务管理器 ( t r a n s a c t i o nm a n a g e r ) ,以及t xi n t e r f a c e ( 应用组件与事务管理器之间的交互接 口) 和x ai n t e r f a c e ( 事务管理器与资源管理器之间的接口) ,并利用两步提交和 恢复协议来保证事务的原子性。 。 o b j e c tt r a n s a c t i o ns e r v i c e ( o t s ) 是o m g ( o b j e c tm a n a g e m e n tg r o u p ) 提出 的另外一种分布式事务处理模型( 参见文献【。2 1 ) 。它以x o p e n 模型为基础,用 1 2 基予s a g a 熬一种鑫缓嚣务攘壁在t 俸漉系统串熬斑羹l c o r b a i d l 接融替代y x o p e n q j 蟾t x 粒x a 接翻。在o t s 模型巾,不嗣的对象之 间通过麓于i i o p ( i n t e m e ti n t e ro r bp r o t o c 0 1 ) 的c o r b a 方法调用来实现交互。而 且,o t s 模型与x o p e nd t p 模型本身也是可以相互协绺的,例如,o t s 模型中的 一个使厢事务能对象( t r a n s a c t i o n a lo b j e c t ) 的威用组件,也可戳通过t x 接口与事 务管理器交互。 作为j 2 e e ( j a v a2e n t e r p r i s ee d i t i o n ) 技术盼一个关键内容,s u n 谯1 9 9 9 年5 月推出t j t s ( j a v a t r a n s a c t i o n s e r v i c e ) 和j t a ( j a v a t r a n s a c t i o n a p i ) ,统称为j a v a t r a n s a c t i o ns e r v i c e ,通常简称为盯a 事务( 详熙文献旧) 。j t s 是一种繁于o t s 之 上的事务服务,它利用o t s 接口求实现互操作和可移植性,因为o t s 定义了一种标 准的视南,麓够在多个, i t s 的事务管理器( t r a n s a c t i o nm a n a g e r ) 之闻剽淆i i o p ( i n t e m e t i n t e r o r b p r o t o c 0 1 ) 产生和传递事务上下文( t r a n s a c t i o n c o n t e x t ) 。 j a v a 酶事务服务( t r a n s a c t i o ns e r v i c e ) 主要龟括j t s 帮j t a 两部分,英中j t s 燕 爱定义了服务器端的实现框架,它实现了o m g 定义的o t s t 1 规范的j a v a 映射 ( m a p p i n g ) ,允许使灞j t a 的藏用程序能够与缆甭o t s 静应雨襁序之闻透过h o p 进行交互。应用程序能够初始化包含o t s 事务管理器的全局事务,或者参与由其它 o t s 事务管理嚣裙始纯的全局事务。两j 1 a 尉主要定义了一缓客户端与j t s 交互貔 接口,使得应用程序能够访问符合j a v a 事务模型的事务性资源( t r a n s a c t i o n a l r e s o u r c e ) 。 2 3 。2j t s t l 3 1 j t s 怒实理j a v a 事务骚务兹投心,它主要包瑟双下一些组 孛: 1 、t r a n s a c t i o nm a n a g e r :事务管理器是每一个j t s 的实现都必须提供的核心组 件。它实疆了一缀接口,遐寒遴行事务剑建( 包括事务声暖和事务上下文 的传播) ;申请和释放资源;注册组件以实现应用同步;实现同步协议; 耪始讫、揍挥资源管理器泉完威疆步提交秘婊复。 2 、a p p l i c a t i o ns e r v e r :j t s 结构的一个重要特征在于,它允许在事务服务和资 源管理之上构建瘦弱骚务器,应愆戆开发者可以兹应用暇务器上开发、部 署应用组件,来完成事务的初始化和管理。因此,应用服务器能够从应用 稷序孛撼取出掰蠢的事务蛙语义。 3 、a p p l i c a t i o nc o m p o n e n t 成用组件可以被看作是事务性资源的客户端,它实 瑷了真正驰业务交易。这些组件被部署在应用服务器上,能够直接或者潮 接的创建事务或者访问事务性资源( 与应用服务器的实现框架有关) 。例 如:在e j b ( e n t e r p r i s ej a v a b e a n ) 服务器中,允许声明型的事务边界划分, 在这种情况下,e j b 组件不用显式的进行事务划分,而最在部署的过程中, 第二章理论基础 在部署描述文件里声明。但是,如果是一个c o r b ao t s 的j a v a 实现,就需 要这个c o r b a 对象显式的进行事务划分。详见参考文献【1 4 】 4 、r e s o u r c em a n a g e r :资源管理器是一个符合x o p e nx a 接口的组件。它负责 管理一个持久化、稳定的存储系统,并且与事务管理器一起,实现两步提 交和恢复协议。同时,它提供一定的接口供应用服务器和应用组件来操作 由它管理的数据。 5 、c o m m u n i c a t i o nr e s o u r c em a n a g e r :通信资源管理器允许一个事务管理器参 与由另外的事务管理器初始化的事务,它主要涉及到事务上下文的传递。 但是,j t s 规范并没有规定这种通信必须采用的协议,只是假设这样的一个 通信资源管理器能够支持c o r b a0 t s 和g i o p ( g e n e r a li n t e r - o r b p r o t o c 0 1 ) 规范。 图2 4 描述了上述五个组件在系统中的组成结构。 图2 4j t s 结构图 2 3 3j t a l l 3 1 o r g o t “, g c m i m # ) a c t l o p a 咄“唯血r 辨m j 1 a 规范可以被归纳为三类接口的集合,在j t s 的实现中,他们分别由事务管 理器、资源管理器和应用组件来提供实现。 4 基于s a g a 的一种高级事务模型扯t 作流系统中的应用 l 、t r a n s a c t i o nm a n a g e ri n t e r f a c e s : 提供了一组确定的状态,用以描述事务的进展情况。 提供了一组方法来完成事务( c o m m i t 或者r o l l b a c k ) ,申请、释放资源、 注册同步对象、查询事务的状态。 提供一组接口允许应用服务器与事务管理器交互( 这组接口i 扫j t s 实 现) 。 提供一组接口允许应用组件显式的进行事务划分。 2 、r e s o u r c em a n a g e ri n t e r f a c e s x o p e n x a 接口的一个j a v a 映射,由j t s 中的资源管理器提供实现。它提 供了一组方法,用以完成启动或者停止一个事务:为当前资源准备事务;终止 当前资源上的所有事务;比较当前资源管理器与另一个资源管理器是否相同: 获得、设置一个事务的超时时长等功能。 3 、a p p l i c a t i o ni n t e r f a c e s 应用组件能够实现的唯一接口是s y n c h r o n i z a t i o

温馨提示

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

评论

0/150

提交评论