并行业务规则引擎分支无限性解决方法与流程

文档序号:12034353阅读:821来源:国知局
并行业务规则引擎分支无限性解决方法与流程

本发明是在发明名称:并行业务规则引擎及其实现方法,申请号:201310073436.9,申请日:2013年3月7日的在先申请的基础上提出的分案申请。

本发明涉及计算机软件开发领域,应用于系统集成、软件系统配置、容错和高性能计算等方面。具体地,设计方案通过在规则引擎中增加并行执行体,在并行执行体中声明对分支的选择方式,及生成和查找方式,以提供对并行计算的有效支持。



背景技术:

规则引擎(regularrule)是指用一段易懂的脚本表示业务过程中的规则,脚本不需要经过编译,在程序运行期由规则引擎框架读取和解释,应用程序调用规则引擎接口触发执行相应的规则,从而达到业务逻辑和业务编程实现的分离。

规则引擎不同于规则发现引擎,规则引擎属于程序配置体系;规则发现引擎是指通过模式匹配发现业务过程中的某种规律,属于模式识别范畴。

规则引擎包括如下部分:规则脚本(不需要编译)、规则引擎框架、调用规则引擎的应用程序。一般规则脚本包括:执行体和规则体,规则体包括触发条件和对执行体和需执行方法的调用。

工作流(workflow)指一系列前后相续相连的步骤。工作流引擎(workflowengine)使用易懂的脚本等表示这些步骤之间的关系,工作流引擎框架读取和解释这些步骤,使用时,应用程序通过工作流引擎接口调用执行相应的工作流步骤,并得到结果。工作流引擎分离了工作流程和具体的程序编程。

本发明中的并行计算(操作)指,由于数据分布在不同的逻辑地址,需要通过相同或不同的子程序模块去分别操作,这些不同的子程序或者不同的逻辑地址的组合称为分支,对数据的一次操作(计算),需要从一个或多个可能的分支去选择,操作(或称计算)在空间上是并行的,因此称为并行计算。

业务规则引擎和工作流引擎基本实现了对系统易变部分的有效配置,但目前还没有较好的方案引擎能便捷,快速的实现对系统数据备份、联合查询等并行计算的有效支持。



技术实现要素:

为了填补了业务规则引擎在并行计算方面的空白,并行业务规则引擎在配置文件中使用并行执行体。数据的一次并行操作可以通过使用不同的子程序或者使用不同的逻辑地址达到,发明中请人将这些不同的子程序或者不同的逻辑地址的组合称为分支。

并行执行体对数据有两种操作方式:数据读取,和数据写入(包括修改删除)。数据读取包括联合、选择、竞争等分支选择方式:联合读取就是从一系列分支中读取数据,最后拼装成结果集;选择就是假设各个分支数据是一样的,执行体从分支中(随机)选择一个分支读取结果集;竞争就是假设各个分支数据是一样的,执行体从各个分支读取,但是只取最快的那份,其余的丢弃。数据写入包括联合、同时等分支选择方式:联合就是将数据按照规则拆散放到各个分支中,每个分支得到的是不完整的数据,但是所有分支数据的总和是完整数据;同时就是将数据不拆散,完整的保存到各个分支中。

分支的查找和生成规则为:分支地址或子程序名称是由引擎传入的参数通过映射得到的,参与映射的参数值可以是“”或null。映射规则是,设有i个变量,{xi}为这些变量的集合,分支地址或子程序名称为f({xi}),那么找出一个f({xi}),通过f({xi})可以通过逆映射获得{xi}中的所需要部分或全部。本规则引擎通过变量映射规则而不是通过条件判断选择分支,从而获得对多种数据读写方式的支持,这是本发明的特征。

并行计算通过并行执行体实现,并行执行体参数有三种类型:常量,由应用程序调用规则引擎框架时传入的变量,由常量和其他参数映射得来的参数。方法或执行体引用的方式有两种:常量方法,由常量和其他参数映射而来的方法。并行执行体的第三种类型映射了逻辑地址分支,并行执行体中方法或并行执行体的第二种引用方式映射了子程序分支。

因为并行执行体是通过映射而非条件判断选择分支的,因此,本发明的方案可应用于工作流引擎。具体是:并行执行体作为工作流引擎的一个执行节点;工作流引擎的上一个节点或该段工作流引擎的调用者传入相应的参数,并调用该节点;该节点映射各个分支,然后返回最终结果给下一个节点;如果这是引擎的最后一个节点,那就返回给工作流引擎的调用者。

附图说明

图1是对并行业务规则引擎结构的解释。并行业务规则引擎需要配置三种组件:执行体和规则体是一般业务规则引擎所拥有的,而并行规则体则是本方案所特有的。并行规则体的参数和“方法或执行体引用”部分都可以分别映射分支,通过这种分支映射的组合,并行业务规则引擎可以具备很好的伸缩性能。

图2是对并行规则体在工作流引擎中的应用的解释。工作流引擎中,并行节点的上一个节点(如果有)或应用程序通过引擎框架调用并行节点;并行执行体隐式地通过映射方式执行分支;然后,并行执行体获得并行运算的最终结果;并将最终结果和控制交给下一个节点(如果有),如果没有下一个节点,那就把结果交给通过引擎框架调用该引擎的应用程序。

