CN107122952B - 基于规则的流程调度方法及系统 - Google Patents
基于规则的流程调度方法及系统 Download PDFInfo
- Publication number
- CN107122952B CN107122952B CN201710206570.XA CN201710206570A CN107122952B CN 107122952 B CN107122952 B CN 107122952B CN 201710206570 A CN201710206570 A CN 201710206570A CN 107122952 B CN107122952 B CN 107122952B
- Authority
- CN
- China
- Prior art keywords
- sub
- rule
- processes
- process definition
- business
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Abstract
本发明提供一种基于规则的流程调度方法及系统,该方法包括:接收业务流程创建请求并根据业务流程创建请求从数据库中的业务流程定义表中查找对应的规则参数;根据规则参数进行规则计算,获得计算结果;根据计算结果从数据库选取符合要求的至少一个子流程定义,形成子流程定义集合;根据子流程定义集合启动异步线程,动态创建线程,并行创建多个子流程;将创建成功的多个子流程进行组合形成业务流程。
Description
技术领域
本发明涉及业务流程管理领域,且特别涉及一种基于规则的流程调度方法及系统。
背景技术
业务流程管理是企业必不可少的工作环节,大多数企业采用业务流程管理软件对其业务进行流程化管理。在现有的业务流程管理中,针对具体的业务应用场景,通过工作流系统提供的流程设计器绘制完整的流程图,通过在流程图的迁移线上设置迁移条件的方式表述流程流转。由上游的应用系统调用工作流系统提供的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在形成子流程定义集合后存储业务流程实例信息和子流程实例信息。
该基于规则的流程调度系统采用上述基于规则的流程调度方法进行工作,具体的工作原理在此不作冗述。
在实际的使用中,一个业务系统可以包含一个或多个基于规则的流程调度系统,多个基于规则的流程调度系统可共用一个数据库内的数据来进行相应的业务流程的建立,实现数据的共享。
综上所述,本发明提供的基于规则的流程调度方法及系统根据接收的业务流程创建请求在数据库内查找相对应的多个子流程定义并根据子流程定义来创建多个子流程,最后将多个子流程组合在一起形成业务流程。不同的业务流程可选取多个不同的子流程的组合,多段复用的子流程使得本发明提供的基于规则的流程调度方法实现应用场景和流程模型的解耦,系统无需再单独针对每个应用场景绘制相应的且完整的流程图,而仅仅只需要获取数据库内相应的几个子流程定义形成子流程定义集合并进行相应的子流程的创建,最后进行组合即可。进一步的,子流程的复用也大大提高了数据的利用率,减小系统内数据的存储量,提高业务流程调度的效率。
虽然本发明已由较佳实施例揭露如上,然而并非用以限定本发明,任何熟知此技艺者,在不脱离本发明的精神和范围内,可作些许的更动与润饰,因此本发明的保护范围当视权利要求书所要求保护的范围为准。
Claims (10)
1.一种基于规则的流程调度方法,其特征在于,包括:
接收业务流程创建请求并根据业务流程创建请求从数据库中的业务流程定义表中查找对应的规则参数;
根据规则参数进行规则计算,获得计算结果;
根据计算结果从数据库选取符合要求的至少一个子流程定义,形成子流程定义集合;
根据子流程定义集合启动异步线程,动态创建线程,并行创建多个子流程;
将创建成功的多个子流程进行组合形成业务流程。
2.根据权利要求1所述的基于规则的流程调度方法,其特征在于,所述规则参数包括规则包名称和规则要素。
3.根据权利要求1所述的基于规则的流程调度方法,其特征在于,所述计算结果包括规则编号、规则组编号、规则结论。
4.根据权利要求3所述的基于规则的流程调度方法,其特征在于,所述根据计算结果从数据库选取符合要求的至少一个子流程定义,形成子流程定义集合,包括:
从计算结果中获取规则组编号和规则结论;
根据规则组编号从数据库中的子流程定义和规则组编号关系表中获得命中的至少一个子流程定义;
将至少一个子流程定义组合在一起,形成子流程定义集合。
5.根据权利要求1所述的基于规则的流程调度方法,其特征在于,在所述根据子流程定义集合启动异步线程,并行创建多个子流程这一步骤中,每一子流程的创建包括:
根据子流程定义创建子流程实例;
初始化子流程实例并重新启动;
当子流程实例启动成功则判断该子流程创建成功;否则,判断该子流程创建失败。
6.根据权利要求1所述的基于规则的流程调度方法,其特征在于,所述基于规则的流程调度方法还包括:
在并行创建多个子流程后判断是否所有的子流程均创建成功;
若存在子流程没有创建成功,则从子流程定义集合中装载未成功的子流程定义,重新启动异步线程,动态创建线程,并行创建多个子流程。
7.根据权利要求1所述的基于规则的流程调度方法,其特征在于,所述基于规则的流程调度方法还包括,在形成子流程定义集合后存储业务流程实例信息和子流程实例信息。
8.根据权利要求7所述的基于规则的流程调度方法,其特征在于,存储业务流程实例信息和子流程实例信息这一步骤与并行创建多个子流程同步进行;或者,在形成子流程定义集合后存储业务流程实例信息和子流程实例信息,之后再并行创建多个子流程。
9.一种基于规则的流程调度系统,其特征在于,包括:
调度模块,接收业务流程创建请求并根据业务流程创建请求从数据库中的业务流程定义表中查找对应的规则参数;
规则引擎,根据规则参数进行规则计算,获得计算结果;
获取模块,根据计算结果从数据库选取符合要求的至少一个子流程定义,形成子流程定义集合;
子流程创建模块,根据子流程定义集合启动异步线程,动态创建线程,并行创建多个子流程;
业务流程创建模块,将创建成功的多个子流程进行组合形成业务流程。
10.根据权利要求9所述的基于规则的流程调度系统,其特征在于,所述基于规则的流程调度系统还包括数据库,所述数据库在形成子流程定义集合后存储业务流程实例信息和子流程实例信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710206570.XA CN107122952B (zh) | 2017-03-31 | 2017-03-31 | 基于规则的流程调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710206570.XA CN107122952B (zh) | 2017-03-31 | 2017-03-31 | 基于规则的流程调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107122952A CN107122952A (zh) | 2017-09-01 |
CN107122952B true CN107122952B (zh) | 2020-06-16 |
Family
ID=59718164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710206570.XA Active CN107122952B (zh) | 2017-03-31 | 2017-03-31 | 基于规则的流程调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122952B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109542556B (zh) * | 2018-10-30 | 2022-04-15 | 珠海伟诚科技股份有限公司 | 一种基于Activiti的流程与表单交互方法及系统 |
CN109359949B (zh) * | 2018-10-30 | 2022-05-27 | 中国建设银行股份有限公司 | 流程展示方法和装置 |
CN111241186A (zh) * | 2020-01-17 | 2020-06-05 | 中信银行股份有限公司 | 基于规则的可视化并行数据准备方法、系统、设备、介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071480A (zh) * | 2007-06-15 | 2007-11-14 | 南京联创科技股份有限公司 | 复杂业务系统中基于工作流的通用构件化流程调度方法 |
CN101082970A (zh) * | 2007-07-05 | 2007-12-05 | 山东浪潮齐鲁软件产业股份有限公司 | 政务审批工作流引擎系统的实现方法 |
CN106354641A (zh) * | 2016-08-30 | 2017-01-25 | 东软集团股份有限公司 | 流程引擎的测试方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8914141B2 (en) * | 2009-10-02 | 2014-12-16 | Apriori Technologies, Inc. | Template framework for automated process routing |
-
2017
- 2017-03-31 CN CN201710206570.XA patent/CN107122952B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071480A (zh) * | 2007-06-15 | 2007-11-14 | 南京联创科技股份有限公司 | 复杂业务系统中基于工作流的通用构件化流程调度方法 |
CN101082970A (zh) * | 2007-07-05 | 2007-12-05 | 山东浪潮齐鲁软件产业股份有限公司 | 政务审批工作流引擎系统的实现方法 |
CN106354641A (zh) * | 2016-08-30 | 2017-01-25 | 东软集团股份有限公司 | 流程引擎的测试方法及装置 |
Non-Patent Citations (1)
Title |
---|
保险行业中Drools规则引擎的研究与应用;余昀锦;《中国优秀硕士学位论文全文数据库信息科技辑》;20150415(第04期);5-6,13,22,34,42-43,47,53-54,61,65-68 * |
Also Published As
Publication number | Publication date |
---|---|
CN107122952A (zh) | 2017-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550225B (zh) | 索引构建方法、查询方法及装置 | |
CN107122952B (zh) | 基于规则的流程调度方法及系统 | |
CN105354239A (zh) | 一种基于配置数据加工模型的加工中心数据流式处理方法 | |
CN109062700A (zh) | 一种基于分布式系统的资源管理方法及服务器 | |
CN108509284A (zh) | 一种应用于函数式编程的树状模型任务管理系统 | |
CN105991478A (zh) | 服务器资源分配方法及其系统 | |
CN107908714A (zh) | 一种数据归并排序方法及装置 | |
CN113157694A (zh) | 一种基于强化学习的数据库索引生成方法 | |
CN107360031B (zh) | 一种基于优化开销收益比的虚拟网络映射方法 | |
CN117271101B (zh) | 一种算子融合方法、装置、电子设备及存储介质 | |
CN115470236A (zh) | 一种多子图匹配方法、装置及设备 | |
CN100507842C (zh) | 控制界面上控件之间关系的方法、装置及控件显示系统 | |
CN106354633A (zh) | 基于算法插件的任务调度表生成方法 | |
CN102063333A (zh) | 一种递归结构工作流模型及其调度方法 | |
CN105760424A (zh) | 用于存储企业产品关键数据的数据库建立方法 | |
CN112148481B (zh) | 一种执行仿真测试任务的方法、系统、设备及介质 | |
US20170090820A1 (en) | Method and device for operating a many-core system | |
CN111382983B (zh) | 工作流控制方法、工作流节点和系统 | |
CN110297693A (zh) | 一种分布式软件任务分配的方法及其系统 | |
CN110008028A (zh) | 计算资源分配方法、装置、计算机设备和存储介质 | |
CN105447680A (zh) | 基于工作流的订单处理方法及系统 | |
CN116542413B (zh) | 基于时间坐标的任务处理方法、装置、设备及存储介质 | |
CN117492952A (zh) | 一种基于大数据的工作流方法、系统及装置 | |
CN116302496A (zh) | 云资源编排方法、装置、设备及存储介质 | |
CN116541173A (zh) | Gpu加速的高效工作流概率优化方法、装置、计算机和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Xinyada technology building, 3888 Jiangnan Avenue, Binjiang District, Hangzhou City, Zhejiang Province 310000 Patentee after: Sinyada Technology Co.,Ltd. Address before: Xinyada technology building, 3888 Jiangnan Avenue, Binjiang District, Hangzhou City, Zhejiang Province 310000 Patentee before: SUNYARD SYSTEM ENGINEERING Co.,Ltd. |