工作流事务处理的应用解决方案_第1页
工作流事务处理的应用解决方案_第2页
工作流事务处理的应用解决方案_第3页
工作流事务处理的应用解决方案_第4页
工作流事务处理的应用解决方案_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、工作流事务处理的应用解决方案第11卷第1期2006年3月集美大学(自然科学版)JournalofJimeiUniversity(NaturalScience)V01.11No.1Mar.2oo6文章编号10077405(2006)O1-005804工作流事务处理的应用解决方案林春莺(集美大学理学院,福建厦门)摘要】对事务处理模型做了简要的介绍,着重讨论了高级事务模型conTract8,并提出了一套工作流事务处理的应用解决方案.关键词】工作流;工作流事务;ConTracts中图分类号】TP3ll文献标识码AO引言随着信息技术的发展,通过基于工作流的自动化管理来提高效率已成为一种趋势,对工作流技术

2、的研究和应用也引起了许多研究人员的普遍关注.目前的工作流产品所具有的事务处理能力都远远不能满足实际企业的要求,而这也是工作流管理系统在实际应用推广中所遇到的主要障碍之一.1传统的事务模型(ACID)事务就是要求应用维护一个工作单元的成功或失败.在失败的情况下,所有资源要把数据状态返回到以前的状态.事务具有以下特性:1)原子性(atomicity).所有关于一个事务的操作必须当成一个原子单元,即要么所有的操作都成功执行,要么一个也不被执行;2)一致性(consistency).事务操作得到的结果必须保证是一致的,如对于数据库的操作生成的新的数据库状态(数据)必须满足数据库的一致性(完整性)约束;

3、3)隔离性(isolation).在事务状态下执行的任何操作如同它在一个单用户环境下执行操作一样,不受其他并行操作的任何影响;4)持久性(durability).事务提交后,对数据的操作结果不会丢失,将持久保留.2工作流活动的事务分析工作流事务的主要目标是提供定义,控制长活动,复杂,并发计算的机制,一致性控制,并发控制和错误恢复的能力.在长活动的管理中,传统数据库的不足在于把事务看作并发的孤立的单元,没有定义事务之问的依赖关系,如是控制流或是语义连接.工作流中的活动具有运行时间长,运行过程复杂的特点.1)长活动传统事务都是针对短事务,但工作流中的事务通常执行时问长,涉及到很多对象,有复杂的控制

4、逻辑.长活动作为单独的ACID事务执行会严重拖延其他高优先级的短事务的执行.2)放松的隔离性带来的并发,合作问题如果子活动(子事务)将未提交的结果暴露给外部或者其他的子事务,在高层可以实现并发和合作.但如果父事务失败,则需要补偿所有已经提交的子事收稿日期】20041110f作者简介林春莺(1971一),女,讲师,从事办公自动化系统方向研究.第1期林春莺:工作流事务处理的应用解决方案?59?务.如果补偿活动存在,则放松的隔离性增加并发性.但补偿事务并不总是存在的,这样的活动称为关键活动,关键活动的补偿活动必须成功执行才能确保一致性.3)依赖于应用(用户)的错误原子性Allornothing对于工

5、作流活动太严格太低效.例如,如果因为一个不重要的子活动失败就回退整个工作流活动(可能是一天的工作)是不现实的.避免这个问题可以采用可选活动的方法解决,在一个不重要的活动失败时,执行可选活动,或者重新执行活动以使整个工作流可以继续进行.3工作流活动事务的备选方案如前所述,为了更好地描述工作流事务特征和解决工作流事务处理问题,人们在数据库事务模型的基础上提出了许多高级事务模型.包括嵌套事务模型【2(如:卡内基梅隆大学的Camelot原型系统,加州大学洛杉矶分校的Locus系统,麻省理工的Args项目等),分支/汇合事务模型2(美国哥伦比亚大学提出)等.高级事务模型通常把一系列的操作分组成为层次化的

