一种柔性工作流的实现方法及其系统的利记博彩app

文档序号:6400022阅读:236来源:国知局
专利名称:一种柔性工作流的实现方法及其系统的利记博彩app
技术领域
本发明涉及一种柔性工作流技术,特别涉及一种柔性工作流的实现方法及其系统。
背景技术
工作流的概念起源于生产组织和办公自动化领域。其目的是通过将工作分解成定义良好的任务、角色,按照一定的规则和过程来执行这些任务,通过对它们进行监控,以达到提高办事效率、降低生产成本、提高企业生产经营管理水平和企业竞争力的目的。然而随着市场竞争的日益激烈要求企业对其业务过程能够进行快速的重组,企业业务过程的不断变化要求信息系统能够快速重组,如何提高工作流系统的柔性,让工作流系统更好地支持企业业务流程的变化,成为了实现工作流系统的一大挑战。当期研究者提出许多柔性工作流的实现方法,例如:Chiu DKff,Li Q等人采用异常处理的方法,利用ECA(event-condition-action)规则,针对出现变化要求时的不同情况采用不同的处理策略,他们将活动分为如下几个类别:必须的、可选的、可重复的,一方面在出现异常情况时,可以根据活动的属性做出响应处理,另一方面使得一个流程的执行不再是死板地执行所定义的每个活动,但ECA规则的致命缺点是要求异常的处理必须是事先可以预知的。SADIQ S, ORLOffSKA M.通过引入Choice-Merge和XOR-Split等结构,将流程中所有可能路径定义到流程模型中,其缺点在于流程模型过于庞大而不易理解,并且这种方法只有在事先知道不确定因素的所有情况之后才能进行定义,这对于动态流程来说往往是不现实的。Jorg M.Haake, Weigang Wang将CSCW与工作流技术结合起来,用CSCW信息协同的观点来提高工作流系统的柔性。HEINL P, HORN S, JABLONSKI S孙瑞志、史美林提出了黑盒、口袋等方法,该方法在流程建模阶段引入新元素对流程中的不确定因素进行封装,该方法虽然避免了 SADIQ S等人提出的方法所带来的流程定义过于庞大复杂的问题,但没有指出在流程实例运行过程中新加入元素的具体执行方法。综合上述,当前针对柔性工作流的实现方法仍需进一步的研究和改善,需要从更基本的层次上广泛、快速、有效地实现工作流管理系统对业务流程变化的柔性化支持。

