基于编译技术的业务规则引擎模式匹配系统及实现方法与流程

文档序号:19072258发布日期:2019-11-08 20:49阅读:247来源:国知局
基于编译技术的业务规则引擎模式匹配系统及实现方法与流程

本发明涉及计算机领域,具体地说是一种基于编译技术的业务规则引擎模式匹配系统及实现方法。



背景技术:

规则引擎是基于规则的专家系统,实现了规则与系统相分离,提供更好的业务支撑灵活性。国内外研究者就规则引擎做了大量技术研究,不乏成功的商用产品和开源产品。

目前主流的规则引擎产品基本上都是基于rete算法。rete算法是面向大型知识系统设计的,基本上只适用推理类的规则,对于需要进行数据校验、数据预处理、数据存取、数据转换等业务规则却不适用。rete算法是基于元组的运算,设计应用场景有两个基本前提条件要求:1)、时冗余性:大量的事实元素,每次仅有少量发生变化;2)、规则的结构目似性:不同规则之间存在相同的条件模式或模式群组。相应地,rete算法的两主要特性:状态保存、节点共享,决定了在其设计应用场景下要优于传统的模式匹配算法。但是,现实中很多应用场景,例如典型的企业应用系统(oltp系统),并不满足rete算法的特性要求。针对现有基于rete算法的规则引擎产品在实际应用中的局限性,故如何能够使规则引擎满足大型企业级应用系统的应用需求,完成企业应用的业务规则,并能够提高规则引擎的性能和灵活性是目前现有技术中急需解决的技术问题。

专利号为cn108198081a的专利文献公开了一种可配置的保险风控规则引擎系统及流程方法,系统包括支持业务人员自定义风控规则的录入界面模块,支持模糊匹配、快速定位的录入提示模块,实时的规则有效性校验模块,规则更新后的实时编译、发布模块,基于分布式调度器的并行流式规则处理引擎模块。还公开可配置的保险风控规则引擎系统的流程方法,包括如下步骤:1)保险业务人员通过录入界面模块编辑、增加、删除风控规则;在此过程中,系统通过模糊匹配,快速通过业务人员输入的拼音首字母等快速定位到待录入的字段;每当更新一条规则后,系统会通过开源工具antlr进行实时地规则语法检查以及通过rete等有向图分析算法进行规则有效性检查,并将合法的规则集转化为后端规则引擎所需的规则文件;2)启动编译器将新生成的规则文件编译打包进可执行文件,然后将程序发布;3)对于实时到达的业务数据,通过基于分布式调度器的并行流式规则处理引擎实时进行处理,并将处理结果反馈给业务分析人员。但是该技术方案不是面向企业应用业务规则提出的业务规则引擎模式匹配算法和数据结构。



技术实现要素:

本发明的技术任务是提供一种基于编译技术的业务规则引擎模式匹配系统及实现方法,来解决如何能够使规则引擎满足大型企业级应用系统的应用需求,完成企业应用的业务规则,并能够提高规则引擎的性能和灵活性的问题。

本发明的技术任务是按以下方式实现的,一种基于编译技术的业务规则引擎模式匹配系统,该系统包括,

应用程序api模块,用于封装内部模块之间的交互细节,向应用程序提供统一的接口方法;

规则库模块,用于存储规则以及规则的调用情况;

规则语言编译器,用于编译规则语言描述的产品规则代码,生成等价的pln网络数据结构;

推理引擎模块,用于事实对象与产品规则的匹配和规则的执行。

作为优选,所述规则库模块包括规则数据库和管理访问模块;

其中,规则数据库用于存储产品规则,数据库的事务机制保证并发访问数据的一致性;

管理访问模块用于封装对规则数据库的系统调用,并为系统中除管理访问模块以外的内部模块提供内部接口。

作为优选,所述推理引擎模块包括模式匹配器和执行引擎模块;

其中,模式匹配器用于实现核心的pln算法,接受事实对象集合输入,并与规则数据库中的产品规则进行匹配;

执行引擎模块,用于按照给定的策略,执行匹配成功的产品规则。

其中,pln取自“procedurelogicnetwork”"的首字母缩写,中文意思是“过程逻辑网络”。

更优地,所述pln算法的具体如下:

接受事实对象集合和规则产品作为输入,经过规则匹配运算后,以匹配成功的产品规则作为算法输出;pln算法由事务驱动,由应用程序api模块调用触发规则匹配,一次匹配完成后事实对象或规则产品发生变化并不会触发重新匹配。

