浅谈用SQL实现工作流的并发控制_第1页
浅谈用SQL实现工作流的并发控制_第2页
浅谈用SQL实现工作流的并发控制_第3页
浅谈用SQL实现工作流的并发控制_第4页
全文预览已结束

下载本文档

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

文档简介

1、浅谈用SQL实现工作流的并发控制         09-11-19 10:52:00     作者:陈根浪王泽兵冯雁    编辑:studa090420论文关键词:工作流并发控制SQL数据约束任务约束 论文摘要:工作流技术在信息系统的应用中,并发控制机制的设计是经常要面临的问题。给出一种基于将工作流中数据和任务分离的工作流并发控制机制,在保证工作流正确性的前提下,引入“数据约束”和“任务约束”的概念来提高工作流的工作性能和降低工作流设计

2、的复杂性,并用数据库中sQL语言强有力的约束控制加以实现。 1引言 工作流是针对工作中具有固定程序的常规活动而提出的一个概念。通过将工作活动分解成定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平和工作效率的目的。一个工作流包括一组活动及它们的相互顺序关系,还包括过程及活动的启动和终止条件,以及对每个活动的描述川。工作流模型建立的目的是为了实现业务过程自动化和用计算机来执行,这就要求工作流模型不仅能够描述活动及其他们之间的相互连接关系,而且需要定义其他许多的信息,如组织、数据、资源等,同时对工作流模型的准确性有很高的要求。 目前的工作流业务系统对系统运行过程中出现的并发访问

3、和异常错误的解决还存在一定的缺陷。工作流实例在运行过程中,有可能出现多个活动同时访问共享资源的情况,多个活动在数据操作上会相互重叠。为了保证系统能够正常运行,必须进行并发控制(ConcurreneyControl),防止出现“脏数据”,等现象。 在本文中,我们将主要讨论如何用SQL来实现工作流的并发控制,防止出现“脏数据”等现象。解决这个问题的核心是如何让这些独立的活动能够拥有自己独立的数据,而在某个活动需要访问共享资源而又正被其他活动所拥有时,让其等待。并发控制的实现必须有两个最基本的条件限制:每个活动拥有共享资源的时间应该最短;每个活动应该拥有尽可能少的共享资源4l。同时,我们在寻找解决方

4、法时还应考虑以下两个方面:不能过多地增加工作流设计的难度;尽可能地利用现有数据库系统所提供的服务功能来实现。 为了达到以上的要求,我们引入类似传统“锁”机制的“约束”机制来实现。这里的“约束”是一种临时的、强加在数据项(数据约束)或者任务状态信息(任务约束)上的一致性限制。数据约束主要控制数据项的修改,而任务约束主要控制任务中各个活动间的执行顺序,因而工作流中各活动间的相互关系可以通过控制对数据库的访问和限制各个活动的执行顺序来体现,而这两者的限制均能通过数据库管理系统(DBMs)中的SQL查询语言来实现。 2一个工作流实例 工作流根据所实现的业务过程可以分为管理型工作流(Adillinist

5、rativeW rkflow)、设定型工作流(AdhoeWOrkflow)、协作型工作流(CollaborativeW6rkflow)和生产型工作流(ProduetionWbrkflow)!,。在本文中,我们所讨论的工作流是基于生产型工作流,它应用在一个大规模、复杂和异构的环境下,包括一个周期重复的、可预测的复杂过程,同时,它还要接受和处理来自各个层次和各个方面的数据。下面我们简单介绍一下这一工作流的情况。 在图1中所示的工作流是基于一个供电系统内部的物资领料过程。当一份领料单到来时,这一工作流开始启动。领料开票人将领料单中信息输入电子表格同时产生一条新的纪录,接着两个并行任务将被执

6、行:库存检查检查库中物资种类和数量是否能够满足需要;计划审批验证验证该张领料单是否经过相关部门审批。如果上述两个验证均能通过,则确认领料、产生销售清单、结账,最后从仓库中发料。其中每个任务都要涉及到对数据库的读和写操作。 3工作流分解数据和任务的分离 在图1中所提到的领料工作流中,有两种典型的情况必须加以说明:在物资管理系统中经常出现多个工作流同时启动,因而开票员将信息输入电子表格的同时必须为每条纪录提供一个唯一且没有冲突的领料编号,但是在这个任务没有结束前,开票员可能会取消操作或者出现其他异常情况,导致工作流没法正常结束。为了保证其领料编号的唯一且不冲突只能采用串行化操作;假定一领料单己经执

