[发明专利]一种工作流并发模式的控制方法及装置有效
申请号: | 201010601773.7 | 申请日: | 2010-12-22 |
公开(公告)号: | CN102043669A | 公开(公告)日: | 2011-05-04 |
发明(设计)人: | 温良;吴旭春;赵克强 | 申请(专利权)人: | 中国农业银行股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06Q10/00 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 逯长明;王宝筠 |
地址: | 100005 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 工作流 并发 模式 控制 方法 装置 | ||
技术领域
本发明涉及数据处理领域,特别是涉及一种工作流并发模式的控制方法及装置。
背景技术
在一个流程实例中,可能会存在多个对象,这些对象可以被不同的人或机器在同一时刻进行操作,就会形成并发,而这种模式称为工作流并发模式。任务是工作流中一类对象,它一般是现实生活中一些事宜、任务、事项或者步骤的抽象,在流程执行到任务节点的时候产生实例。流程节点可以是多任务节点,执行多任务节点的时候会同时产生多个任务实例,一般这多个任务实例能够被不同的人员同时操作形成并发。流程分支也是工作流中的一类对象,它是流程主线执行到并发分支节点的时候,分裂成多个流程子线同时执行,而这些流程分支能够被不同的人员或机器同时执行,因此也可以形成并发。子流程也是工作流中的一类对象,它能够被其他的流程调用。在本申请文件中,所述的子流程都是同步子流程,即主流程调起子流程后,需要等待子流程的结束才能继续向下执行。多子流程节点是工作流节点的一种类型,执行的时候会同时产生多个子流程实例,一般这多个子流程能够被不同的人员和机器同时执行,因此会形成并发。
在工作流执行模式中,存在大量的并发场景。参考图1所示,是一个多任务节点的多个任务实例的并发场景的流程示意图。参考图2所示,是一个流程实例的多个流程分支的并发场景的流程示意图。参考图3所示,是一个多子流程节点的多个子流程实例的并发场景的流程示意图。对于工作流引擎来说,当并发实例全部执行完成时,会触发流程流转和流程状态变更,而在实际应用中,在每一个实例执行完成时,就需要判断所有兄弟实例是否已经执行完成。
现有技术中有一些对于现有的工作流并发的控制方法,例如查询兄弟对象的方法。该方法的流程如示意图可以参考图4所示,首先需要结束当前实例,然后再查询所有的兄弟实例是否结束,如果都已经结束,则触发流程向下流转;如果尚未全部结束,则结束此次查询操作。
但是该查询兄弟对象的方法,因为在每一个实例结束的时候,都需要查询所有的兄弟实例,以N个兄弟实例为例,在所有并发实例都完成的情况下,涉及到的数据库查询记录条次为N*N条次,总查询量以N的平方指数增长,所以执行时数据查询量较大,进而会导致现有技术中控制工作流并发模式的效率较低。进一步的,当每个并发实例同时执行的时候,它们会同时并行地对所有兄弟实例进行查询,其查询结果很可能已经被其他正在执行的实例篡改,造成“脏读”的现象引起工作流引擎的错误执行,因此现有的控制方法也存在并发冲突。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:如何能够提出一种工作流并发模式的控制方法,用以解决现有技术中数据查询量较大导致的控制效率较低且有可能引起工作流引擎错误执行的问题。
发明内容
本发明所要解决的技术问题是提供一种工作流并发模式的控制方法,用以解决现有技术中数据查询量较大导致的控制效率较低且有可能引起工作流引擎错误执行的问题,进一步的,还能避免并发冲突的现象存在。
本发明的另一个目的是将上述构思应用于具体的应用环境中,提供一种工作流并发模式的控制装置,从而保证该方法的实现和应用。
为解决上述技术问题,本发明实施例提供了一种工作流并发模式的控制方法,包括:
创建当前父实例下的至少两个并发子实例,以及与所述当前父实例对应的计数器对象;
依据所述计数器对象对所述至少两个并发子实例进行控制。
优选的,所述创建与所述当前父实例对应的计数器对象,具体包括:
生成所述计数器对象的编号;
设置所述计数器对象的类型;所述计数器对象的类型包括:并发任务、并发分支或并发子流程;
将所述计数器对象的对象个数和未完成个数的初始值都设置为所述并发子实例的个数。
优选的,还包括:
将所述计数器对象的父实例编号初始化为所述当前父实例的编号;
设置所述计数器对象的创建时间和最后更新时间为当前时间。
优选的,所述依据所述计数器对象对所述至少两个并发子实例进行控制,具体包括:
当前并发子实例结束时,在数据库端锁定所述计数器对象;
当前线程对所述计数器对象的未完成个数执行减一操作;
判断执行减一操作之后的未完成个数是否为零,如果是,则执行所述当前父实例的下一个环节,如果否,则由当前线程解除所述计数器对象的锁定操作。
优选的,还包括:
如果所述执行减一操作之后的未完成个数为零,则将所述计数器对象的结束时间保存为当前时间。
本发明实施例还提供了一种工作流并发模式的控制装置,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国农业银行股份有限公司,未经中国农业银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010601773.7/2.html,转载请声明来源钻瓜专利网。