基于规则的流程调度方法及系统与流程

文档序号:11408619阅读:486来源:国知局
基于规则的流程调度方法及系统与流程

本发明涉及业务流程管理领域,且特别涉及一种基于规则的流程调度方法及系统。



背景技术:

业务流程管理是企业必不可少的工作环节,大多数企业采用业务流程管理软件对其业务进行流程化管理。在现有的业务流程管理中,针对具体的业务应用场景,通过工作流系统提供的流程设计器绘制完整的流程图,通过在流程图的迁移线上设置迁移条件的方式表述流程流转。由上游的应用系统调用工作流系统提供的api进行流程驱动,通过改变工作流的流程变量的值,来影响迁移条件的命中情况,从而驱动流程走向不同的流程分支。而为了实现在不同应用场景下对流程变量做不同赋值,目前的做法是:建立关系型数据库表结构作为参数表,通过查询参数表方式获得不同应用场景下的流程变量值。并通过编写复杂程序逻辑的方式,实现对流程变量的赋值。

上述方法需针对具体的业务应用场景绘制完整的流程图,由于业务应用场景多,且无法完整复用,导致需要绘制的流程图过多,大大加重了维护成本。且当业务应用场景发生变化时,可能会导致流程图重新绘制、原有的关系型参数表的结构需要调整、程序逻辑需要大量修改,变动不够灵活。进一步的,在进行变动时,涉及改造的系统、模块和功能过多,因此带来的开发和测试成本较高。



技术实现要素:

本发明为了克服现有流程调度方法很难根据场景变化而进行相应的变动的问题,提供一种基于规则的流程调度方法及系统。

为了实现上述目的,本发明提供一种基于规则的流程调度方法,该方法包括:

接收业务流程创建请求并根据业务流程创建请求从数据库中的业务流程定义表中查找对应的规则参数;

根据规则参数进行规则计算,获得计算结果;

根据计算结果从数据库选取符合要求的至少一个子流程定义,形成子流程定义集合;

根据子流程定义集合启动异步线程,动态创建线程,并行创建多个子流程;

将创建成功的多个子流程进行组合形成业务流程。

于本发明一实施例中,规则参数包括规则包名称和规则要素。

于本发明一实施例中,计算结果包括规则编号、规则组编号、规则结论。

于本发明一实施例中,根据计算结果从数据库选取符合要求的至少一个子流程定义,形成子流程定义集合,包括:

从计算结果中获取规则组编号和规则结论;

根据规则组编号从数据库中的子流程定义和规则组编号关系表中获得命中的至少一个子流程定义;

将至少一个子流程定义组合在一起,形成子流程定义集合。

于本发明一实施例中,在根据子流程定义集合启动异步线程,并行创建多个子流程这一步骤中,每一子流程的创建包括:

根据子流程定义创建子流程实例;

初始化子流程实例并重新启动;

当子流程实例启动成功则判断该子流程创建成功;否则,判断该子流程创建失败。

于本发明一实施例中,基于规则的流程调度方法还包括:

在并行创建多个子流程后判断是否所有的子流程均创建成功;

若存在子流程没有创建成功,则从子流程定义集合中装载未成功的子流程定义,重新启动异步线程,动态创建线程,并行创建多个子流程。

于本发明一实施例中,基于规则的流程调度方法还包括,在形成子流程定义集合后存储业务流程实例信息和子流程实例信息。

于本发明一实施例中,存储业务流程实例信息和子流程实例信息这一步骤与并行创建多个子流程同步进行;或者,在形成子流程定义集合后存储业务流程实例信息和子流程实例信息,之后再并行创建多个子流程。

本发明另一方面还提供一种基于规则的流程调度系统,该系统包括调度模块、规则引擎、获取模块、子流程创建模块以及业务流程创建模块。调度模块接收业务流程创建请求并根据业务流程创建请求从数据库中的业务流程定义表中查找对应的规则参数。规则引擎根据规则参数进行规则计算,获得计算结果。获取模块根据计算结果从数据库选取符合要求的至少一个子流程定义,形成子流程定义集合。子流程创建模块根据子流程定义集合启动异步线程,动态创建线程,并行创建多个子流程。业务流程创建模块将创建成功的多个子流程进行组合形成业务流程。

