




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-本文为网络收集精选范文、公文、论文、和其他应用文档,如需本文,请下载-浅谈用SQL实现工作流的并发控制的论文本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意!论文关键词:工作流并发控制sql数据约束任务约束 论文摘要:工作流技术在信息系统的应用中,并发控制机制的设计是经常要面临的问题。给出一种基于将工作流中数据和任务分离的工作流并发控制机制,在保证工作流正确性的前提下,引入“数据约束”和“任务约束”的概念来提高工作流的工作性能和降低工作流设计的复杂性,并用数据库中sql语言强有力的约束控制加以实现。 1引言 工作流是针对工作中具有固定程序的常规活动而提出的一个概念。通过将工作活动分解成定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平和工作效率的目的。一个工作流包括一组活动及它们的相互顺序关系,还包括过程及活动的启动和终止条件,以及对每个活动的描述川。工作流模型建立的目的是为了实现业务过程自动化和用计算机来执行,这就要求工作流模型不仅能够描述活动及其他们之间的相互连接关系,而且需要定义其他许多的信息,如组织、数据、资源等,同时对工作流模型的准确性有很高的要求。 目前的工作流业务系统对系统运行过程中出现的并发访问和异常错误的解决还存在一定的缺陷。工作流实例在运行过程中,有可能出现多个活动同时访问共享资源的情况,多个活动在数据操作上会相互重叠。为了保证系统能够正常运行,必须进行并发控制(concurreneycontrol),防止出现“脏数据”,等现象。 在本文中,我们将主要讨论如何用sql来实现工作流的并发控制,防止出现“脏数据”等现象。解决这个问题的核心是如何让这些独立的活动能够拥有自己独立的数据,而在某个活动需要访问共享资源而又正被其他活动所拥有时,让其等待。并发控制的实现必须有两个最基本的条件限制:每个活动拥有共享资源的时间应该最短;每个活动应该拥有尽可能少的共享资源4l。同时,我们在寻找解决方法时还应考虑以下两个方面:不能过多地增加工作流设计的难度;尽可能地利用现有数据库系统所提供的服务功能来实现。 为了达到以上的要求,我们引入类似传统“锁”机制的“约束”机制来实现。这里的“约束”是一种临时的、强加在数据项(数据约束)或者任务状态信息(任务约束)上的一致性限制。数据约束主要控制数据项的修改,而任务约束主要控制任务中各个活动间的执行顺序,因而工作流中各活动间的相互关系可以通过控制对数据库的访问和限制各个活动的执行顺序来体现,而这两者的限制均能通过数据库管理系统(dbms)中的sql查询语言来实现。 2一个工作流实例 工作流根据所实现的业务过程可以分为管理型工作流(adillinistrativew rkflow)、设定型工作流(adhoeworkflow)、协作型工作流(collaborativew6rkflow)和生产型工作流(produetionwbrkflow)!,。在本文中,我们所讨论的工作流是基于生产型工作流,它应用在一个大规模、复杂和异构的环境下,包括一个周期重复的、可预测的复杂过程,同时,它还要接受和处理来自各个层次和各个方面的数据。下面我们简单介绍一下这一工作流的情况。 在图1中所示的工作流是基于一个供电系统内部的物资领料过程。当一份领料单到来时,这一工作流开始启动。领料开票人将领料单中信息输入电子表格同时产生一条新的纪录,接着两个并行任务将被执行:库存检查检查库中物资种类和数量是否能够满足需要;计划审批验证验证该张领料单是否经过相关部门审批。如果上述两个验证均能通过,则确认领料、产生销售清单、结账,最后从仓库中发料。其中每个任务都要涉及到对数据库的读和写操作。 3工作流分解数据和任务的分离 在图1中所提到的领料工作流中,有两种典型的情况必须加以说明:在物资管理系统中经常出现多个工作流同时启动,因而开票员将信息输入电子表格的同时必须为每条纪录提供一个唯一且没有冲突的领料编号,但是在这个任务没有结束前,开票员可能会取消操作或者出现其他异常情况,导致工作流没法正常结束。为了保证其领料编号的唯一且不冲突只能采用串行化操作;假定一领料单己经执行库存检查和计划审批验证两个任务,而且己经完成结账,但是单子中的物资还没有从库中领走,而此时有另一单子也要求领与上一单子相同的物资,但是库中的物资数量只能满足一张单子的要求,如何解决他们两者之间的冲突,从而不至于违反数据库的一致性约束,又不得不要求工作流只能采用串行化操作。 如果不能有效地解决以上的问题,那这一工作流的系统性能将大打折扣,而且根本没法满足现代业务管理系统的要求。典型的解决方法有atm(advancedtransaetionmodel)方法、transaetionaltaskinte脚tion、语义锁(semantieloeking)和冲突说明(conflietspeeifieation),但是工作流的形式过于多种多样,单一的一种解决方法没法满足具体的某一工作流的需要,因而我们在项目开发的实际过程中采用了一种基于将数据和任务分开的方法,类似于操作系统中进程主体与系统资源分开,而进程主体应获得其最小资源的思想。它综合考虑了以下3个因素:工作流执行的正确性;工作流的系统性能;一工作流模型建立和管理的复杂度。 我们分析前面两种需要串行化操作才能完成的情况,整个过程基本上都是通过不停地访问数据库来实现的,其中最主要的就是对数据库的读写操作。我们把一组不可分割的数据库操作视为一个原子操作,同时我们把任务或活动主体完成这一操作需要访问的共享资源视为临界资源。多个任务访问和拥有这些资源必须满足“空闲占有,忙则等待”的原则。 为了将数据和任务分开,同时能保证数据库中数据的正确性、有效性和一致性,并且能满足数据库中自定义的各种完整性约束规则,我们引入了“数据约束”和“任务约束”。我们的思想是运用类似于典型的并发控制中的“锁”约束来实现数据库的完整性和一致性约束,但是它又不同于“锁”约束。我们引入的“数据约束”和“任务约束”是一个短时间的约束控制,他们随着工作流实例的启动而创建,随着工作流的结束而撤销。另一方面,“数据约束”随工作流或者任务实例的输入参数的不同而不同,不同的实例将建立不同的“数据约束”和“任务约束”。“数据约束”主要是为了保证正确的数据输入能够得到正确的数据输出,同时实现数据库中的各种静态约束、动态约束和自定义约束,而“任务约束”是为了保证工作流中各个任务能够按照他们之间的相互关系、前后顺序正确地执行。在上述工作流中,我们将实现某一活动执行的正确性和控制多个活动间的执行顺序作为两个目标来分开处理。譬如在库存检查中,“数据约束”是为了保证满足库中的物资数量不能低于最低数量的限制,而“任务约束”是为了保证领料单只有在执行完库存检查和计划审批验证后才能执行领料操作。 “数据约束”和“任务约束”都在工作流模型设计说明中指定。一个工作流实例通过设定约束和撤销约束来合理调度并发事务,避免并发事务之间的互相干扰造成数据的不一致性,从而提高系统的性能。 4并发控制的实现 数据约束的实现 sql查询语言作为数据库管理系统中的一个重要组成部分,它提供了极其强大的约束限制实现功能,其中包括关键值约束、域约束、实体完整性约束和参照完整性约束以及各种用户自定义的约束。数据库中的存储过程是经预编译和优化后的sql语句和流程控制语句的集合。利用它以下的几个特点可以用来实现复杂的业务逻辑:接受输入的参数后返回结果给调用的过程;可以调用其他的过程;可以返回一个状态字,指出调用的成果与失败;比一般的sql程序运行速度更快、更简单,使得存储过程更快、更可行。 触发器是一种特殊的存储过程,只要表格的数据改变,它会在任何时刻自动调用。其作用体现在以下3个方面:触发器可以不允许违反参考完整性的操作,这样可取消企图修改数据的事务;触发器可以执行比用check定义复杂的约束;触发器可发现数据改变前后的不同,然后基于这个不同进行动作。正是因为存储过程和触发器能够提供这么强大的功能,我们在实现“数据约束”和“任务约束”的过程中使用了比较多的存储过程和触发器。现在我们考虑解决图l中两张领料单领用相同物资的问题。 在图2中当领料单输入时开始整个任务过程,根据领料单中的信息建立相关的约束,保证下面活动能够进行串行化操作,接着检查种类和数量,确认能够满足需要时从仓库里发料,减掉相应的数量,最后撤销约束,允许其他任务继续执行。图2中设定领料约束的实现如下: creat jeproceduresetreeeivecheck p一reeeivenumberchar(10), p一materialnumberchar(10) as begin deelare p一amountint seleetp一amount=count(*) frornaetivereee计e wheremateria numbe二p一materia1number ffp一alnotlnt=0 begin insertintoaetivereeeive values(p一reeeivenumber,p一materialnumber efid else return(l) end 存储过程一开始,在表l中查找是否存在p一materialnumber所对应的领料单编号,如果对应的某一领料单编号己经在表中存在,则存储过程返回1表示该领料单中的这一物资已经被另一领料单锁定,此次锁定操作失败。如果表中还没有存在所对应的领料单编号,则向表中插入一纪录,表示该物资将被这一领料单锁定。一张领料单中可能存在多种物资,当所有物资均能被锁定时,整个领料约束完成,可以进入下一步。如果在设定过程中有一物资不能被锁定,则解除对所有领料物资的锁定,这一领料单必须等待。当然在整个并发控制过程中我们也同时引入了任务调度机制,从而保证每个任务都能顺利完成。 撤销约束的实现如下: cre户l1,eprocedureunsetreeeivecheek p一reeeivenumberchar(lo) as begin delctefromaetivereeeive wllerereceiv number p一receivenumber end 设定约束和撤销约束保证了这一任务能够正确地执行,而检查种类和数量这一过程执行的时间很短,它的串行化操作对系统的性能影响不大,从而能提高整个工作流的性能。 任务约束的实现 “任务约束”是为了保证整个工作流中各个任务的正确执行,它依照工作流中各个任务之间存在的任务关联来设定,而任务关联是根据工作流面向的相关物理模型来抽取的。 在图3中我们抽取了一个典型的工作流模型,它描述了各个任务之间的前趋关系。任务tz、t3必须在任务tl完成的前提下才能执行,而t4、ts只能在t3完成的前提下才能执行,最后任务t6在tz、t4、ts全部完成的情况下才能启动。为了保证上述任务能够正确地按序执行,我们在每个任务启动前加上一定的约束条件,只有当这些条件满足时任务才能执行,而在条件未满足前必须等待。这些约束包括静态约束和动态约束。静态约束是在工作流设计阶段,设计者根据各个任务间存在的关联制定的,而动态约束则是工作流在运行时,根据任务内部数据间存在的逻辑性而动态设定和撤销。 在图4中我们抽取了计划单审批过程中的一个工作流模型,对于一计划单,由于它所属计划的类别和其他一些特殊因素,对不同的计划单可能会采取不同的审批流程,因而我们采取动态约束来实现对它的任务约束。不管静态约束还是动态约束,它们均能通过存储过程和触发器来实现。其具体的实现过程类似上节所述数据约束的实现。 5结束语 工作流的并发控制主要应该考虑3个方面的因素:正确性:并发执行的任
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程电气答辩题库及答案
- 农村供水设备采购与安装方案
- 老旧厂区改造建设工程项目环境影响报告书
- 玉米出口贸易代理服务合同范本
- 离婚协议中知识产权分割及补偿协议范本
- 道路危险货物运输合同签订安全评估与应急处理
- 水厂水质升级改造工程技术方案
- 离婚协议书起草及财产分割方案协商合同
- 离婚抚养权分配协议:男方获得孩子抚养权及监护权
- 夫妻协议离婚及出轨方赔偿金支付及财产分割协议
- DB5117∕T 56-2022 反恐怖防范管理基本规范
- 加快健康中国建设课件
- 2024年新疆鄯善县人民医院公开招聘护理工作人员试题带答案详解
- 买卖矿山居间合同协议
- 厌氧氨氧化工艺优化-洞察及研究
- 河北省单招7类数学试卷
- 下列不属于交通运输企业安全生产费用支出
- 患者安全管理培训课件
- 地质勘查成果管理办法
- (零诊)成都市2023级(2026届)高中毕业班摸底测试英语试卷(含答案)
- 消防作战指挥课件
评论
0/150
提交评论