更优地,所述pln网络数据结构是分别使用一种类型的节点实现过程逻辑的“条件模式”、“switch分支模式”和“while循环模式”,并按照规则表达的层次结构来将对应节点组织成一个完整的数据流处理网络;同一个规则使用传统过程语言的语句或switch语句编写的程序实现,或者通过构造pln网络来实现,这两者在语义上是完全等价的,基于这种思想,执行程序语言编写的业务规则匹配程序,在功能上等价于以深度优先搜索的方式遍历与其等价的pln网络。

作为优选,所述规则通过规则语言描述;规则的定义如下:

lhs/*oneormoreconditions*/

一>

rhs/*oneormoreactions*/

其中,规则在形式上包括两部分:模式部分和动作部分;lhs是规则的模式部分,用于对符合本规则的事实特征的形式描述,是规则引擎进行模式匹配的目标;rhs是规则的动作部分,用于定义规则匹配成功之后触发的系统动作。

更优地,所述规则的模式部分的模式判断通过pln网络节点执行;pln网络节点包括h-节点、l-节点和p-节点;

其中,h-节点,用于将其子节点按不同分支规则表示的分支变量值存入hash表,通过哈希运算实现“switch分支规则"的模式判断;

l-节点,用于内部封装逻辑运算对象链表,实现了“if条件规则"的模式判断;

p-节点,用于封装规则匹配成功后执行的系统动作。

更优地,所述逻辑运算对象主要封装三部分属性:逻辑运算因子、逻辑运算因子和逻辑操作对象;逻辑运算因子是一个二元组,封装待匹配的事实对象名称及其属性名称。

更优地,每个所述逻辑运算对象表示一个原子的逻辑判断表达式,所有逻辑运算对象的计算结果取“逻辑与”就是最终的匹配结果。

一种基于编译技术的业务规则引擎模式匹配实现方法,该方法步骤如下:

s1、pln网络数据结构接受事实对象集合,根节点不做住向匹配动作,直接将其发送到所有子节点;

s2、对各个pln网络节点执行规则匹配:

(1)、若当前匹配节点为h节点,则计算事实对象集合的hash键值,并激活该键值的子节点;

(2)、若当前匹配节点为l节点,则计算事实对象集合的逻辑表达式的逻辑值,并判断逻辑值的真假:

①若为true,则激活所有子节点;

②若为false,则返回;

(3)、若当前节点是p节点,则表示规则匹配成功,并将p节点加入执行议程,返回上一层继续匹配执行;

s3、迭代执行步骤s2,直至所有节点匹配完毕,结束返回。

本发明的基于编译技术的业务规则引擎模式匹配系统及实现方法具有以下优点:

(一)、基于本发明所提出的规则引擎模式匹配算法,实现了一个规则引擎,并应用在企业级业务系统中,能够实现规则与系统分离,并基于内存数据结构提供高性能的模式匹配运算;同时,规则可以动态添加或修改,在保障业务连续性的同时提供更好的业务支撑灵活性;

(二)、本发明的规则定义是企业应用业务规则,基于编译技术,将业务规则编译为内存中的模式匹配网络数据结构,支持条件、分支hash、循环等多种规则模式,规则更新后可实时在线编译,保障业务连续性。

附图说明

下面结合附图对本发明进一步说明。

附图1为基于编译技术的业务规则引擎模式匹配系统的结构框图;

附图2为pln算法的原理示意图;

附图3为pln网络数据结构的示意图;

附图4为规则语言编译器的编译过程示意图。

具体实施方式

参照说明书附图和具体实施例对本发明的基于编译技术的业务规则引擎模式匹配系统及实现方法作以下详细地说明。

实施例:

如附图1所示,本发明的基于编译技术的业务规则引擎模式匹配系统,该系统主要包括应用程序api模块、规则库模块、规则语言编译器和推理引擎模块。其中,应用程序api模块用于封装内部模块之间的交互细节,向应用程序提供统一的接口方法;规则库模块用于存储规则以及规则的调用情况;规则库模块包括规则数据库和管理访问模块;规则数据库用于存储产品规则,数据库的事务机制保证并发访问数据的一致性;管理访问模块用于封装对规则数据库的系统调用,并为系统中除管理访问模块以外的内部模块提供内部接口。如附图4所示,规则语言编译器用于编译规则语言描述的产品规则代码,生成等价的pln网络数据结构;推理引擎模块用于事实对象与产品规则的匹配和规则的执行。推理引擎模块包括模式匹配器和执行引擎模块;模式匹配器用于实现核心的pln算法,接受事实对象集合输入,并与规则数据库中的产品规则进行匹配;执行引擎模块用于按照给定的策略,执行匹配成功的产品规则。

