




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、浅谈用SQL实现工作流的并发控制论文关键词:工作流并发控制sql数据约束任务约束论文摘要:工作流技术在信息系统的应用中,并发控制机制的设计是经常要面临的问题。给出一种基于将工作流中数据和任务别离的工作流并发控制机制,在保证工作流正确性的前提下,引入“数据约束和“任务约束的概念来进步工作流的工作性能和降低工作流设计的复杂性,并用数据库中sql语言强有力的约束控制加以实现。1引言工作流是针对工作中具有固定程序的常规活动而提出的一个概念。通过将工作活动分解成定义良好的任务、角色、规那么和过程来进展执行和监控,到达进步消费组织程度和工作效率的目的。一个工作流包括一组活动及它们的互相顺序关系,还包括过程
2、及活动的启动和终止条件,以及对每个活动的描绘川。工作流模型建立的目的是为了实现业务过程自动化和用计算机来执行,这就要求工作流模型不仅可以描绘活动及其他们之间的互相连接关系,而且需要定义其他许多的信息,如组织、数据、资源等,同时对工作流模型的准确性有很高的要求。目前的工作流业务系统对系统运行过程中出现的并发访问和异常错误的解决还存在一定的缺陷。工作流实例在运行过程中,有可能出现多个活动同时访问共享资源的情况,多个活动在数据操作上会互相重叠。为了保证系统可以正常运行,必须进展并发控制(nurreneyntrl),防止出现“脏数据,等现象。在本文中,我们将主要讨论如何用sql来实现工作流的并发控制,
3、防止出现“脏数据等现象。解决这个问题的核心是如何让这些独立的活动可以拥有自己独立的数据,而在某个活动需要访问共享资源而又正被其他活动所拥有时,让其等待。并发控制的实现必须有两个最根本的条件限制:每个活动拥有共享资源的时间应该最短;每个活动应该拥有尽可能少的共享资源4l。同时,我们在寻找解决方法时还应考虑以下两个方面:不能过多地增加工作流设计的难度;尽可能地利用现有数据库系统所提供的效劳功能来实现。为了到达以上的要求,我们引入类似传统“锁机制的“约束机制来实现。这里的“约束是一种临时的、强加在数据项(数据约束)或者任务状态信息(任务约束)上的一致性限制。数据约束主要控制数据项的修改,而任务约束主
4、要控制任务中各个活动间的执行顺序,因此工作流中各活动间的互相关系可以通过控制对数据库的访问和限制各个活动的执行顺序来表达,而这两者的限制均能通过数据库管理系统(dbs)中的sql查询语言来实现。2一个工作流实例工作流根据所实现的业务过程可以分为管理型工作流(adillinistrativerkfl)、设定型工作流(adherkfl)、协作型工作流(llabrative6rkfl)和消费型工作流(prduetinbrkfl)!,。在本文中,我们所讨论的工作流是基于消费型工作流,它应用在一个大规模、复杂和异构的环境下,包括一个周期重复的、可预测的复杂过程,同时,它还要承受和处理来自各个层次和各个方
5、面的数据。下面我们简单介绍一下这一工作流的情况。在图1中所示的工作流是基于一个供电系统内部的物资领料过程。当一份领料单到来时,这一工作流开始启动。领料开票人将领料单中信息输入电子表格同时产生一条新的纪录,接着两个并行任务将被执行:库存检查检查库中物资种类和数量是否可以满足需要;方案审批验证验证该张领料单是否经过相关部门审批。假设上述两个验证均能通过,那么确认领料、产生销售清单、结账,最后从仓库中发料。其中每个任务都要涉及到对数据库的读和写操作。3工作流分解数据和任务的别离在图1中所提到的领料工作流中,有两种典型的情况必须加以说明:在物资管理系统中经常出现多个工作流同时启动,因此开票员将信息输入
6、电子表格的同时必须为每条纪录提供一个唯一且没有冲突的领料编号,但是在这个任务没有完毕前,开票员可能会取消操作或者出现其他异常情况,导致工作流没法正常完毕。为了保证其领料编号的唯一且不冲突只能采用串行化操作;假定一领料单己经执行库存检查和方案审批验证两个任务,而且己经完成结账,但是单子中的物资还没有从库中领走,而此时有另一单子也要求领与上一单子一样的物资,但是库中的物资数量只能满足一张单子的要求,如何解决他们两者之间的冲突,从而不至于违犯数据库的一致性约束,又不得不要求工作流只能采用串行化操作。假设不能有效地解决以上的问题,那这一工作流的系统性能将大打折扣,而且根本没法满足现代业务管理系统的要求
7、。典型的解决方法有at(advanedtransaetindel)方法、transaetinaltaskinte脚tin、语义锁(seantieleking)和冲突说明(nflietspeeifieatin),但是工作流的形式过于多种多样,单一的一种解决方法没法满足详细的某一工作流的需要,因此我们在工程开发的实际过程中采用了一种基于将数据和任务分开的方法,类似于操作系统中进程主体与系统资源分开,而进程主体应获得其最小资源的思想。它综合考虑了以下3个因素:工作流执行的正确性;工作流的系统性能;一工作流模型建立和管理的复杂度。我们分析前面两种需要串行化操作才能完成的情况,整个过程根本上都是通过不停
8、地访问数据库来实现的,其中最主要的就是对数据库的读写操作。我们把一组不可分割的数据库操作视为一个原子操作,同时我们把任务或活动主体完成这一操作需要访问的共享资源视为临界资源。多个任务访问和拥有这些资源必须满足“空闲占有,忙那么等待的原那么。为了将数据和任务分开,同时能保证数据库中数据的正确性、有效性和一致性,并且能满足数据库中自定义的各种完好性约束规那么,我们引入了“数据约束和“任务约束。我们的思想是运用类似于典型的并发控制中的“锁约束来实现数据库的完好性和一致性约束,但是它又不同于“锁约束。我们引入的“数据约束和“任务约束是一个短时间的约束控制,他们随着工作流实例的启动而创立,随着工作流的完
9、毕而撤销。另一方面,“数据约束随工作流或者任务实例的输入参数的不同而不同,不同的实例将建立不同的“数据约束和“任务约束。“数据约束主要是为了保证正确的数据输入可以得到正确的数据输出,同时实现数据库中的各种静态约束、动态约束和自定义约束,而“任务约束是为了保证工作流中各个任务可以按照他们之间的互相关系、前后顺序正确地执行。在上述工作流中,我们将实现某一活动执行的正确性和控制多个活动间的执行顺序作为两个目的来分开处理。譬如在库存检查中,“数据约束是为了保证满足库中的物资数量不能低于最低数量的限制,而“任务约束是为了保证领料单只有在执行完库存检查和方案审批验证后才能执行领料操作。“数据约束和“任务约
10、束都在工作流模型设计说明中指定。一个工作流实例通过设定约束和撤销约束来合理调度并发事务,防止并发事务之间的互相干扰造成数据的不一致性,从而进步系统的性能。4并发控制的实现4.1数据约束的实现sql查询语言作为数据库管理系统中的一个重要组成部分,它提供了极其强大的约束限制实现功能,其中包括关键值约束、域约束、实体完好性约束和参照完好性约束以及各种用户自定义的约束。数据库中的存储过程是经预编译和优化后的sql语句和流程控制语句的集合。利用它以下的几个特点可以用来实现复杂的业务逻辑:承受输入的参数后返回结果给调用的过程;可以调用其他的过程;可以返回一个状态字,指出调用的成果与失败;比一般的sql程序
11、运行速度更快、更简单,使得存储过程更快、更可行。触发器是一种特殊的存储过程,只要表格的数据改变,它会在任何时刻自动调用。其作用表达在以下3个方面:触发器可以不允许违犯参考完好性的操作,这样可取消企图修改数据的事务;触发器可以执行比用hek定义复杂的约束;触发器可发现数据改变前后的不同,然后基于这个不同进展动作。正是因为存储过程和触发器可以提供这么强大的功能,我们在实现“数据约束和“任务约束的过程中使用了比较多的存储过程和触发器。如今我们考虑解决图l中两张领料单领用一样物资的问题。在图2中当领料单输入时开始整个任务过程,根据领料单中的信息建立相关的约束,保证下面活动可以进展串行化操作,接着检查种
12、类和数量,确认可以满足需要时从仓库里发料,减掉相应的数量,最后撤销约束,允许其他任务继续执行。图2中设定领料约束的实现如下:reatjepreduresetreeeivehekp一reeeivenuberhar(10),p一aterialnuberhar(10)asbegindeelarep一auntintseleetp一aunt=unt(*)frrnaetivereee计ehereaterianube二p一ateria1nuberffp一alntlnt=0begininsertintaetivereeeivevalues(p一reeeivenuber,p一aterialnuberefidel
13、sereturn(l)end存储过程一开始,在表l中查找是否存在p一aterialnuber所对应的领料单编号,假设对应的某一领料单编号己经在表中存在,那么存储过程返回1表示该领料单中的这一物资已经被另一领料单锁定,此次锁定操作失败。假设表中还没有存在所对应的领料单编号,那么向表中插入一纪录,表示该物资将被这一领料单锁定。一张领料单中可能存在多种物资,当所有物资均能被锁定时,整个领料约束完成,可以进入下一步。假设在设定过程中有一物资不能被锁定,那么解除对所有领料物资的锁定,这一领料单必须等待。当然在整个并发控制过程中我们也同时引入了任务调度机制,从而保证每个任务都能顺利完成。撤销约束的实现如下
14、:re户l1,epredureunsetreeeiveheekp一reeeivenuberhar(l)asbegindeltefraetivereeeivellerereeivnuberp一reeivenuberend设定约束和撤销约束保证了这一任务可以正确地执行,而检查种类和数量这一过程执行的时间很短,它的串行化操作对系统的性能影响不大,从而能进步整个工作流的性能。4.2任务约束的实现“任务约束是为了保证整个工作流中各个任务的正确执行,它按照工作流中各个任务之间存在的任务关联来设定,而任务关联是根据工作流面向的相关物理模型来抽取的。在图3中我们抽取了一个典型的工作流模型,它描绘了各个任务之间
15、的前趋关系。任务tz、t3必须在任务tl完成的前提下才能执行,而t4、ts只能在t3完成的前提下才能执行,最后任务t6在tz、t4、ts全部完成的情况下才能启动。为了保证上述任务可以正确地按序执行,我们在每个任务启动前加上一定的约束条件,只有当这些条件满足时任务才能执行,而在条件未满足前必须等待。这些约束包括静态约束和动态约束。静态约束是在工作流设计阶段,设计者根据各个任务间存在的关联制定的,而动态约束那么是工作流在运行时,根据任务内部数据间存在的逻辑性而动态设定和撤销。在图4中我们抽取了方案单审批过程中的一个工作流模型,对于一方案单,由于它所属方案的类别和其他一些特殊因素,对不同的方案单可能
16、会采取不同的审批流程,因此我们采取动态约束来实现对它的任务约束。不管静态约束还是动态约束,它们均能通过存储过程和触发器来实现。其详细的实现过程类似上节所述数据约束的实现。5完毕语工作流的并发控制主要应该考虑3个方面的因素:正确性:并发执行的任务之间不能互相干扰:性能:并发执行的各个任务应占用最少的系统资源;复杂性:工作流的建立和管理必须简单易行。我们正是从以上3个方面考虑,引入了“数据约束和“任务约束来进步工作流的性能和保证工作流的正确执行,同时利用数据库中sql语言强有力的约束控制实现才能,使得我们的解决方法更加简单和高效。参考文献:1范玉顺,等.工作流管理技术根底l.北京:清华大学出版社,2001.2bernsteinphadzilaesgdanvneurreneyntrlandre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 结对指导教师代表发言稿
- 2025年山东省聊城市高三一模地理试题(解析版)
- 2024年CFA全方位备考试题及答案
- 2024年CFA考试前沿试题及答案
- CFA考试全景解析试题及答案
- 2024年特许金融分析师考试自我评估与试题及答案
- 突破CFA考试障碍的试题及答案
- CFA相关的经济学知识试题及答案
- 2024年CFA考试试题及答案解析
- 龋齿的预防和矫正教案
- 大学生实习证明模板(8篇)
- Unit 3 My hometown Grammar 课件 2024-2025学年译林版英语七年级下册
- 商业建筑中央空调清洗方案
- 2025年辽宁医药职业学院单招职业技能考试题库附答案
- 2025年度测绘资质借用合作协议书
- 2023年贵州省三支一扶考试真题
- 舞台剧联合投资协议书范本
- 《食品卫生安全知识培训》课件
- 北京市房山区2024-2025学年九年级上学期期末英语试题(含答案)
- DB34-T 4665-2024 高速公路建设项目决算文件编制规范
- 江苏教育报刊总社公开招聘4人高频重点提升(共500题)附带答案详解
评论
0/150
提交评论