6、结构,并且放宽了经典事务模型对ACID特征的要求,以便适应不同性质的实际问题.高级事务模型的基本原理主要基于以下两个方面:1)两阶段提交.两阶段提交提供了一个事务协调器,它根据这样一种思想来控制事务:不允许提交任何成分事务,除非它们能够全部提交.JTS(JavaTransactionalService),CORBA0TS和大多数数据库管理系统中都使用这种事务协调器来确保原子陛的方法.但是两阶段提交协议包括一种或其它形式的资源锁定.较长时间地锁定资源会导致严重的可伸缩性问题,在事务生存时间很短的封闭环境中很有效,但在工作流事务中(可能跨越几小时,甚至几天的开放环境中)就不是很有效.2)补偿的方法

7、.另一种被称为补偿的方法是基于这样一种思想:一直允许提交事务,但在提交后可以取消它的影响和活动.在补偿事务中,每个真正的事务都有一个相关联的补偿事务.这个补偿事务元素描述了一种方法,这种方法是还原真正的事务造成的变化并返回到先前一致的状态.如果任何事务异常终止,调用者都会为先前提交的所有事务执行相应的补偿事务.4ConTracts模型ConTracts模型是AndreasReuter等人在德国Stuttgart大学的ConTracts研究项目中提出的.ConTracts模型提出了自己的高级数据模型和高级并发控制机制,已经具备了一定的工作流描述能力.ConTracst模型基本思想是将一个复杂业务

8、分解为小的工作单元(活动),活动包含任务,确保可靠的流控制J.4.1活动和任务定义ConTracts模型的基本组成是活动和任务.活动可以递归包括其他活动.嵌套活动组成一棵活动树.活动边界代表不同的控制结构,叶子代表工作的基本单元(ACID事务,一个应用程序或者人机交互).除了根活动,每一个任务和活动都有父活动|2.4.2活动和任务执行所有活动和任务都是在高级事务管理器的控制下执行.ConTracts事务模型的主要特点是:1)放松的原子性.每一个应用有自己的错误原子性,一个工作流可以在任务未成功结束时继续向前推进.2)放松的串行性.不必让整个的工作流作为一个单独的事务来获取一致性.一致性由用户自

9、定义的语义串性行来保证.3)放松的隔离性.如果有补偿活动,活动可以把未提交的结果暴露给外部并释放资源来获得更高级别的并发性2J.?6O?集美大学(自然科学版)第11卷5工作流事务管理实现笔者在ConTracts模型的基础之上,提出了一套事务管理的实现机制,该机制遵循了Wfmc工作流管理联盟提出的工作流规范(XPDL标准).根据该机制,笔者在J2EE平台上开发了一套工作流事务处理构件,由于该构件具备支持xPDL开放性的工作流定义标准的特性,使得该构件可以很方便地与遵循Wfmc工作流规范的工作流管理系统进行集成,具备了较强的通用性和可扩展性.5.1实现机制1)根据一个process中的activi

10、ty之间的耦合程度,将其划分为几个相对独立的长事务.对一个process中存在多个的事务管理器(transactionmananger在engine包)管理各自的长事务.2)对一个长事务中将活动分为几种类型:NOCRITICALTYPE.当子活动对父活动的成功提交是不重要,如果一个NONVITAL活动失败后,工作流可以继续向前推进,不需要补偿动作.()UNDOABLETYPE.提交的任务可以通过相关的补偿任务来取消,并且不产生副作用.假设S是t时刻的数据库状态,是原始的任务,是补偿任务.S是执行之后的数据库状态,执行之后执行,则数据库状态恢复到S.(例如,一客户订了住宿,之后,他取消了住宿但不

11、需要付额外费用).()COMPENSATABLETYPE.提交的事务可以通过执行补偿活动从语义上取消,但会产生副作用.如前面的例子,S是执行前的数据库状态,S是执行后的数据库状态,但执行,后,数据库状态不能完全等同于s.(如,一客户订了航班,之后,他取消了航班但需要付额外费用).FORCETYPE.在现实世界中,一些任务总是能成功执行(打开一个账户总是可能的).在错误出现时,这样的任务可以重复和反复执行,直到正确执行.REPLACABLETYPE.当活动执行失败时,执行可以替代的活动.而不用将整个长事务回滚,例如,住宿预定可以是控制类型中的预备(如在A宾馆没有房间,则在B宾馆预定).CRITI