7、行库存检查和计划审批验证两个任务,而且己经完成结账,但是单子中的物资还没有从库中领走,而此时有另一单子也要求领与上一单子相同的物资,但是库中的物资数量只能满足一张单子的要求,如何解决他们两者之间的冲突,从而不至于违反数据库的一致性约束,又不得不要求工作流只能采用串行化操作。 如果不能有效地解决以上的问题,那这一工作流的系统性能将大打折扣,而且根本没法满足现代业务管理系统的要求。典型的解决方法有ATM(AdvancedTransaetionModel)方法、TransaetionalTaskInte脚tion、语义锁(SemantieLoeking)和冲突说明(ConflietSPeeifiea

8、tion),但是工作流的形式过于多种多样,单一的一种解决方法没法满足具体的某一工作流的需要,因而我们在项目开发的实际过程中采用了一种基于将数据和任务分开的方法,类似于操作系统中进程主体与系统资源分开,而进程主体应获得其最小资源的思想。它综合考虑了以下3个因素:工作流执行的正确性;工作流的系统性能;一工作流模型建立和管理的复杂度。 我们分析前面两种需要串行化操作才能完成的情况,整个过程基本上都是通过不停地访问数据库来实现的,其中最主要的就是对数据库的读写操作。我们把一组不可分割的数据库操作视为一个原子操作,同时我们把任务或活动主体完成这一操作需要访问的共享资源视为临界资源。多个任务访问和拥有这些

9、资源必须满足“空闲占有,忙则等待”的原则。 为了将数据和任务分开,同时能保证数据库中数据的正确性、有效性和一致性,并且能满足数据库中自定义的各种完整性约束规则,我们引入了“数据约束”和“任务约束”。我们的思想是运用类似于典型的并发控制中的“锁”约束来实现数据库的完整性和一致性约束,但是它又不同于“锁”约束。我们引入的“数据约束”和“任务约束”是一个短时间的约束控制,他们随着工作流实例的启动而创建,随着工作流的结束而撤销。另一方面,“数据约束”随工作流或者任务实例的输入参数的不同而不同,不同的实例将建立不同的“数据约束”和“任务约束”。“数据约束”主要是为了保证正确的数据输入能够得到正确的数据输

10、出,同时实现数据库中的各种静态约束、动态约束和自定义约束,而“任务约束”是为了保证工作流中各个任务能够按照他们之间的相互关系、前后顺序正确地执行。在上述工作流中,我们将实现某一活动执行的正确性和控制多个活动间的执行顺序作为两个目标来分开处理。譬如在库存检查中,“数据约束”是为了保证满足库中的物资数量不能低于最低数量的限制,而“任务约束”是为了保证领料单只有在执行完库存检查和计划审批验证后才能执行领料操作。 “数据约束”和“任务约束”都在工作流模型设计说明中指定。一个工作流实例通过设定约束和撤销约束来合理调度并发事务,避免并发事务之间的互相干扰造成数据的不一致性,从而提高系统的性能。 4并发控制

11、的实现 4.1数据约束的实现 SQL查询语言作为数据库管理系统中的一个重要组成部分,它提供了极其强大的约束限制实现功能,其中包括关键值约束、域约束、实体完整性约束和参照完整性约束以及各种用户自定义的约束。数据库中的存储过程是经预编译和优化后的SQL语句和流程控制语句的集合。利用它以下的几个特点可以用来实现复杂的业务逻辑:接受输入的参数后返回结果给调用的过程;可以调用其他的过程;可以返回一个状态字,指出调用的成果与失败;比一般的SQL程序运行速度更快、更简单,使得存储过程更快、更可行。 触发器是一种特殊的存储过程,只要表格的数据改变,它会在任何时刻自动调用。其作用体现在以下3个方面:触发器可以不

12、允许违反参考完整性的操作,这样可取消企图修改数据的事务;触发器可以执行比用CHECK定义复杂的约束;触发器可发现数据改变前后的不同,然后基于这个不同进行动作。正是因为存储过程和触发器能够提供这么强大的功能,我们在实现“数据约束”和“任务约束”的过程中使用了比较多的存储过程和触发器。现在我们考虑解决图l中两张领料单领用相同物资的问题。 在图2中当领料单输入时开始整个任务过程,根据领料单中的信息建立相关的约束,保证下面活动能够进行串行化操作,接着检查种类和数量,确认能够满足需要时从仓库里发料,减掉相应的数量,最后撤销约束,允许其他任务继续执行。图2中设定领料约束的实现如下: CREAT JEPROCEDURESetReeeiveCheck P一ReeeiveNumberChar(10), P一MaterialNumberChar(10) AS Begin Deelare P一Amountint S

温馨提示

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

评论

0/150

提交评论