浅谈用sql实现工作流的并发控制论文

浅谈用sql实现工作流的并发控制论文

ID:25361311

大小:54.00 KB

页数:6页

时间:2018-11-19

浅谈用sql实现工作流的并发控制论文_第1页
浅谈用sql实现工作流的并发控制论文_第2页
浅谈用sql实现工作流的并发控制论文_第3页
浅谈用sql实现工作流的并发控制论文_第4页
浅谈用sql实现工作流的并发控制论文_第5页
资源描述:

《浅谈用sql实现工作流的并发控制论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、浅谈用SQL实现工作流的并发控制论文.freelantieLoeking)和冲突说明(ConflietSPeeifieation),但是工作流的形式过于多种多样,单一的一种解决方法没法满足具体的某一工作流的需要,因而我们在项目开发的实际过程中采用了一种基于将数据和任务分开的方法,类似于操作系统中进程主体与系统资源分开,而进程主体应获得其最小资源的思想。它综合考虑了以下3个因素:①工作流执行的正确性;②工作流的系统性能;③一工作流模型建立和管理的复杂度。我们分析前面两种需要串行化操作才能完成的情况,整个过程基本上都是

2、通过不停地访问数据库来实现的,其中最主要的就是对数据库的读写操作。我们把一组不可分割的数据库操作视为一个原子操作,同时我们把任务或活动主体完成这一操作需要访问的共享资源视为临界资源。多个任务访问和拥有这些资源必须满足“空闲占有,忙则等待”的原则。为了将数据和任务分开,同时能保证数据库中数据的正确性、有效性和一致性,并且能满足数据库中自定义的各种完整性约束规则,我们引入了“数据约束”和“任务约束”。我们的思想是运用类似于典型的并发控制中的“锁”约束来实现数据库的完整性和一致性约束,但是它又不同于“锁”约束。我们引入的

3、“数据约束”和“任务约束”是一个短时间的约束控制,他们随着工作流实例的启动而创建,随着工作流的结束而撤销。另一方面,“数据约束”随工作流或者任务实例的输入参数的不同而不同,不同的实例将建立不同的“数据约束”和“任务约束”。“数据约束”主要是为了保证正确的数据输入能够得到正确的数据输出,同时实现数据库中的各种静态约束、动态约束和自定义约束,而“任务约束”是为了保证工作流中各个任务能够按照他们之间的相互关系、前后顺序正确地执行。在上述工作流中,我们将实现某一活动执行的正确性和控制多个活动间的执行顺序作为两个目标来分开处

4、理。譬如在库存检查中,“数据约束”是为了保证满足库中的物资数量不能低于最低数量的限制,而“任务约束”是为了保证领料单只有在执行完库存检查和计划审批验证后才能执行领料操作。“数据约束”和“任务约束”都在工作流模型设计说明中指定。一个工作流实例通过设定约束和撤销约束来合理调度并发事务,避免并发事务之间的互相干扰造成数据的不一致性,从而提高系统的性能。4并发控制的实现4.1数据约束的实现SQL查询语言作为数据库管理系统中的一个重要组成部分,它提供了极其强大的约束限制实现功能,其中包括关键值约束、域约束、实体完整性约束和参

5、照完整性约束以及各种用户自定义的约束。数据库中的存储过程是经预编译和优化后的SQL语句和流程控制语句的集合。利用它以下的几个特点可以用来实现复杂的业务逻辑:①接受输入的参数后返回结果给调用的过程;②可以调用其他的过程;③可以返回一个状态字,指出调用的成果与失败;④比一般的SQL程序运行速度更快、更简单,使得存储过程更快、更可行。触发器是一种特殊的存储过程,只要表格的数据改变,它会在任何时刻自动调用。其作用体现在以下3个方面:①触发器可以不允许违反参考完整性的操作,这样可取消企图修改数据的事务;②触发器可以执行比用C

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

7、CEDURESetReeeiveCheckP一ReeeiveNumberChar(10),P一MaterialNumberChar(10)ASBeginDeelareP一AmountintSeleetp一Amount=Count(*)FrornAetiveReee计eateriaNumbe二P一Materia1NumberffP一Alnotlnt==0BeginInsertIntoAetiveReeeiveValues(P一ReeeiveNumber,P一MaterialNumberEfidElseReturn(l

8、)End存储过程一开始,在表l中查找是否存在P一MaterialNumber所对应的领料单编号,如果对应的某一领料单编号己经在表中存在,则存储过程返回1—表示该领料单中的这一物资已经被另一领料单锁定,此次锁定操作失败。如果表中还没有存在所对应的领料单编号,则向表中插入一纪录,表示该物资将被这一领料单锁定。一张领料单中可能存在多种物资,当所有物资均能被锁定时,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。