12、CAL_TYPE.如果一个关键活动失败,启动补偿机制.如果一个关键活动失败,整个执行顺序失败,所有前面提交的活动都需要补偿.以上的活动事务类型,可在xpdl定义中进行扩展.例如:<xsd:Transactions><xsd!TransactionId=TransactionalName=befdecide><xsd:Activities><xsd:ActivityIda_CheckOrderType=UNDOLABLE>活动事务类型<xsd:Tools><xsd:ToolId=CheekOrder_undoType=APPHCA

13、ON>活动补偿事务<xsd:ActualParameters><xsd:ActualParameter>undolable</xsd:ActualParameter>补偿事务需要的参数</xsd:ActualParameters></xsd:Tool></xsd:Tools></xsd.Activity>_用自定义的parser(corn.jmL1.workflow.definition.parser.dom4j.TransactionParser)解析,生成transaction包(com.jmL1.w

14、orkflow.definition.transaction).3)在活动start时,判断是否属于事务以及是否是事务头活动(长事务的开始活动),如果是则分别触发以下事件,在transactionmanager中响应.在头活动开始时FirstTransActivityStarted():将DB中的各个表进行备份,将wfrelevantdata第1期林春莺:工作流事务处理的应用解决方案-6l?-#transactiondata.在wfactivity,wfassignment,wftransition表进行state备份,并添加事务Id,以便长事务回滚时,进行恢复.将内存中的process中的A

15、ctivityList和notOutGoingList进行备份.每个事务活动开始时TransActivityStarted():将本活动所影响到的相关数据备份.以便活动节点失败时,恢复相关数据.活动失败时ActivityFailed():根据活动的事务类型:a)NOCRITICALTYPE;b)UNDOABLETYPE;C)COMPENSATABLETYPE;d)REPLACABLETYPE;e)FORCE一rYPE;f)CRITICAL.IYPE,分别调用不同的处理方式,即corn.jmu.workflow.engine.TransactionManager中的RecoverNoCritic

16、al();RecoverUndoable();RecoverCompensatable();RecoverReplacable();RecoverForceable();RecoverCritical().当活动是关键活动时,会引起整个长事务回滚,将事务头活动开始时备份的DB和内存的相关数据和状态恢复;将长事务中已经执行的,需要补偿的活动一一补偿.找到事务头活动,将头活动状态(包括其包含的assignment状态)置为初始,重新开始.6结束语工作流管理技术是近年来在计算机应用领域发展最为迅速的几项新技术之一,其主要特征是实现人与计算机交互事件结合的过程中的自动化.它作为现代企业实现过程管理与过

17、程控制的一项关键技术,为企业的经营过程提供了一个模型建立,管理,运行,分析的完整框架.然而,目前,大多数的工作流产品对工作流事务管理都没有较好的解决方案,事务问题已经成为工作流发展的瓶颈.解决好事务管理,必将大大推进工作流的发展.参考文献1范玉顺,吴澄.工作流管理技术研究与产品现状及发展趋势J.计算机集成制造系统CIMS,2000,6(1):l-72范玉顺.工作流管理技术基础M.北京:清华大学出版社,2001.3DeepakAlur,JohnCrupi,DanMalks.j2ee核心模式M.牛志奇,译.北京:机械工业出版社,2001.4WFMCTC.1025.工作流管理联盟工作流标准S.AppliedSolutionofWorkflowTransactionLINChunying(SchoolofScience

温馨提示

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

评论

0/150

提交评论