发明内容
本发明的首要目的在于克服现有技术的缺点与不足,提出一种柔性工作流的实现方法,该方法以开源工作流引擎jbpm的可执行流程语言框架为基础,有效减少了流程模型的复杂度。本发明的另一目的在于克服现有技术的缺点与不足,提出一种应用于柔性工作流实现方法的系统,对相同流程定义的不同流程实例的路由信息不进行单独的存储,减少了冗余数据,减少了操作的复杂度。本发明的首要目的通过以下技术方案实现,包括如下步骤:(I)根据有向图的工作流模型,设计出支持常用流程活动定义以及柔性活动定义的可视化流程定义工具;(2)工作流引擎部署并解析由(I)中流程定义工具产生的流程定义文件,并能准确识别出流程定义中的柔性活动定义;(3)流程运行时,根据流程定义形成流程实例,并根据从内部与从外部接收到流程变更请求的不同而做出以下不同响应。I)外部变更请求:当业务流程发生变化时,系统外部请求对流程进行修改。对此类请求的响应可以分为对流程定义下所有流程实例修改和对单一流程实例的修改:①对流程定义下的所有流程实例修改:查找并暂停该流程实例对应流程定义的所有流程实例,保存所有流程实例上下文运行环境,并分析每个流程实例的判断修改点与运行点的关系:a、修改点在运行点之前,有三种处理方法:方法一:恢复暂停的流程实例直至流程实例运行结束后退出,同时修改流程定义,新流程实例参照新流程定义执行;方法二:销毁流程实例,新的流程实例参照新流程定义执行;方法三:流程执行点回滚到修改点,同时修改流程定义、恢复上下文环境,流程继续运行,按修改后的流程执行。b、修改点在执行点之后:修改流程实例参考的流程定义,并恢复上下文环境,流程继续运行;C、修改点是当前执行点,针对三种不同的修改请求分别进行处理:第一种:在当前运行点之前增加一个任务,修改方法参照a;第二种:当前运行点之后增加一个任务,修改方法参照b;第三种:修改当前运行点的属性,回滚到上一活动,同时修改流程定义,恢复上下午环境,流程继续运行。②对单一流程实例修改:无需查找该流程定义下的所有流程实例,具体修改根据流程运行点和修改点在流程中位置不同参照方法①处理。2)内部变更请求:当流程实例执行到存在柔性活动节点时,系统内部工作流引擎自动要求转变为原子活动、子流程、块活动等才能继续执行。内部变更请求:当流程实例执行到存在柔性活动节点时,系统内部工作流引擎自动要求转变为原子活动、子流程、块活动等方能继续执行。上述柔性特征的活动是指在流程定义中关于该活动定义带有柔性属性标记。上述利用流程设计器产生的流程定义以xml文件形式保存到本地文件系统,流程定义部署后把流程定义文件以二进制数据形式保存到数据库中,并标识流程的版本和流程类型等。流程启动,产生流程实例,流程实例在数据库中保存其运行的状态信息、作业信息、办理人/[目息以及任务/[目息,但不包含流程路由/[目息,流程实例的路由/[目息需关联到对应流程定义数据库表中。节省数据空间,无需为每个流程实例保存一份流程路由信息。上述外部变更请求是指用户申请对正在执行的流程实例或流程定义进行修改,内部变更请求是正在执行的流程实例遇到带柔性属性标志的活动,要求对该活动进行去柔性标志处理,转变为原子活动、子流程(其中某些活动可带柔性标志)或块活动(其中某些活动可带柔性标志)。上述方法中,对流程定义下的所有流程实例修改,指对该流程定义修改并影响正在运行的流程实例和将要运行的流程实例。首先找到所有对应流程定义下所有流程实例,然后把所有流程实例设为挂起状态,再保存每个流程实例的运行上下文环境,包括整个流程实例对象和其对于数据参数,最后根据上述具体情况对流程定义相关数据库表和流程实例数据库表进行修改。上述方法中,由于相同流程定义的流程实例在流程定义中共享相同流程路由信息。对单一的流程实例进行修改,为了不影响其他无需修改的流程实例运行,不能对该流程实例对应的流程路由信息直接修改,首先复制一条原来关于该流程路由的信息,然后让该流程实例关联到新的流程路由信息,再对该流程路由进行修改。本发明的另一目的通过以下技术方案实现,一种应用于柔性工作流的实现方法的系统,包括以下装置:装置一:根据有向图的工作流模型,设计支持常用流程活动定义以及柔性活动定义的可视化流程定义工具;装置二:工作流引擎部署并解析由步骤I中流程定义工具产生的流程定义文件,并识别出流程定义中的柔性活动定义;装置三:流程运行时,根据流程定义形成流程实例,并根据从内部或外部接收到流程变更请求与当前执行点的位置关系,做出相应的响应处理。所述装置I中,所述的流程定义在兼容jpdl标准的基础上能描述柔性活动。所述装置2中,所述的工作流引擎是基于jbpm4的架构,部署流程定义是把流程定义以二进制大数据类型存储到数据库流程定义表中。所述装置3中,从内部接收到流程变更请求是指流程引擎执行到带柔性特征的活动时,其处理方法是将该流程实例转入挂起状态,待用户把该活动的柔性特征所对应的一般流程活动执行完毕,或者把该活动变成子流程、块活动流程后再恢复运行;子流程、块活动存在带柔性特征的活动,其处理方法是采取递归方式,即当再次运行到新设定子流程、块活动的柔性特征活动时,则再次自动进入挂起状态,并进入柔性特征活动所对应的普通活动或流程中进行执行,然后逐层恢复。所述步骤3中:流程实例运行中,变更请求点与当前运行点之间的位置关系按照以下三种情况处理:情况1、变更请求点在当前运行点之前,用户可采用以下三种方法对流程实例进行修改:方法一:恢复原来暂停的流程实例,直至原流程实例运行结束,然后修改流程定义,新流程实例参照新流程定义来执行;方法二:中断并撤销原来的流程实例,创建一个新的流程实例,并按照包含变更请求的新流程定义来执行;方法三:流程执行点回滚到变更请求点的位置,动态修改原流程实例所依据的流程定义,然后恢复上下文环境,按修改后的流程定义继续执行该流程实例;情况2、变更请求点在当前运行点之后,用户可以修改流程实例所依据的流程定义,之后恢复上下文环境,流程实例按修改后的流程定义继续运行;
情况3、变更请求点是当前运行点,用户通过以下三种方式进行处理:第一种:在当前运行点之前增加一个活动,修改方法参照所述情况I中的方法一;第二种:在当前运行点之后增加一个活动,修改方法参照情况I中的方法二 ;第三种:修改当前运行点的活动属性并回滚到上一活动,同时修改流程实例参考的流程定义,恢复上下午环境,流程实例继续运行。本发明的工作原理:本发明让用户在流程定义阶段把预先把业务流程在执行中需要变化和不需要变化的元素识别出来,让工作流引擎对柔性活动进行预处理,提高执行效率。在流程执行阶段对于某些突然的变更请求根据实际情况的不同利用上述方法,做相应的处理;工作流引擎可以容易识别意料之中的变更请求,直接对流程进行挂起处理,待用户完成变更处理后,流程才恢复运行。本发明相对于现有技术具有如下的优点及效果:(I)在流程定义阶段考虑对柔性的支持,流程模型定义无需引入新的元素,只需对具有柔性特征的流程活动定义进行属性标志,兼容了 jpdl语言标准,减少了流程模型的复杂度,实用性强。(2)对相同流程定义的不同流程实例的路由信息不进行单独的存储。当要求对某流程定义下所有流程实例修改时只需修改一次流程路由信息;当要求对单一流程实例修改时,把该流程实例的路由信息指向原先路由信息的备份,只需修改该备份的路由信息即可,比为实现对流程实例的柔性操作,对所有流程实例路由信息进行I对I存储,减少了冗余数据,减少了操作的复杂度。


图1是本发明提供的方法的流程定义过程示意图。图2是工作流建模时流程定义中可能存在的各种活动图。图3是本发明的流程引擎的执行结构示意图。
具体实施例方式下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。实施例本发明包括对jbpm可执行流程语言框架的流程引擎的二次开发及流程定义工具的设计和实现。所述的对jbpm可执行流程语言框架的流程引擎进行二次开发,是让其在一般传统流程引擎的基础上支持对具有柔性活动特征的流程定义文件解析和部署功能,以及增加用户在运行阶段对流程实例的监控和修改请求功能。所述的流程定义工具的设计和实现,即基于工作流参考模型和有向图的流程建模理论,设计基于B/S结构的流程定义工具。如图1所示,该流程定义工具能对确定的业务以及不确定的业务流程进行定义,产生带柔性特征的流程定义文件,最终产生的流程定义文件支持jpdl语言标准。该流程定义工具通过VML来实现图形化的操作,实现画线,画方框,拖动等功能;通过Ext/js和xml以及dom分析实现动态修改和编辑节点属性功能;通过html和dhtml来实现界面的展示。流程定义工具提供业务流程最基本、最常用的活动,利用这些活动可以组装出满足传统需求的流程定义,实现各种基本的控制场景:start(开始活动)、state (状态活动)、decision(判断活动)、fork-join (分支/聚合活动)、task(人工活动)、sub_process (子流程活动)、end (结束活动)。如图2所示的流程定义图中,包含了由以上活动组成的“原子活动”、“带柔性特征活动”、“子流程活动”和“块活动”,其中“原子活动”是指由start (开始活动)、state (状态活动)、decision (判断活动)、fork-join (分支/聚合活动)、end (结束活动)等确定活动组成,并且其柔性描述属性Flexible为I的活动,“带柔性活动”是指由上述start (开始活动)、state (状态活动)、decision (判断活动)、fork-join (分支/聚合活动)、end (结束活动)等确定活动组成,并且其柔性描述属性Flexible为O的活动,“子流程活动”是指该活动指向另外一个流程定义文件,作为一个子流程嵌入在流程定义文件中,“块活动”是指由一个或者多个原子活动、带柔性特征的活动、子流程活动等组成的活动集合。根据jpdl流程定义语言特点,修改其对应的xsd文件,在所有活动元素中都增加一个名字为Flexible的整型类型的属性,来标志该活动是否具有柔性,当Flexible=O时说明该流程活动为柔性活动,即如图2所述的带柔性特征的活动,否则为传统活动。如图3所示,当用户通过流程定义工具生成流程定义文件后,通过流程引擎提供的流程定义服务API接口把流程定义文件通过hibernate部署到流程定义相关的数据库表。同时生成流程引擎框架相关数据表:存储流程定义相关的数据库表:流程实例相关数据库表、流程历史数据库表、身份认证数据库表以及引擎属性数据库表。当用户通过流程执行服务API启动流程,形成流程实例时,流程运行时环境通过hibernate从数据库中取得流程定义数据,并通过hibernate在流程实例相关数据库表中操纵流程实例的运行信息。当用户需要对流程实例监控时,同样通过流程执行服务API对流程引擎中的流程实例操作。为了更好地封装流程引擎,流程定义服务AP1、流程执行服务API等只面向于用户,引擎只提供指令服务API对流程运行时环境操作,面向用户的各种API只能通过指令服务API操作流程运行时环境。增加流程执行服务API接口对流程实例监控的方法:包括对查看流程实例详细执行情况操作、流程实例上下文环境保存操作。增加两个事件监听AP1:流程实例挂起事件和流程实例恢复事件,增加对流程人工实例挂起状态的定义。增加流程执行服务API接口根据流程实例ID对其对应流程定义的修改、复制、插入操作的方法。修改流程执行服务接口的流程启动和流程推进方法,当流程执行一个活动时,先检查该流程活动的Flexible属性是否为O:若Flexible=O,说明该活动为柔性活动。流程实例会触发流程执行服务的人工挂起操作,让流程实例自动进入人工挂起状态(在该状态下,流程不能调用signal操作进入下一活动),然后复制并新插入该流程实例在数据库流程定义相关表的记录,再把该流程实例关联到新插入的流程定义记录,最后根据具体用户需要修改复制的活动定义在数据库流程定义相关表的数据并把Flexible置为非0,触发流程实例恢复运行操作:若Flexible为非O时,流程实例才可以通过siganl操作继续执行下一活动。当用户要求对已经产生流程实例的流程进行修改时,首先触发对该流程实例的挂起事件,并自动保存上下文运行时环境;再根据具体的流程实例运行。上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
权利要求
1.一种柔性工作流的实现方法,其特征在于,包括如下步骤: 步骤1、根据有向图的工作流模型,设计支持常用流程活动定义以及柔性活动定义的可视化流程定义工具; 步骤2、工作流引擎部署并解析由步骤I中流程定义工具产生的流程定义文件,并识别出流程定义中的柔性活动定义; 步骤3、流程运行时,根据流程定义形成流程实例,并根据从内部或外部接收到流程变更请求与当前执行点的位置关系,做出相应的响应处理。
2.根据权利要求1所述的实现方法,其特征在于:所述步骤3中,从内部接收到流程变更请求是指流程引擎执行到带柔性特征的活动时,其处理方法是将该流程实例转入挂起状态,待用户把该活动的柔性特征所对应的一般流程活动执行完毕,或者把该活动变成子流程、块活动流程后再恢复运行;子流程、块活动存在带柔性特征的活动,其处理方法是采取递归方式,即当再次运行到新设定子流程、块活动的柔性特征活动时,则再次自动进入挂起状态,并进入柔性特征活动所对应的普通活动或流程中进行执行,然后逐层恢复。
3.根据权利要求1所述的实现方法,其特征在于:所述步骤3中:流程实例运行中,变更请求点与当前运行点之间的位置关系按照以下三种情况处理: 情况1、变更请求点在当前运行点之前,用户可采用以下三种方法对流程实例进行修改: 方法一:恢复原来暂停的流 程实例,直至原流程实例运行结束,然后修改流程定义,新流程实例参照新流程定义来执行; 方法二:中断并撤销原来的流程实例,创建一个新的流程实例,并按照包含变更请求的新流程定义来执行; 方法三:流程执行点回滚到变更请求点的位置,动态修改原流程实例所依据的流程定义,然后恢复上下文环境,按修改后的流程定义继续执行该流程实例; 情况2、变更请求点在当前运行点之后,用户可以修改流程实例所依据的流程定义,之后恢复上下文环境,流程实例按修改后的流程定义继续运行; 情况3、变更请求点是当前运行点,用户通过以下三种方式进行处理: 第一种:在当前运行点之前增加一个活动,修改方法参照所述情况I中的方法一; 第二种:在当前运行点之后增加一个活动,修改方法参照情况I中的方法二 ; 第三种:修改当前运行点的活动属性并回滚到上一活动,同时修改流程实例参考的流程定义,恢复上下午环境,流程实例继续运行。
4.根据权利要求1所述的实现方法,其特征在于:所述步骤2中,所述的工作流引擎是基于jbpm4的架构,部署所述步骤I所产生的流程定义是把流程定义以二进制大数据类型存储到数据库流程定义表中。
5.根据权利要求1所述的实现方法,其特征在于:所述步骤I中,所述的柔性活动定义在兼容jpdl标准的基础上描述柔性活动。
6.一种应用于柔性工作流的实现方法的系统,其特征在于,包括以下装置: 装置1:根据有向图的工作流模型,设计支持常用流程活动定义以及柔性活动定义的可视化流程定义工具; 装置2:工作流引擎部署并解析由步骤I中流程定义工具产生的流程定义文件,并识别出流程定义中的柔性活动定义; 装置3:流程运行时,根据流程定义形成流程实例,并根据从内部或外部接收到流程变更请求与当前执行点的位置关系,做出相应的响应处理。
7.根据权利要求6所述的系统,其特征在于:所述装置3中,从内部接收到流程变更请求是指流程引擎执行到带柔性特征的活动时,其处理方法是将该流程实例转入挂起状态,待用户把该活动的柔性特征所对应的一般流程活动执行完毕,或者把该活动变成子流程、块活动流程后再恢复运行;子流程、块活动存在带柔性特征的活动,其处理方法是采取递归方式,即当再次运行到新设定子流程、块活动的柔性特征活动时,则再次自动进入挂起状态,并进入柔性特征活动所对应的普通活动或流程中进行执行,然后逐层恢复。
8.根据权利要求6所述的系统,其特征在于:所述装置3中:流程实例运行中,变更请求点与当前运行点之间的位置关系按照以下三种情况处理: 情况1、变更请求点在当前运行点之前,用户可采用以下三种方法对流程实例进行修改: 方法一:恢复原来暂停的流程实例,直至原流程实例运行结束,然后修改流程定义,新流程实例参照新流程定义来执行; 方法二:中断并撤销原来的流程实例,创建一个新的流程实例,并按照包含变更请求的新流程定义来执行; 方法三:流程执行点回滚到变更请求点的位置,动态修改原流程实例所依据的流程定义,然后恢复上下文环境,按修改后的流程定义继续执行该流程实例; 情况2、变更请求点在当前运行点之后,用户可以修改流程实例所依据的流程定义,之后恢复上下文环境,流程实例按修改后的流程定义继续运行; 情况3、变更请求点是当前运行点,用户通过以下三种方式进行处理: 第一种:在当前运行点之前增加一个活动,修改方法参照所述情况I中的方法一; 第二种:在当前运行点之后增加一个活动,修改方法参照情况I中的方法二 ; 第三种:修改当前运行点的活动属性并回滚到上一活动,同时修改流程实例参考的流程定义,恢复上下午环境,流程实例继续运行。
9.根据权利要求6所述的系统,其特征在于:所述装置2中,所述的工作流引擎是基于jbpm4的架构,部署流程定义是把流程定义以二进制大数据类型存储到数据库流程定义表中。
10.根据权利要求6所述的系统,其特征在于:所述装置I中,所述的流程定义在兼容jpdl标准的基础上能描述柔性活动。
全文摘要
本发明公开了一种柔性工作流的实现方法及其系统,该方法实现了在工作流的流程定义和实例运行两个阶段的柔性化支持;本发明基于jbpm可执行流程语言框架,使流程定义工具产生具有柔性特征的活动定义,然后使流程引擎对带有柔性特征的流程定义文件进行解析和部署,最后针对业务流程不同的柔性化修改点、执行点以及所需要的不同处理结果而实现对流程定义的修改、重新部署以及流程引擎对流程实例的挂起、保存上下文、修改、恢复等操作。本发明是将流程定义和流程实例执行两个阶段相结合的柔性化支持,具有能从更根本的层次上广泛、快速、有效地实现工作流管理系统对业务流程动态变化的支持等优点。
文档编号G06F9/44GK103197927SQ201310071790
公开日2013年7月10日 申请日期2013年3月6日 优先权日2013年3月6日
发明者黄敏, 岑炬徽 申请人:华南理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1