如附图1所示,该系统各模块之间的调用关系如下:

(1)、应用程序api模块为模式匹配器提供统一的接口,并封装内部模块之间的交互细节;

(2)、应用程序api模块为管理访问模块提供统一的接口,并封装内部模块之间的交互细节;

(3)、模式匹配器调用规则语言编译器,接收事实对象集合输入,通过规则语言编译器编译规则;

(4)、模式匹配器调用管理访问模块,管理访问模块调用规则数据库中的产品规则;

(5)、模式匹配器调用执行引擎模块,通过执行引擎模块将编译的规则与管理访问模块调用规则数据库中的产品规则进行匹配;

(6)、管理访问模块调用规则数据库中的产品规则;

(7)、应用程序api模块调用执行引擎模块,按照给定的策略,执行匹配成功的产品规则。

其中,pln取自“procedurelogicnetwork”"的首字母缩写,中文意思是“过程逻辑网络”。如附图2所示,pln算法的具体如下:接受事实对象集合和规则产品作为输入,经过规则匹配运算后,以匹配成功的产品规则作为算法输出;pln算法由事务驱动,由应用程序api模块调用触发规则匹配,一次匹配完成后事实对象或规则产品发生变化并不会触发重新匹配。

pln是过程逻辑网络数据结构;过程逻辑是指在传统过程语言(例如c语言)中用于表达规则的逻辑模式,通常包括“if条件模式”、“switch分支模式”和“while循环模式”。网络是指算法所基于的网络数据结构。pln网络数据结构是分别使用一种类型的节点实现过程逻辑的“条件模式”、“switch分支模式”和“while循环模式”,并按照规则表达的层次结构来将对应节点组织成一个完整的数据流处理网络;同一个规则使用传统过程语言的语句或switch语句编写的程序实现,或者通过构造pln网络来实现,这两者在语义上是完全等价的,基于这种思想,执行程序语言编写的业务规则匹配程序,在功能上等价于以深度优先搜索的方式遍历与其等价的pln网络。

规则通过规则语言描述;规则的定义如下:

lhs/*oneormoreconditions*/

一>

rhs/*oneormoreactions*/

其中,规则在形式上包括两部分:模式部分和动作部分;lhs是规则的模式部分,用于对符合本规则的事实特征的形式描述,是规则引擎进行模式匹配的目标;rhs是规则的动作部分,用于定义规则匹配成功之后触发的系统动作。pln算法基于一个数据流网络来执行规则匹配。如附图3所示,图的左侧是一个产品的规则定义,规则的模式部分分别使用“c1、w1、w2、if11、if12、if21、if22、if31、if32”指代;图的右侧是该产品对应的pln数据流网络。pln网络节点负责执行规则的模式判断;pln网络节点包括h-节点、l-节点和p-节点;其中,h-节,用于将其子节点按不同分支规则表示的分支变量值存入hash表,通过哈希运算实现“switch分支规则"的模式判断;l-节点用于内部封装逻辑运算对象链表,实现了“if条件规则"的模式判断;逻辑运算对象主要封装三部分属性:左部逻辑运算因子、右部逻辑运算因子和逻辑操作对象;逻辑运算因子是一个二元组,封装待匹配的事实对象名称及其属性名称。每个逻辑运算对象表示一个原子的逻辑判断表达式,所有逻辑运算对象的计算结果取“逻辑与”就是最终的匹配结果。p-节点用于封装规则匹配成功后执行的系统动作。

实施例2:

本发明的基于编译技术的业务规则引擎模式匹配实现方法,该方法步骤如下:

s1、pln网络数据结构接受事实对象集合,根节点不做住向匹配动作,直接将其发送到所有子节点;

s2、对各个pln网络节点执行规则匹配:

(1)、若当前匹配节点为h节点,则计算事实对象集合的hash键值,并激活该键值的子节点;

(2)、若当前匹配节点为l节点,则计算事实对象集合的逻辑表达式的逻辑值,并判断逻辑值的真假:

①若为true,则激活所有子节点;

②若为false,则返回;

(3)、若当前节点是p节点,则表示规则匹配成功,并将p节点加入执行议程,返回上一层继续匹配执行;

s3、迭代执行步骤s2,直至所有节点匹配完毕,结束返回。

实施例3:

模拟了一个资费产品规则的定义。该资费产品只针对移动语音业务,根据通话区域的不同、累计通话时长分档的不同执行不同的批价费率,使用规则语言定义了上述资费产品的计费批价规则,如下表所示:

电信资费产品的规则语言的关键代码如下:

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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