CN113312392A - 轻量级的规则引擎处理方法及装置 - Google Patents
轻量级的规则引擎处理方法及装置 Download PDFInfo
- Publication number
- CN113312392A CN113312392A CN202110625383.1A CN202110625383A CN113312392A CN 113312392 A CN113312392 A CN 113312392A CN 202110625383 A CN202110625383 A CN 202110625383A CN 113312392 A CN113312392 A CN 113312392A
- Authority
- CN
- China
- Prior art keywords
- rule
- tree
- node
- data
- information
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种轻量级的规则引擎处理方法及装置,涉及大数据技术领域,其中该方法包括:在接收到规则引擎触发请求时,进行全局规则前处理校验;若得到全局规则校验成功的结果时,根据请求包括的输入条件,查询得到满足条件的规则列表;解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证;若规则树验证成功,根据本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息,对输入的数据进行规则校验,返回满足请求的规则信息。本发明提供了一种高效便捷地处理业务规则的规则引擎。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及一种轻量级的规则引擎处理方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
规则引擎主要目的是为了独立持久有效地处理业务规则,但是它缺乏一种有效处理业务规则资源的高效便捷的方法。
在面向业务人员使用这个角度的设计来说,现有规则引擎主要满足于业务逻辑的图型化、类自然语言形式的展示,以及几种通用的业务规则类型设计,整体规则引擎实现起来非常的重,业务人员调用规则引擎首先需要理解规则引擎,首先面对这么重的建模和工具,就让人望而生畏,项目组的真正的需求是一个轻量级的规则引擎的实现。
其次,一般规则引擎会提供规则引擎语言,针对于技术人员使用。从这个角度的设计来说,从原则上来说,规则引擎也没有细分业务人员和技术人员之间明确的界限。因为面向业务的相关设计的缺憾,难以真正使业务人员参与到实际开发以及维护当中,业务人员无法理解规则引擎语言,所以技术人员不得不担起业务人员的责任,从技术角度来说,这是不利于最大程度发挥技术人员能力的,是降低开发效率的行为,而且相关业务规则的检索维护也比较繁琐笨重。总而言之,就是存在工具不适宜使用者使用,开发资源浪费的问题,让人感到沮丧。
综上所述,目前规则引擎繁重,因此,无法实现高效便捷地处理业务规则。
发明内容
本发明实施例提供一种轻量级的规则引擎处理方法,用以高效便捷地处理业务规则,该方法包括:
在接收到规则引擎触发请求时,进行全局规则前处理校验;
若得到全局规则校验成功的结果时,根据请求包括的输入条件,查询得到满足条件的规则列表;
解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证;
若规则树验证成功,根据本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息,对输入的数据进行规则校验,返回满足请求的规则信息。
在一个实施例中,解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证,包括:解析规则列表对应的规则树,按照先根遍历算法遍历规则树的节点,对于规则树中的每一个节点,执行下列操作:
从输入的请求数据中获取比较数据,从规则树节点中获取对应节点的校验器,将比较数据、待比较数据、数据位置一并提交给校验器进行校验;
若得到校验成功的结果时,按照先根遍历算法开始遍历当前节点的孩子节点,如果没有孩子节点,表明已经找到满足条件的规则路径,规则树验证成功。
在一个实施例中,上述轻量级的规则引擎处理方法还包括若得到验证失败的结果时,校验当前节点的兄弟节点,如果没有其它兄弟节点,返回验证失败的信息。
在一个实施例中,上述轻量级的规则引擎处理方法还包括若得到全局规则校验失败的结果时,返回验证失败的信息。
在一个实施例中,上述轻量级的规则引擎处理方法还包括按照如下方法得到本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息:从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
在一个实施例中,从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中,包括:通过查询和存储引擎提供的统一的规则访问接口,从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
在一个实施例中,统一的规则访问接口包括:规则组定义接口、规则定义接口、数据类型及操作符查询接口、数据结构定义及查询接口和数据项统一查询接口。
在一个实施例中,上述轻量级的规则引擎处理方法还包括按照如下方法创建规则:
创建规则的基本信息;
创建规则的数据结构;
解析规则树节点列表,添加数据结构对应的数据项清单;
添加规则树规则节点列表;
将规则添加到指定的规则组中。
在一个实施例中,上述轻量级的规则引擎处理方法还包括按照如下方法进行规则引擎的工作内存缓存初始化:
初始化数据项定义信息;
初始化操作类型、操作符及对应的校验器信息;
初始化数据结构信息;
初始化规则及规则树定义信息,初始化每个节点的校验器、被比较值初始化。
在一个实施例中,上述轻量级的规则引擎处理方法还包括按照如下方法进行规则及规则树初始化:
查找规则树根节点并创建根节点;
执行如下树初始化的步骤:
依次将每个节点插入到树中;
获取节点的数据类型、操作符信息;
根据节点的数据类型、操作符信息初始化校验器信息;
根据节点的数据类型、操作符信息初始化被比较值、数据位置信息;
重复上述树初始化的步骤,直至树初始化完毕;
关联规则对应的数据结构、规则组信息。
在一个实施例中,规则以规则和规则组的形式存在,规则和规则组之间是并和或的关系。
本发明实施例还提供一种轻量级的规则引擎处理装置,用以高效便捷地处理业务规则,该装置包括:
全局规则单元,用于在接收到规则引擎触发请求时,进行全局规则前处理校验;
规则查找单元,用于若得到全局规则校验成功的结果时,根据请求包括的输入条件,查询得到满足条件的规则列表;
规则解析单元,用于解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证;
规则验证单元,用于若规则树验证成功,根据本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息,对输入的数据进行规则校验,返回满足请求的规则信息。
在一个实施例中,所述规则解析单元具体用于:解析规则列表对应的规则树,按照先根遍历算法遍历规则树的节点,对于规则树中的每一个节点,执行下列操作:
从输入的请求数据中获取比较数据,从规则树节点中获取对应节点的校验器,将比较数据、待比较数据、数据位置一并提交给校验器进行校验;
若得到校验成功的结果时,按照先根遍历算法开始遍历当前节点的孩子节点,如果没有孩子节点,表明已经找到满足条件的规则路径,规则树验证成功。
在一个实施例中,上述轻量级的规则引擎处理装置还包括第一返回单元,用于若得到验证失败的结果时,校验当前节点的兄弟节点,如果没有其它兄弟节点,返回验证失败的信息。
在一个实施例中,上述轻量级的规则引擎处理装置还包括第二返回单元,用于若得到全局规则校验失败的结果时,返回验证失败的信息。
在一个实施例中,上述轻量级的规则引擎处理装置还包括规则组装单元,用于按照如下方法得到本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息:从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
在一个实施例中,所述规则组装单元具体用于:通过查询和存储引擎提供的统一的规则访问接口,从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
在一个实施例中,统一的规则访问接口包括:规则组定义接口、规则定义接口、数据类型及操作符查询接口、数据结构定义及查询接口和数据项统一查询接口。
在一个实施例中,上述轻量级的规则引擎处理装置还包括规则创建单元,用于按照如下方法创建规则:
创建规则的基本信息;
创建规则的数据结构;
解析规则树节点列表,添加数据结构对应的数据项清单;
添加规则树规则节点列表;
将规则添加到指定的规则组中。
在一个实施例中,上述轻量级的规则引擎处理装置还包括第一初始化单元,用于按照如下方法进行规则引擎的工作内存缓存初始化:
初始化数据项定义信息;
初始化操作类型、操作符及对应的校验器信息;
初始化数据结构信息;
初始化规则及规则树定义信息,初始化每个节点的校验器、被比较值初始化。
在一个实施例中,上述轻量级的规则引擎处理装置还包括第二初始化单元,用于按照如下方法进行规则及规则树初始化:
查找规则树根节点并创建根节点;
执行如下树初始化的步骤:
依次将每个节点插入到树中;
获取节点的数据类型、操作符信息;
根据节点的数据类型、操作符信息初始化校验器信息;
根据节点的数据类型、操作符信息初始化被比较值、数据位置信息;
重复上述树初始化的步骤,直至树初始化完毕;
关联规则对应的数据结构、规则组信息。
在一个实施例中,规则以规则和规则组的形式存在,规则和规则组之间是并和或的关系。
本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述轻量级的规则引擎处理方法。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述轻量级的规则引擎处理方法的计算机程序。
本发明实施例中,轻量级的规则引擎处理方案,通过:在接收到规则引擎触发请求时,进行全局规则前处理校验;若得到全局规则校验成功的结果时,根据请求包括的输入条件,查询得到满足条件的规则列表;解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证;若规则树验证成功,根据本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息,对输入的数据进行规则校验,返回满足请求的规则信息,提供了一种高效便捷地处理业务规则的规则引擎。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中轻量级的规则引擎处理方法的流程示意图;
图2为本发明实施例中规则逻辑架构的示意图;
图3为本发明实施例中轻量级的规则引擎处理方法的原理示意图;
图4为本发明实施例中规则引擎内部逻辑结构的示意图;
图5为本发明实施例中规则对象建模的示意图;
图6为本发明实施例中规则创建的流程示意图;
图7为本发明实施例中规则引擎工作内存缓存初始化流程的示意图;
图8为本发明实施例中规则及规则树初始化流程的示意图;
图9为本发明另一实施例中轻量级的规则引擎处理方法的流程示意图;
图10为本发明实施例中轻量级的规则引擎处理装置的结构示意图;
图11为本发明实施例中计算机设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
现有的规则引擎的偏重设计具体展开来讲,大概可分为,表示形式图形化,代码自然语言化,业务规则形式规范化。
首先,现有业务逻辑的表示形式图形化展示,主要包括:
1、规则流的流程图显示,图形化的各个节点表示业务逻辑中相对独立的各个功能模块;
2、通用业务规则的规范图示化页面格式。
然后,现有业务逻辑的编写本质上还是通过技术代码实现,但是将其自然语言化显示,主要分为两块内容:
1、java类结构以及其具体属性的自然语言化,直接对各层级分别人工配置对应自然语言描述,层级间以分隔符.互相连接;
2、函数方法的自然语言化,需要按照函数入参的数量,在其自然语言描述中额外插入数个占位符,以便于使用时插入其他变量。
最后,现有规则引擎只提供一定种类的业务规则导入工具,他们具备格式统一规范的特点,所处理业务问题也具备某种特定形式的特点,如:
1、操作规则条件,使用多维条件操作和查询工具对规则列,规则条目,进行定义;
2、规则的操纵,使用规则,规则组这两种维度对规则进行抽象,规则组中包含一系列的规则;
3、决策表,实现形式规则的并集和交集。
现有技术的缺点:
1、规则引擎过重:业务系统中规则很多,条目很多,引入规则引擎非常的重,但解决的问题确很简单;
2、定制规则比较繁重:业务项目对规则进行定制很麻烦,使用各种复杂的规则语言进行编写流程图、表等复杂的手段;
3、规则条目操作的简单化:规则的导入,规则的修改可以很容易的通过简易工具直接来进行操作。
因此,目前规则引擎提供的工具,基于轻量级的原则,也应该很简单就可以实现,譬如规则的导入,规则的修改,规则列的定义,规则计算表达式的定义,极大的简化了规则条目的操作。本发明实施例的目的:提供一种轻量级的规则引擎的实现方法。
综上所述,规则引擎繁重,规则定义,简单化的规则导入和规则操作工具,这是轻量级规则引擎的诉求,本发明实施例将会围绕这三点详细阐述。
图1为本发明实施例中轻量级的规则引擎处理方法的流程示意图,如图1所示,该方法包括如下步骤:
步骤101:在接收到规则引擎触发请求时,进行全局规则前处理校验;
步骤102:若得到全局规则校验成功的结果时,根据请求包括的输入条件,查询得到满足条件的规则列表;
步骤103:解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证;
步骤104:若规则树验证成功,根据本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息,对输入的数据进行规则校验,返回满足请求的规则信息。
本发明实施例提供了一种高效便捷的规则引擎处理方法,下面对该方法涉及的各个步骤进行详细介绍如下。
一、首先,介绍规则逻辑架构。
在一个实施例中,规则(规则集合)以规则和规则组的形式存在,规则和规则组之间是并和或的关系。
具体实施时,如图2所示,对于轻量级的规则引擎,无需复杂的表达式语言进行描述,规则中含规则表达式,规则可以单独存在,规则组作为一整个系列的规则组合,可以按照规则集合进行定义。规则和规则组之间可以是并和或的关系。
二、接着,介绍上述步骤101。
具体实施时,可以通过图3中“执行引擎”触发规则查询请求(规则引擎触发请求),即接收用户输入的条件,执行引擎的作用是根据输入条件,查找满足条件规则列表,执行规则验证,返回验证通过的规则或规则列表。
具体实施时,可以利用如图3所示的“全局规则”进行全局规则前处理校验,在规则执行前,需要进行规则全局前处理,规则执行前,先进行规则前处理校验,如果前处理规则校验通过,再进行当前的规则校验。
在一个实施例中,如图9所示,上述轻量级的规则引擎处理方法还可以包括:若得到全局规则校验失败的结果时,返回验证失败的信息。
三、接着,介绍上述步骤102。
具体实施时,如图9所示,若得到全局规则校验成功的结果时,可以利用图3中的“规则查找”,根据请求包括的输入条件,查询得到满足条件的规则列表。图3中的“规则查找”的作用可以是:通过规则ID、业务key、规则组ID,查找规则列表。
四、接着,介绍上述步骤103。
具体实施时,可以通过图3中的“规则解析”解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证。
在一个实施例中,如图9所示,解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证,可以包括:解析规则列表对应的规则树,按照先根遍历算法遍历规则树的节点,对于规则树中的每一个节点,执行下列操作:
从输入的请求数据中获取比较数据,从规则树节点中获取对应节点的校验器,将比较数据、待比较数据、数据位置一并提交给校验器进行校验;
若得到校验成功的结果时,按照先根遍历算法开始遍历当前节点的孩子节点,如果没有孩子节点,表明已经找到满足条件的规则路径,规则树验证成功。
在一个实施例中,如图9所示,上述轻量级的规则引擎处理方法还可以包括:若得到验证失败的结果时,校验当前节点的兄弟节点,如果没有其它兄弟节点,返回验证失败的信息。
五、接着,介绍上述步骤104。
具体实施时,可以利用图3中的“规则验证”接收用户规则验证请求,根据本地缓存的规则树定义及每个节点的校验规则、规则组与规则集数据结构与规则间的映射关系等缓存信息,对输入的数据(可以是待校验规则)进行规则校验,返回满足请求数据的规则的信息。具体地,规则节点校验,如果操作符为IN或NOT IN,被校验的节点的取值范围较大,数据量较大,需到数据库中或缓存实时查询对应的取值范围。
在一个实施例中,上述轻量级的规则引擎处理方法还可以包括:可以利用图3中的“组装规则”按照如下方法得到本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息:从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
在一个实施例中,从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中,可以包括:通过图3中的“查询和存储引擎”提供的统一的规则访问接口,从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存(可以是图3中的工作内存)中。
具体实施时,工作内存,本地缓存,系统启动时进行初始化,主要缓存了以下信息:
1.规则组定义及规则组与规则间的映射关系、规则组中每个规则的优先级。
2.规则及规则树定义信息,包括规则ID,规则树中每个节点校验规则及校验器,每个节点对应的数据名称(用以从请求数据上下文中获取对应的校验数据),被比较值取值,如果为IN或NOT IN比较器,被比较值的存储位置信息(本地缓存、数据库、分布式缓存);系统启动时,根据规则树种每个节点的数据类型、数据操作符初始化对应的节点校验器。
3.规则数据结构定义及与规则间的映射关系。
4.数据类型及与操作符间映射关系,及每个数据类型和操作符对应的校验器信息。
5.数据项统一定义,方便基于数据项ID查找对应的数据项定义信息。
在一个实施例中,统一的规则访问接口包括:规则组定义接口、规则定义接口、数据类型及操作符查询接口、数据结构定义及查询接口和数据项统一查询接口。如果操作符为IN或NOT IN操作符,数据量较大,统一的数据访问接口用以访问此类数据的取值范围。
下面再对图3中其他模块进行介绍。
议程管理器,其作用可以是:从持久化的规则库中,查询规则、数据项、数据类型操作符等信息,构建规则树,并缓存于内存中。
规则组定义和查询,其作用可以是:提供规则组定义及查询接口。
规则定义和查询,其作用可以是:提供规则及规则对应的规则树定义及查询接口。
数据类型和操作符定义,其作用可以是:提供规则引擎支持的数据类型列表及每个数据类型支持的操作符列表。
当前支持的数据类型及操作符包括:
String:==、!=、in、not in、between and、each week(周几)、each month(每月几号)、month end(月末)、law holiday(法定节假日)、weekend(周末)、birthday(生日当日)、birthday month(生日当月)(暂时不支持)
BigDecimal:==、!=、>、>=、<、<=、between and
Integer:==、!=、>、>=、<、<=、between and
对于生日当天、生日当月规则节点,校验过程中,需要调用客户信息系统API获取客户生日信息。
数据项定义,其作用可以是:提供了数据项的统一的访问接口,根据数据项ID查询对应的定义信息。
图4为本发明实施例中规则引擎内部逻辑结构的示意图;图5为本发明实施例中规则对象建模的示意图;仅仅需要抽象的五个维度可以为:规则,规则组,规则节点,规则列,规则表达式。
六、接着,介绍上述一些优选步骤。
在一个实施例中,如图6所示,上述轻量级的规则引擎处理方法还可以包括:按照如下方法创建规则:
创建规则的基本信息;
创建规则的数据结构;
解析规则树节点列表,添加数据结构对应的数据项清单;
添加规则树规则节点列表;
将规则添加到指定的规则组中。
具体实施时,规则查询和存储引擎包含的典型处理流程:创建规则、修改规则、创建规则组、将规则添加至规则组、将规则从规则组中删除等,规则创建的流程如图6所示。
在一个实施例中,如图7所示,上述轻量级的规则引擎处理方法还可以包括:按照如下方法进行规则引擎的工作内存缓存初始化:
初始化数据项定义信息;
初始化操作类型、操作符及对应的校验器信息;
初始化数据结构信息;
初始化规则及规则树定义信息,初始化每个节点的校验器、初始化被比较值。
具体实施时,规则引擎工作内存(本地)缓存初始化流程:工作内存初始化包括数据项、数据结构初始化;数据类型、操作符关系初始化;规则及规则节点树初始化;规则组及规则与规则组间关联关系初始化,其整体处理流程如图7所示。
在一个实施例中,如图8所示,上述轻量级的规则引擎处理方法还可以包括:按照如下方法进行规则及规则树初始化:
查找规则树根节点并创建根节点;
执行如下树初始化的步骤:
依次将每个节点插入到树中;
获取节点的数据类型、操作符信息;
根据节点的数据类型、操作符信息初始化校验器信息;
根据节点的数据类型、操作符信息初始化被比较值、数据位置信息;
重复上述树初始化的步骤,直至树初始化完毕;
关联规则对应的数据结构、规则组信息。
综上,本发明实施例提供的轻量级的规则引擎处理方法实现了:
1)对规则引擎进行轻量级的数据建模,规则,规则列,规则组,规则计算表达式,规则项,只通过仅仅5个数据模型就可以对业务规则进行定义。
2)规则表达式的定义非常灵活,无需繁重的规则语言进行编程实现,而是通过规则工具的简单定义,就可以完成规则的定义,实现比较轻量级。
3)规则的导入,规则的管理和修改非常的简单,无需通过编程和规则语言进行实现。
综上,本发明实施例提供的轻量级的规则引擎处理方法的优点是:本发明提供一种轻量级的规则引擎设计方案。通过对规则的轻量级的业务抽象,提供了相对独立便捷的设计维护方案,便于业务需求细节变更频繁时、或者维护变更时,业务可以灵活而不依赖技术配合地进行相关变更,避免版本重复部署上线,流程冗长费时的现状。通过业务视图高效而便于理解的设计,便于业务人员主动积极使用,参与开发,可以便捷而高效地进行业务功能配置,降低功能或技术开发维护难度,避免相关维护人员对业务逻辑细节遗忘或不熟悉时导致的细节漏洞。通过对接口、数据表的资源管理配置,动态实现规则引擎的变量库的维护,以实现变量数量上的增加、减少、以及修改其别名、属性、映射等,便于业务、技术人员快捷动态地维护。
本发明实施例中还提供了一种轻量级的规则引擎处理装置,如下面的实施例所述。由于该装置解决问题的原理与轻量级的规则引擎处理方法相似,因此该装置的实施可以参见轻量级的规则引擎处理方法的实施,重复之处不再赘述。
图10为本发明实施例中轻量级的规则引擎处理装置的结构示意图,如图10所示,该装置包括:
全局规则单元01,用于在接收到规则引擎触发请求时,进行全局规则前处理校验;
规则查找单元02,用于若得到全局规则校验成功的结果时,根据请求包括的输入条件,查询得到满足条件的规则列表;
规则解析单元03,用于解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证;
规则验证单元04,用于若规则树验证成功,根据本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息,对输入的数据进行规则校验,返回满足请求的规则信息。
在一个实施例中,所述规则解析单元具体用于:解析规则列表对应的规则树,按照先根遍历算法遍历规则树的节点,对于规则树中的每一个节点,执行下列操作:
从输入的请求数据中获取比较数据,从规则树节点中获取对应节点的校验器,将比较数据、待比较数据、数据位置一并提交给校验器进行校验;
若得到校验成功的结果时,按照先根遍历算法开始遍历当前节点的孩子节点,如果没有孩子节点,表明已经找到满足条件的规则路径,规则树验证成功。
在一个实施例中,上述轻量级的规则引擎处理装置还可以包括:第一返回单元,用于若得到验证失败的结果时,校验当前节点的兄弟节点,如果没有其它兄弟节点,返回验证失败的信息。
在一个实施例中,上述轻量级的规则引擎处理装置还可以包括:第二返回单元,用于若得到全局规则校验失败的结果时,返回验证失败的信息。
在一个实施例中,上述轻量级的规则引擎处理装置还可以包括规则组装单元,用于按照如下方法得到本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息:从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
在一个实施例中,所述规则组装单元具体用于:通过查询和存储引擎提供的统一的规则访问接口,从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
在一个实施例中,统一的规则访问接口包括:规则组定义接口、规则定义接口、数据类型及操作符查询接口、数据结构定义及查询接口和数据项统一查询接口。
在一个实施例中,上述轻量级的规则引擎处理装置还可以包括规则创建单元,用于按照如下方法创建规则:
创建规则的基本信息;
创建规则的数据结构;
解析规则树节点列表,添加数据结构对应的数据项清单;
添加规则树规则节点列表;
将规则添加到指定的规则组中。
在一个实施例中,上述轻量级的规则引擎处理装置还可以包括第一初始化单元,用于按照如下方法进行规则引擎的工作内存缓存初始化:
初始化数据项定义信息;
初始化操作类型、操作符及对应的校验器信息;
初始化数据结构信息;
初始化规则及规则树定义信息,初始化每个节点的校验器、被比较值初始化。
在一个实施例中,上述轻量级的规则引擎处理装置还可以包括第二初始化单元,用于按照如下方法进行规则及规则树初始化:
查找规则树根节点并创建根节点;
执行如下树初始化的步骤:
依次将每个节点插入到树中;
获取节点的数据类型、操作符信息;
根据节点的数据类型、操作符信息初始化校验器信息;
根据节点的数据类型、操作符信息初始化被比较值、数据位置信息;
重复上述树初始化的步骤,直至树初始化完毕;
关联规则对应的数据结构、规则组信息。
在一个实施例中,规则以规则和规则组的形式存在,规则和规则组之间是并和或的关系。
本发明实施例还提供了一种计算机设备,如图11所示,包括存储器302、处理器304及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意的撮合平台SQL脚本的生成方法。
具体的,该计算机设备可以是计算机终端、服务器或者类似的运算装置。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的撮合平台SQL脚本的生成方法的计算机程序。
具体的,计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本发明实施例中,轻量级的规则引擎处理方案,通过:在接收到规则引擎触发请求时,进行全局规则前处理校验;若得到全局规则校验成功的结果时,根据请求包括的输入条件,查询得到满足条件的规则列表;解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证;若规则树验证成功,根据本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息,对输入的数据进行规则校验,返回满足请求的规则信息,提供了一种高效便捷地处理业务规则的规则引擎。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (24)
1.一种轻量级的规则引擎处理方法,其特征在于,包括:
在接收到规则引擎触发请求时,进行全局规则前处理校验;
若得到全局规则校验成功的结果时,根据请求包括的输入条件,查询得到满足条件的规则列表;
解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证;
若规则树验证成功,根据本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息,对输入的数据进行规则校验,返回满足请求的规则信息。
2.如权利要求1所述的轻量级的规则引擎处理方法,其特征在于,解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证,包括:解析规则列表对应的规则树,按照先根遍历算法遍历规则树的节点,对于规则树中的每一个节点,执行下列操作:
从输入的请求数据中获取比较数据,从规则树节点中获取对应节点的校验器,将比较数据、待比较数据、数据位置一并提交给校验器进行校验;
若得到校验成功的结果时,按照先根遍历算法开始遍历当前节点的孩子节点,如果没有孩子节点,表明已经找到满足条件的规则路径,规则树验证成功。
3.如权利要求2所述的轻量级的规则引擎处理方法,其特征在于,还包括:若得到验证失败的结果时,校验当前节点的兄弟节点,如果没有其它兄弟节点,返回验证失败的信息。
4.如权利要求1所述的轻量级的规则引擎处理方法,其特征在于,还包括:若得到全局规则校验失败的结果时,返回验证失败的信息。
5.如权利要求1所述的轻量级的规则引擎处理方法,其特征在于,还包括按照如下方法得到本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息:从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
6.如权利要求5所述的轻量级的规则引擎处理方法,其特征在于,从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中,包括:通过查询和存储引擎提供的统一的规则访问接口,从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
7.如权利要求6所述的轻量级的规则引擎处理方法,其特征在于,统一的规则访问接口包括:规则组定义接口、规则定义接口、数据类型及操作符查询接口、数据结构定义及查询接口和数据项统一查询接口。
8.如权利要求1所述的轻量级的规则引擎处理方法,其特征在于,还包括按照如下方法创建规则:
创建规则的基本信息;
创建规则的数据结构;
解析规则树节点列表,添加数据结构对应的数据项清单;
添加规则树规则节点列表;
将规则添加到指定的规则组中。
9.如权利要求1所述的轻量级的规则引擎处理方法,其特征在于,还包括按照如下方法进行规则引擎的工作内存缓存初始化:
初始化数据项定义信息;
初始化操作类型、操作符及对应的校验器信息;
初始化数据结构信息;
初始化规则及规则树定义信息,初始化每个节点的校验器、初始化被比较值。
10.如权利要求1所述的轻量级的规则引擎处理方法,其特征在于,还包括按照如下方法进行规则及规则树初始化:
查找规则树根节点并创建根节点;
执行如下树初始化的步骤:
依次将每个节点插入到树中;
获取节点的数据类型、操作符信息;
根据节点的数据类型、操作符信息初始化校验器信息;
根据节点的数据类型、操作符信息初始化被比较值、数据位置信息;
重复上述树初始化的步骤,直至树初始化完毕;
关联规则对应的数据结构、规则组信息。
11.如权利要求1所述的轻量级的规则引擎处理方法,其特征在于,规则以规则和规则组的形式存在,规则和规则组之间是并和或的关系。
12.一种轻量级的规则引擎处理装置,其特征在于,包括:
全局规则单元,用于在接收到规则引擎触发请求时,进行全局规则前处理校验;
规则查找单元,用于若得到全局规则校验成功的结果时,根据请求包括的输入条件,查询得到满足条件的规则列表;
规则解析单元,用于解析规则列表对应的规则树,按照先根遍历算法对规则树进行遍历,并对遍历的每一个规则树节点进行验证;
规则验证单元,用于若规则树验证成功,根据本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息,对输入的数据进行规则校验,返回满足请求的规则信息。
13.如权利要求12所述的轻量级的规则引擎处理装置,其特征在于,所述规则解析单元具体用于:解析规则列表对应的规则树,按照先根遍历算法遍历规则树的节点,对于规则树中的每一个节点,执行下列操作:
从输入的请求数据中获取比较数据,从规则树节点中获取对应节点的校验器,将比较数据、待比较数据、数据位置一并提交给校验器进行校验;
若得到校验成功的结果时,按照先根遍历算法开始遍历当前节点的孩子节点,如果没有孩子节点,表明已经找到满足条件的规则路径,规则树验证成功。
14.如权利要求13所述的轻量级的规则引擎处理装置,其特征在于,还包括:第一返回单元,用于若得到验证失败的结果时,校验当前节点的兄弟节点,如果没有其它兄弟节点,返回验证失败的信息。
15.如权利要求12所述的轻量级的规则引擎处理装置,其特征在于,还包括:第二返回单元,用于若得到全局规则校验失败的结果时,返回验证失败的信息。
16.如权利要求12所述的轻量级的规则引擎处理装置,其特征在于,还包括规则组装单元,用于按照如下方法得到本地缓存的规则树定义及每个节点的校验规则、规则组数据结构与规则间的映射关系信息:从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
17.如权利要求16所述的轻量级的规则引擎处理装置,其特征在于,所述规则组装单元具体用于:通过查询和存储引擎提供的统一的规则访问接口,从持久化的规则库中,查询规则组、规则、数据项、数据结构、数据类型及操作符信息,构建规则树,并缓存于本地缓存中。
18.如权利要求17所述的轻量级的规则引擎处理装置,其特征在于,统一的规则访问接口包括:规则组定义接口、规则定义接口、数据类型及操作符查询接口、数据结构定义及查询接口和数据项统一查询接口。
19.如权利要求12所述的轻量级的规则引擎处理装置,其特征在于,还包括规则创建单元,用于按照如下方法创建规则:
创建规则的基本信息;
创建规则的数据结构;
解析规则树节点列表,添加数据结构对应的数据项清单;
添加规则树规则节点列表;
将规则添加到指定的规则组中。
20.如权利要求12所述的轻量级的规则引擎处理装置,其特征在于,还包括第一初始化单元,用于按照如下方法进行规则引擎的工作内存缓存初始化:
初始化数据项定义信息;
初始化操作类型、操作符及对应的校验器信息;
初始化数据结构信息;
初始化规则及规则树定义信息,初始化每个节点的校验器、初始化被比较值。
21.如权利要求12所述的轻量级的规则引擎处理装置,其特征在于,还包括第二初始化单元,用于按照如下方法进行规则及规则树初始化:
查找规则树根节点并创建根节点;
执行如下树初始化的步骤:
依次将每个节点插入到树中;
获取节点的数据类型、操作符信息;
根据节点的数据类型、操作符信息初始化校验器信息;
根据节点的数据类型、操作符信息初始化被比较值、数据位置信息;
重复上述树初始化的步骤,直至树初始化完毕;
关联规则对应的数据结构、规则组信息。
22.如权利要求12所述的轻量级的规则引擎处理装置,其特征在于,规则以规则和规则组的形式存在,规则和规则组之间是并和或的关系。
23.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11任一所述方法。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至11任一所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110625383.1A CN113312392A (zh) | 2021-06-04 | 2021-06-04 | 轻量级的规则引擎处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110625383.1A CN113312392A (zh) | 2021-06-04 | 2021-06-04 | 轻量级的规则引擎处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113312392A true CN113312392A (zh) | 2021-08-27 |
Family
ID=77377337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110625383.1A Pending CN113312392A (zh) | 2021-06-04 | 2021-06-04 | 轻量级的规则引擎处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113312392A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281830A (zh) * | 2022-03-01 | 2022-04-05 | 杭州涂鸦信息技术有限公司 | 多属性条件的规则映射表构建方法、规则匹配方法和装置 |
CN115081393A (zh) * | 2022-07-19 | 2022-09-20 | 上海中汇亿达金融信息技术有限公司 | 用于表达式实时组装文字展示的方法 |
CN116310440A (zh) * | 2023-03-16 | 2023-06-23 | 中国华能集团有限公司北京招标分公司 | 一种规则引擎使用方法 |
CN116450465A (zh) * | 2023-06-14 | 2023-07-18 | 建信金融科技有限责任公司 | 数据处理方法、装置、设备及介质 |
CN116846752A (zh) * | 2023-07-28 | 2023-10-03 | 钛信(上海)信息科技有限公司 | 一种基于业务场景的多云资源管理方法及系统 |
-
2021
- 2021-06-04 CN CN202110625383.1A patent/CN113312392A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114281830A (zh) * | 2022-03-01 | 2022-04-05 | 杭州涂鸦信息技术有限公司 | 多属性条件的规则映射表构建方法、规则匹配方法和装置 |
CN115081393A (zh) * | 2022-07-19 | 2022-09-20 | 上海中汇亿达金融信息技术有限公司 | 用于表达式实时组装文字展示的方法 |
CN115081393B (zh) * | 2022-07-19 | 2023-09-15 | 上海中汇亿达金融信息技术有限公司 | 用于表达式实时组装文字展示的方法 |
CN116310440A (zh) * | 2023-03-16 | 2023-06-23 | 中国华能集团有限公司北京招标分公司 | 一种规则引擎使用方法 |
CN116450465A (zh) * | 2023-06-14 | 2023-07-18 | 建信金融科技有限责任公司 | 数据处理方法、装置、设备及介质 |
CN116450465B (zh) * | 2023-06-14 | 2023-09-15 | 建信金融科技有限责任公司 | 数据处理方法、装置、设备及介质 |
CN116846752A (zh) * | 2023-07-28 | 2023-10-03 | 钛信(上海)信息科技有限公司 | 一种基于业务场景的多云资源管理方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113312392A (zh) | 轻量级的规则引擎处理方法及装置 | |
US20230084389A1 (en) | System and method for providing bottom-up aggregation in a multidimensional database environment | |
US20220342875A1 (en) | Data preparation context navigation | |
CN108519967B (zh) | 图表可视化方法、装置、终端和存储介质 | |
CN110309196A (zh) | 区块链数据存储和查询方法、装置、设备及存储介质 | |
US7853553B2 (en) | Engine for converting data from a source format to a destination format using user defined mappings | |
US10083227B2 (en) | On-the-fly determination of search areas and queries for database searches | |
US9952835B2 (en) | Generation of hybrid enterprise mobile applications in cloud environment | |
US10915532B2 (en) | Supporting a join operation against multiple NoSQL databases | |
US11556534B2 (en) | Subquery predicate generation to reduce processing in a multi-table join | |
CN111708779A (zh) | 一种数据管理方法、系统、管理设备及存储介质 | |
US8881127B2 (en) | Systems and methods to automatically generate classes from API source code | |
US20210209098A1 (en) | Converting database language statements between dialects | |
CN110673839B (zh) | 分布式工具配置化构建生成方法及系统 | |
US20210165773A1 (en) | On-demand, dynamic and optimized indexing in natural language processing | |
CN112860730A (zh) | Sql语句的处理方法、装置、电子设备及可读存储介质 | |
WO2017096155A1 (en) | Methods and systems for mapping object oriented/functional languages to database languages | |
CN112970011A (zh) | 记录查询优化中的谱系 | |
CN117453980A (zh) | 元数据管理、配置页面生成方法、服务器及存储介质 | |
US8533616B2 (en) | Time support for service adaptation | |
US10235100B2 (en) | Optimizing column based database table compression | |
US11847121B2 (en) | Compound predicate query statement transformation | |
CN116028680A (zh) | 基于图数据库的资产图谱的展示方法、装置及电子设备 | |
CN115168361A (zh) | 一种标签管理方法和装置 | |
US11074401B2 (en) | Merging delta object notation documents |
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 |