于本发明一实施例中,基于规则的流程调度系统还包括数据库,数据库在形成子流程定义集合后存储业务流程实例信息和子流程实例信息。

综上所述,本发明提供的基于规则的流程调度方法及系统根据接收的业务流程创建请求在数据库内查找相对应的多个子流程定义并根据子流程定义来创建多个子流程,最后将多个子流程组合在一起形成业务流程。不同的业务流程可选取多个不同的子流程的组合,多段复用的子流程使得本发明提供的基于规则的流程调度方法实现应用场景和流程模型的解耦,系统无需再单独针对每个应用场景绘制相应的且完整的流程图,而仅仅只需要获取数据库内相应的几个子流程定义形成子流程定义集合并进行相应的子流程的创建,最后进行组合即可。进一步的,子流程的复用也大大提高了数据的利用率,减小系统内数据的存储量,提高业务流程调度的效率。

为让本发明的上述和其它目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合附图,作详细说明如下。

附图说明

图1所示为本发明一实施例提供的基于规则的流程调度方法的流程图。

图2所示为本发明一实施例提供的基于规则的流程调度系统的结构示意图。

具体实施方式

如图1所示,本实施例提供的基于规则的流程调度方法包括:接收业务流程创建请求并根据业务流程创建请求从数据库中的业务流程定义表中查找对应的规则参数(步骤s1)。根据规则参数进行规则计算,获得计算结果(步骤s2)。根据计算结果从数据库选取符合要求的至少一个子流程定义,形成子流程定义集合(步骤s3)。根据子流程定义集合启动异步线程,动态创建线程,并行创建多个子流程(步骤s4)。将创建成功的多个子流程进行组合形成业务流程(步骤s5)。

本实施例提供的基于规则的流程调度方法始于步骤s1,当调度模块接收到用户发起的一应用场景的业务流程创建请求后,调度模块查找数据库内的业务流程定义表,判断业务流程定义表内是否包含有待创建的业务流程。若包含有,则获取该业务流程所对应的规则参数。所述规则参数包括规则包的名称和规则要素等参数。若业务流程定义表内没有包含待创建的业务流程,则返回线程并在业务流程定义表内增加该业务流程并添加该业务流程对应的规则参数。

当获取到待创建的业务流程的规则参数后,规则引擎根据规则参数内的规则包名称和规则要素进行规则计算,得到计算结果。于本实施例中,规则引擎为drools,在drools中使用的规则推理机的推力算法为rete算法。然而,本发明对此不作任何限定。于其它实施例中,规则引擎可为ilog。于本实施例中,规则引擎计算的结果包括规则编号、规则组编号以及规则结论。

在步骤s3中,根据计算结果中的规则组编号和规则结论,查询数据库中子流程定义和规则组编号关系表。判断是否有子流程定义被命中;若是则将至少一个命中的子流程定义进行组合,形成子流程定义集合。若没有命中,则返回线程并将新的子流程定义和规则组编号添加进子流程定义和规则组编号关系表,更新数据库中的子流程定义和规则组编号关系表。

当形成子流程定义集合后执行步骤s4,启动异步线程,动态创建线程,并行创建多个子流程。即每一线程根据一个子流程定义创建一个子流程。每一子流程的创建包括:

首先,根据子流程定义创建子流程实例。

接着,初始化子流程实例并重新启动。

最后,判断子流程实例是否创建成功;判断的标准为:当子流程实例启动成功则判断该子流程创建成功;否则,判断该子流程创建失败。