具体实施方式

并行业务规则引擎分支无限性解决方法的实现有以下步骤:

1.规则引擎需要靠规则引擎框架解释执行,应用程序读入规则引擎框架。

2.配置文件中配置业务规则,应用程序读入配置文件,并通过框架解释这些规则。

3.应用程序在相应的地方通过对框架spi的调用,并传入相应的参数,执行规则,最后获得结果。

4.如果程序在该相应的地方需求规则改变,只要参数不变,程序员就可以通过重新配置业务规则达到效果。

并行业务规则引擎和并行业务工作流引擎的配置过程如下:

1.首先定义需要被调用的分支的程序的方法,如果分支程序的方法不同就进一步将该方法封装为执行体。

2.定义并行执行体,并行执行体声明为读取或写入类型,并声明联合、选择、竞争、同时等方式。

3.在并行执行体中配置传入参数、对“方法和执行体的引用”。参数和“方法或执行体引用”的类型可以由映射生成,映射的结果可以作为参数;或者作为步骤1定义的执行体的名称,进一步通过执行体获得参数;或者作为步骤1定义的执行体的名称由“方法或执行体引用”所引用。

4.应用程序调用引擎框架,执行并行执行体,做并行操作。

下面结合具体的应用场景,进一步阐明本发明,本发明可以应用于但不限于以下情形:

假设日志系统需要每大生成一个日志文件,并且可以查看所有天的日志。

开发者可按照如下步骤开发和配置:

1.在程序中编译一个通用的方法,用于写入日志,如果没有相应的日志文件就生成日志文件。

2.配置并行执行体1,用于对日志文件进行并行操作。并行执行体的“方法或执行体引用”部分配置为对步骤1的方法的引用,传入参数与步骤1中的参数一致。

3.并行执行体1为写入类型,并声明为同时方式,以适应并行写入的需求。

4.并行执行体1中的日志文件名参数以映射方式配置,映射公式为f(x)=log|mmdd,mm为月,dd为日;mm和dd分别作为固定参数传入,表示当前时间,因此,对并行执行体1的每次写入操作只执行一个固定的分支。

5.在程序中编译一个通用的方法,用于读取日志。

6.配置并行执行体2,用于对日志文件进行并行操作。并行执行体的“方法或执行体引用”部分配置为对步骤1的方法的引用,传入参数与步骤1中的参数一致。

7.并行执行体2中的日志文件名参数以映射方式配置,映射公式为f(x)=log|mmdd,mm为月,dd为日。

8.并行执行体2为读取类型,并声明为联合方式,以适应从各个分支联合查询数据的需求。

假设应用系统需要访问两个数据库,这两个数据库数据完全一样,一个用来备份,一个用来做正常业务访问;两个数据库只有地址不一样。

开发者可按照如下步骤开发和配置:

1.在引擎脚本中先配置两个执行体,分别返回两个数据库的地址,现假设这两个执行体名称为db0001和db0002;

2.在程序中编译一个通用的方法,用于对两个数据库进行读取操作,该方法的参数应包含数据库地址。

3.配置并行执行体1,用于对两个数据库进行并行读取操作。并行执行体的“方法或执行体引用”部分配置为对步骤2的方法的引用,传入参数与步骤2中的参数一致。

4.并行规则体1中的数据库地址参数被配置为对执行体db000x的引用,所引用的执行体名称是由映射f(x)=db|000x得来的(如步骤1)。

5.并行执行体1选择为读取类型,声明为选择方式,以适应从备份中读一个分支数据的需求。

6.在程序中编译一个通用的方法,用于对两个数据库进行写入操作,该方法的参数应包含数据库地址。

7.配置并行执行体2,用于对两个数据库进行并行写入操作。并行执行体的“方法或执行体引用”部分配置为对步骤2的方法的引用,传入参数与步骤6中的参数一致。

8.并行规则体2中的数据库地址参数被配置为对执行体db000x的引用,所引用的执行体名称是由映射f(x)=db|000x得来的(如步骤1)。

9.并行执行体2选择为写入类型,声明为同时方式,以适应从备份中读一个分支数据的需求。

抢票系统分别从不同公司买票,假设n家公司,每家公司系统购票接口参数格式和返回数据都一样(或者可以转换成一样的),只是具体的实现方法不一样,抢票系统需要获得购到的第一张票,如果抢到一张票以后,其余的票都撤单丢弃。

开发者可按照如下步骤开发和配置:

1.在规则引擎脚本中先配置n个执行体,参数为各家公司系统的接口参数,实现方法分别为各家公司系统的实现方法,执行体名称为zxt1到zxtn。

2.配置并行执行体,用于对这n家公司的并行购票操作。由于这n家公司的参数格式都是一致的,因此,并行执行体的参数同步骤1的参数一样。

3.并行执行体的“方法或执行体引用”部分配置为对n个执行体的引用。引用的执行体名称由映射f(x)=zxt|n得来(见步骤1)。

4.并行执行体选择规则声明为竞争读取方式,以适应从各个分支竞争查询,从而最快获得票的需求。

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