于本实施例中,基于规则的调度方法还包括步骤s6:在并行创建多个子流程后判断是否所有的子流程均创建成功。若所有线程上的子流程均创建成功后,则执行步骤s5,将创建成功的多个子流程进行组合形成业务流程。若在子流程的创建过程中存在有子流程没有创建成功,则执行步骤s7,从子流程定义集合中装载未成功的子流程定义,重新启动异步线程,动态创建线程,并行创建多个子流程,即回到步骤s4。然而,本发明对此不作任何限定。于其它实施例中,当存在有子流程没有创建成功时则返回线程。

本实施例提供的基于规则的调度方法的工作原理为:将复杂的且会随着应用场景变化的业务流程进行分解和提取后调用数据库内的多个子流程定义,根据多个子流程定义创建子流程,最后组合形成业务流程。本实施例提供的调度方法中无需针对一个业务流程绘制单独的且完整的流程图,仅仅通过调用系统内的多个可复用的子流程即可构建一个业务流程,且随着应用场景的变化,只需调整获取的子流程或子流程的组合顺序,实现了业务场景和流程模型的解耦,使用非常灵活。进一步的,该调度方法实现了业务流程的抽象化、模块化和规则化,大幅度降低了开发成本和维护成本。

在创建子流程时采用异步线程且动态创建线程,该设置大大提高了子流程创建的效率,动态创建线程可根据不同的子流程数量来分配线程的数量,合理安排系统资源,在满足效率的同时减小资源消耗。

于本实施例中,基于规则的流程调度方法还包括步骤s8:在形成子流程定义集合后存储业务流程实例信息和子流程实例信息。在子流程创建过程中,若存在子流程创建失败需要重新创建时,系统可通过调取存储的业务流程实例信息和子流程实例信息来获得相应的信息。于本实施例中,步骤s8设置在步骤s3和步骤s4之间。然而,本发明对此不作任何限定。于其它实施例中,步骤s8可与步骤s4并行,即在步骤s3后有两个分支步骤,其中一个为步骤s4,另一个为步骤s8。

与上述基于规则的流程调度方法相对应的,本实施例还提供一种基于规则的流程调度系统。该系统包括调度模块100、规则引擎200、获取模块300、子流程创建模块400、业务流程创建模块500以及数据库600。调度模块100接收业务流程创建请求并根据业务流程创建请求从数据库600中的业务流程定义表中查找对应的规则参数。规则引擎200根据规则参数进行规则计算,获得计算结果。获取模块300根据计算结果从数据库选取符合要求的至少一个子流程定义,形成子流程定义集合。子流程创建模块400根据子流程定义集合启动异步线程,动态创建线程,并行创建多个子流程。业务流程创建模块500将创建成功的多个子流程进行组合形成业务流程。数据库600在形成子流程定义集合后存储业务流程实例信息和子流程实例信息。

该基于规则的流程调度系统采用上述基于规则的流程调度方法进行工作,具体的工作原理在此不作冗述。

在实际的使用中,一个业务系统可以包含一个或多个基于规则的流程调度系统,多个基于规则的流程调度系统可共用一个数据库内的数据来进行相应的业务流程的建立,实现数据的共享。

综上所述,本发明提供的基于规则的流程调度方法及系统根据接收的业务流程创建请求在数据库内查找相对应的多个子流程定义并根据子流程定义来创建多个子流程,最后将多个子流程组合在一起形成业务流程。不同的业务流程可选取多个不同的子流程的组合,多段复用的子流程使得本发明提供的基于规则的流程调度方法实现应用场景和流程模型的解耦,系统无需再单独针对每个应用场景绘制相应的且完整的流程图,而仅仅只需要获取数据库内相应的几个子流程定义形成子流程定义集合并进行相应的子流程的创建,最后进行组合即可。进一步的,子流程的复用也大大提高了数据的利用率,减小系统内数据的存储量,提高业务流程调度的效率。

虽然本发明已由较佳实施例揭露如上,然而并非用以限定本发明,任何熟知此技艺者,在不脱离本发明的精神和范围内,可作些许的更动与润饰,因此本发明的保护范围当视权利要求书所要求保护的范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1