CN111930366B - 一种基于jit实时编译的规则引擎实现方法及系统 - Google Patents
一种基于jit实时编译的规则引擎实现方法及系统 Download PDFInfo
- Publication number
- CN111930366B CN111930366B CN202011081192.5A CN202011081192A CN111930366B CN 111930366 B CN111930366 B CN 111930366B CN 202011081192 A CN202011081192 A CN 202011081192A CN 111930366 B CN111930366 B CN 111930366B
- Authority
- CN
- China
- Prior art keywords
- rule
- engine
- node
- service
- calculation
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于JIT实时编译的规则引擎实现方法,该规则引擎实现方法包括以下步骤:接收业务数据并判断业务数据是否完整;基于预先配置的规则形成规则引擎,将业务数据输入规则引擎,并以节点的形式按顺序依次计算,直至计算完成,生成输出结果;规则引擎通过JIT方式实时编译实现,并且规则引擎包括规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的一个或多个;存储并输出所述输出结果;该方法实现了多个规则引擎的组合配置,增强规则引擎的处理能力和兼容性;具有规则配置的独立化优势,相互依赖的规则发生改变时,不会引起规则的递归计算。本发明公开了一种基于JIT实时编译的规则引擎实现系统。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种基于JIT实时编译的规则引擎实现方法及系统。
背景技术
在很多企业的IT业务系统中,经常会有大量的业务规则配置,而且随着企业管理的决策变化,这些业务规则也会随之发生更改。为了适应这样的需求,一般的做法是将业务规则的配置单独拿出来,使之与业务系统保持低耦合,目前为了实现这样的功能,已经开发出了规则引擎。
规则引擎是一种推理引擎,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。一般做出业务决策的过程是:接收数据输入,解释业务规则,并根据业务规则作出业务决策。
目前比较流行的规则引擎是开源的规则引擎Drools。Drools是基于Java编写的开源规则引擎,实现了Rete算法对所编写的规则求值,支持声明式表达业务逻辑。使用DSL语言编写业务规则,支持Java代码直接嵌入到规则文件中。
Drools主要分为两部分:一是Drools规则,二是Drools规则的解释执行。规则的编译和运行都要通过Drools提供的相关API来实现。而这些API总体上又可分为三类:规则编译、规则收集和规则执行。
基于Drools的规则引擎,虽然可以很好地实现业务逻辑与业务规则的分离,但是基于Drools的规则,其实是需要开发人员换一种思维方式,编写声明式业务规则,不是编写如何实现业务规则,而是需要说明要做什么,Drools引入的DRL语言比较复杂,独立的系统很难进行二次开发,同时DRL语法语言更加偏向开发人员,具体的业务人员不容易介入,导致业务人员对于在配置规则时比较困难。
另外,Drools为了避免重复计算,会将很多计算数据加入缓存中,因此这就造成规则量和数据量非常大,在这种情况下就会导致内存消耗严重,若不及时清理计算数据,会导致内存溢出;而且Drools是以内存实现的时间窗的功能,是无法支持较长跨度的时间窗,这样就使得相互作用的规则变得十分复杂和特殊,无法同时使用多种规则引擎,不支持规则引擎的组合配置,而且当其他规则依赖的规则发送变化时,也很容易引起递归依赖。
发明内容
针对上述问题,本发明的一个目的是提供一种基于JIT实时编译的规则引擎实现方法,该方法可实现同时使用规则引擎中(单一规则引擎、规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎)的多个引擎的组合配置,以增强规则引擎的处理能力和兼容性,而且该规则引擎的页面可配置化,无需业务人员了解一定的语法语言,方便业务人员根据业务场景配置规则;而且页面配置的规则计算是通过计算表达式即时计算,不需要为了避免重复计算而放入缓存中,因此不会因为规则量和数据量过大而导致内存消耗严重;具有规则配置的独立化优势,相互依赖的规则发生改变时,不会引起规则的递归计算,匹配计算效率优于Drools的规则执行。
本发明的第二个目的是提供一种基于JIT实时编译的规则引擎实现系统。
本发明所采用的第一个技术方案是:一种基于JIT实时编译的规则引擎实现方法,包括以下步骤:
步骤100:接收业务数据并判断业务数据是否完整;
步骤200:基于预先配置的规则形成规则引擎,将所述业务数据输入所述规则引擎,并以节点的形式按顺序依次计算,直至计算完成,生成输出结果;其中,所述规则引擎通过JIT方式实时编译实现,并且所述规则引擎包括规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的一个或多个;
步骤300:存储并输出所述输出结果。
优选地,在所述步骤100中,当判断业务数据不完整时,执行以下步骤:
S110:基于所述业务数据加载对应的宽表数据;
S120:基于JIT方式实时编译形成初步规则引擎,对加载的宽表数据进行计算以获得初步计算结果;所述初步规则引擎包括规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的一个或多个;
S130:输出所述计算结果,并用作步骤200中的规则引擎的业务数据。
优选地,所述步骤200还包括在计算之前预先对规则进行配置。
优选地,所述对规则进行配置是通过以下步骤来实现的:
根据业务场景定义所需要的业务字段及条件关系;
选择所述定义的业务字段,并设置条件关系以配置规则条件。
优选地,所述步骤200中,所述规则集引擎是通过以下步骤实现的:
对每个配置的规则生成计算表达式;
将多个规则及其各自的计算表达式进行集合以形成规则集;
基于选定的匹配模式将所述业务数据与所述规则集进行规则匹配,以输出匹配结果。
优选地,所述规则匹配包括全规则匹配、优先级匹配、权重匹配的一种或多种匹配方式。
优选地,所述步骤200中的规则树包括开始节点、分支节点和结束节点,通过以下步骤实现:
将待判断字段作为开始节点,将业务场景的需求条件作为分支节点,将规则树的结束输出作为结束节点,根据所述开始节点、分支节点和结束节点形成规则树;
根据业务场景和配置的业务字段对所述开始节点、分支节点和结束节点的规则条件进行配置;
基于配置后的各个节点的规则条件生成计算表达式。
优选地,所述步骤200中的评分卡引擎是通过以下步骤实现的:
根据业务场景预设各评分项的权重值;
基于输入的业务数据和配置的规则条件对所述评分卡的各个评分项进行匹配以获得初始评分值;
通过所述初始评分值与各个评分项预设的权重相乘,获取各个评分项的评分值;
通过各个评分项的评分值相加获得总评分值。
优选地,所述步骤200中的决策矩阵引擎是通过以下步骤实现的:
将根据业务场景预先设计的业务字段作为行条件和列条件;
基于所述行条件和列条件构成规则条件,生成计算表达式,进而生成决策矩阵;
基于所述业务数据和所述决策矩阵进行计算,以获得能同时满足行条件和列条件的输出字段坐标,从而得到最终的输出字段值。
本发明所采用的第二个技术方案是:一种基于JIT实时编译的规则引擎实现系统,包括接收模块、判断模块、计算模块和存储模块,其中:
所述接收模块用于接收业务数据;
所述判断模块用于判断业务数据是否完整;
所述计算模块用于基于预先配置的规则形成规则引擎,将所述业务数据输入所述规则引擎,并以节点的形式按顺序依次计算,直至计算完成,生成输出结果;其中,所述规则引擎通过JIT方式实时编译实现,并且所述规则引擎包括规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的一个或多个;
所述存储模块用于存储并输出所述输出结果。
优选地,还包括加载模块,用于基于业务数据加载对应的宽表数据。
上述技术方案的有益效果:
(1)本发明通过根据业务场景定义所需要的字段,可实现规则引擎的页面可配置化,与现有技术的Drools相比,本发明无需业务人员了解一定的语法语言,方便业务人员更加容易地根据业务场景配置规则。
(2)通过对页面配置的各个组件即规则、规则集、规则树、评分卡、脚本和决策矩阵的计算表达式进行即时计算,不需要为了避免重复计算而将计算数据放入缓存中,不会因为规则量和数据量过大而导致内存严重消耗。
(3)本发明是对各个规则进行独立配置,从而使配置后的规则具有独立化的特点,即使相互依赖的规则发生改变时,也不会引起规则的递归计算,从而使得匹配计算效率优于Drools的规则执行,而且还能支持较长跨度的时间窗。
(4)本发明基于Java程序开发,可实现Java开发人员的二次学习使用。
(5)多种结构的规则引擎的实现上,可支持更加灵活的规则匹配和计算,从而支持多种类型的规则匹配模式,例如全规则匹配、优先级匹配和权重匹配。
(6)在复杂的业务场景中,可同时使用规则引擎中(单一规则引擎、规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎)的多个引擎的组合配置实现,以增强规则引擎的处理能力和兼容性。
附图说明
图1为本发明的一个实施例提供的一种基于JIT实时编译的规则引擎实现方法的流程示意图;
图2为本发明的一个实施例提供的一种基于JIT实时编译的规则引擎实现系统的结构示意图。
具体实施方式
下面结合附图和实施例对本发明的实施方式作进一步详细描述。以下实施例的详细描述和附图用于示例性地说明本发明的原理,但不能用来限制本发明的范围,即本发明不限于所描述的优选实施例,本发明的范围由权利要求书限定。
在本发明的描述中,需要说明的是,除非另有说明,“多个”的含义是两个或两个以上;术语“第一”“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性;对于本领域的普通技术人员而言,可视具体情况理解上述术语在本发明中的具体含义。
本文使用的术语“业务数据”是指业务方提供的数据,比如:用户姓名。
本文使用的术语JIT是指实时编译(Just-In-Time,JIT),是动态编译的一种形式,是一种提高程序运行效率的方法。
本文使用的术语“宽表数据”是指业务详细数据。
本文使用的术语“规则”是指字段配置条件组合形成的规则计算表达式,基于计算表达式的计算输出结果数据。
本文使用的术语“规则引擎”是指一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。
本文使用的术语“规则集”是指多个规则及其各自的计算表达式形成的集合。
本文使用的术语“规则树”是指树形形式展示字段和配置条件计算表达式,表现规则的形式更为直观。
本文使用的术语“评分卡”是指根据对个人和机构信息进行分析之后的一种数值表达。
本文使用的术语“脚本”是指通过代码脚本的方式定义业务规则,实现业务场景。
本文使用的术语“决策矩阵”是指由行条件和列条件共同组成决策条件的矩阵表。
实施例一
图1为本发明的一个实施例提供的一种基于JIT实时编译的规则引擎实现方法的流程示意图,该规则引擎实现方法包括以下步骤:
步骤100:接收业务数据并判断业务数据是否完整,例如个人身份证号、手机号、年龄和性别(但并不限于此);
步骤200:基于预先配置的规则形成规则引擎,所述规则引擎包括单一规则引擎、规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的一个或多个,将所述业务数据输入所述规则引擎并以节点的形式按顺序依次计算,直至计算完成,生成规则引擎的输出结果;所述单一规则引擎、规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎能配合使用,也能单独使用;
步骤300:存储并输出所述输出结果。
进一步的,在步骤100中,当判断业务数据不完整即缺少部分业务数据时,还包括以下步骤:
(1)基于所述业务数据加载对应的宽表数据,如用户的详细数据,包括但不限于用户姓名、年龄和家庭地址;
(2)基于JIT方式实时编译形成初步规则引擎,对加载到的宽表数据进行计算以获得初步计算结果;所述初步规则引擎包括单一规则引擎、规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的一个或多个;
(3)输出所述初步计算结果,并用作步骤200中的规则引擎的业务数据以便再次进行规则引擎计算。通过上述单一规则引擎、规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎的配合使用,即使输入不全的业务数据也能得出正确的规则引擎计算结果。
例如:当上游发送的业务数据只包括客户身份证号、客户学历和性别,业务数据中并不含有客户的年龄,业务数据不全,此时先利用脚本引擎根据客户身份证号计算客户年龄,根据计算得出的客户年龄,再利用单一规则引擎判断是否满足规则条件,若年龄不满足条件,则跳过后续决策,返回借款数额为0;若满足条件,则根据客户的学历和性别利用评分卡引擎对客户进行评分计算,根据评分卡返回的评分值,利用规则树引擎进行不同分支计算并返回决策结果。因此,即使在输入的业务数据不全的情况下,也能通过各规则引擎的配合使用输出正确的计算结果。
进一步的,在步骤200中还包括:在计算之前预先对规则进行配置。
其中,对规则进行配置是通过以下方法来配置的:
(1)根据业务场景定义所需要的业务字段,例如判断用户年龄大于20并且性别为男,则命中此规则,需定义年龄和性别两个字段;
(2)在规则条件配置中选择上述定义的业务字段,设定条件关系,例如在规则条件配置中选择年龄字段,条件为大于20,性别字段等于男,条件关系为“与(&&)”。
通过上述配置步骤可以支持复杂的业务逻辑的条件配置,可支持多重复杂的“与(&&)”和“或(||)”的逻辑配置。
进一步的,所述步骤200中形成单一规则引擎包括:基于配置的规则生成计算表达式;以及根据接收到的业务数据输入和所述计算表达式进行计算以获得计算结果,根据所述计算结果判断是否命中规则。
例如计算表达式是:年龄=20,如果业务数据里年龄是20,那计算的时候就会命中,计算结果返回的是true,即为命中。
进一步的,所述步骤200中形成规则集引擎包括:对每个配置的规则生成计算表达式;将多个规则及其各自的计算表达式进行集合以形成规则集;基于不同的匹配模式将输入的业务数据与所述规则集进行匹配,以输出匹配结果。
其中,匹配模式包括全规则匹配、优先级匹配、权重匹配中的一种或多种;具体说明如下:
全规则匹配为:对于规则集中的所有规则按顺序全部进行计算,当且仅当所有规则均命中时判断所述规则集命中,也就是说,只要其中有一个规则未命中,就判断所述规则集未命中,且不再计算剩余的其它规则。
优先级匹配为:对于规则集中的每条规则设定优先级,根据每个规则的优先级高低排序对规则进行计算,其中,优先级高的规则优先计算,只要有一条规则命中则判断所述规则集命中,且不再计算优先级较低的其它规则;
权重匹配为:对规则集预先设定匹配阈值,并且为规则集中的每条规则配置相应的权重。一般来说,不同的业务场景下,权重的配置不同,可以由业务方提供或根据不同的业务场景需求具体分析配置。规则集的配置需要根据业务场景配置权重字段和阈值,每条规则的阈值的计算方式为:权重字段值*该条规则的权重值。将规则集中所有规则的阈值相加可以得出规则集的总阈值,如果总阈值大于或等于预先设定的匹配阈值,即判断该规则集命中。
进一步的,所述步骤200中的规则树包括开始节点(根节点)、分支节点(子节点)和结束节点,整个节点结构展开呈现树形形态。开始节点是规则树条件的入口,用于设置需要判断的字段,分支条件是规则树设置的条件,用于设置业务场景的需求条件,结束节点是规则树的最终输出。
优选的,所述规则树通过如下方式形成:
将待判断字段作为开始节点,将业务场景的需求条件作为分支节点,将规则树的结束输出作为结束节点,根据所述开始节点、分支节点和结束节点形成规则树;
其中,在对规则树的各个节点的规则条件进行配置之前,需要预先根据具体的业务场景配置业务字段,业务字段的配置方法与前文所述配置规则的业务字段的方法相似,这里不再赘述。
然后,根据业务场景和配置的业务字段配置各个节点的规则条件,具体的:从开始节点开始执行计算,开始节点为规则树条件入口(根节点),即选择需要进行计算的业务字段,例如年龄;分支节点基于开始节点中该业务字段的规则条件设置,例如年龄大于20,年龄小于50等;结束节点为规则树的输出节点,例如满足年龄大于20,则输出决策结果为通过;
然后,基于配置好的各个节点的规则条件生成计算表达式,该计算表达式为可即时计算的表达式。
规则树的具体判断过程是根据输入的业务数据和各节点的计算表达式进行的,判断过程是:
计算开始经过开始节点,判断业务数据有无预先定义的业务字段,若有,则取出业务字段的值;基于业务字段的值计算后续的条件分支,如果满足分支节点的条件,即为命中该分支节点;如果不满足分支节点的条件,即为未命中该分支节点;
若未命中该分支节点,则计算其他分支节点及其后续节点;
若命中该分支节点,则继续计算该分支节点的后续节点,后续节点可能为分支节点或结束节点,若为分支节点则继续计算,若为结束节点,则计算结束节点的输出字段值,规则树计算完成。
进一步的,步骤200中所述的形成评分卡引擎包括:
根据业务场景预设各评分项的权重值;
基于输入的业务数据和配置的规则条件对所述评分卡的各个评分项进行匹配以获得初始评分值;
通过所述初始评分值与各个评分项预设的权重相乘,获取各个评分项的评分值。
总评分值是通过各个评分项的评分值相加获得;
所述总评分值用于其它规则引擎的业务数据,若该业务数据(总评分值)命中所述其它规则引擎的规则条件则输出决策结果为通过。
评分项的条件设置为评分卡的计算表达式,其条件的计算生成是通过后台代码逻辑实现的。评分卡的判断是根据设置的评分卡选项,根据其它规则引擎的规则条件和条件计算后的返回值(总评分值)判断是否命中其它规则引擎中的规则。
例如,设置评分卡条件进行用户评分判断,计算最终评分值;预设年龄权重值为100%;根据输入的业务数据(年龄38)匹配评分卡配置的规则条件(年龄字段小于20,评分值为40;年龄字段大于20小于50,评分值为60;年龄字段大于50,评分值为80);得出年龄评分项的评分值为初始评分值60×权重值100%;总评分值是通过每个评分项评分值相加获得。
若总评分值高于其它规则引擎(例如单一规则引擎)的规则条件80,即判定为满足授信条件,输出决策结果为通过至下游系统。
进一步的,步骤200中所述的形成脚本引擎包括:根据自定义函数生成执行脚本,对所述执行脚本直接执行计算,从而提高了即时计算效率。
进一步的,步骤200中所述的形成决策矩阵引擎包括:
将根据业务场景预先设计的业务字段作为行条件和列条件,例如预先定义的年龄和性别字段,年龄大于20作为一列条件,年龄大于50作为二列条件,性别为男为一行条件,性别为女为二行条件;
根据上述行条件和列条件构成规则条件,即计算表达式,例如年龄大于20,表达式为age>20;
由上述行条件和列条件生成决策矩阵,例如若年龄大于20,性别为男,输出为通过;
基于业务数据输入和所述行条件、列条件进行计算,以获得能同时满足行条件和列条件的输出字段坐标,从而得到最终的输出字段值,即为决策矩阵的输出字段值。
以简单的额度授信场景为例,配置年龄限制规则节点,若满足年龄条件大于20且小于55,则执行后续节点,若不满足年龄条件限制,则直接输出决策结果为拒绝至下游系统,在年龄限制规则节点后续配置信用历史评分卡节点,设置评分卡条件进行用户评分判断,计算最终评分,若评分高于80,即判定为满足授信条件,输出决策结果为通过至下游系统。
上文中分别对各个规则引擎(单一规则引擎、规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎)的实现方式进行了说明,然而本发明并不限于此,在更为复杂的业务场景中,可同时使用上述规则引擎中的多个引擎的组合配置实现,以增强规则引擎的处理能力和兼容性。
例如,在一个优选实施例中,采用脚本引擎、单一规则引擎、评分卡引擎和规则树引擎组合的方式来实现,具体的,以简单的借款业务场景为例,根据客户不同的评分值返回可借款数额;基于上游发送的业务数据,例如包括客户身份证号,客户学历和性别;利用脚本引擎根据客户身份证号计算客户年龄,根据计算得出的客户年龄,利用单一规则引擎判断是否满足规则条件,若年龄不满足条件,则跳过后续决策,返回借款数额为0;若满足条件,则根据客户的学历和性别利用评分卡引擎对客户进行评分计算,根据评分卡返回的评分值,利用规则树引擎进行不同分支计算并返回决策结果。各个规则引擎之间相互独立,可根据不同的业务场景进行不同的引擎选择组合,完成并实现满足业务场景的配置。
本发明提出的上述规则引擎,包括了多种规则组件化的实现方式,使得业务人员更加容易地可以介入配置规则,从而实现了业务规则的可配置化。
本发明的规则引擎的计算均基于JIT进行的实时计算决策,并以策略流(规则、规则集、规则树、评分卡、脚本、决策矩阵)的形式按顺序计算,计算顺序可以根据预先设定的计算顺序来进行,不需要为了避免重复计算而将计算数据放入缓存中,不会因为规则量和数据量过大而导致内存严重消耗,并且可支持更加灵活的规则匹配和计算,从而支持多种类型的规则匹配模式。
实施例二
图2为本发明的一个实施例提供的一种基于JIT实时编译的规则引擎实现系统的结构示意图,该规则引擎实现系统包括接收模块、判断模块、计算模块和存储模块,其中:
接收模块用于接收业务数据;
判断模块用于判断业务数据是否完整;
计算模块用于基于预先配置的规则形成规则引擎,将所述业务数据输入所述规则引擎,并以节点的形式按顺序依次计算,直至计算完成,生成输出结果;其中,所述规则引擎通过JIT方式实时编译实现,并且所述规则引擎包括规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的一个或多个;
存储模块用于存储并输出所述输出结果。
进一步的,在一个实施例中,还包括加载模块,用于基于业务数据加载对应的宽表数据。
上述各个模块的具体实施方式与实施例一的各个规则引擎实现方法步骤的具体实施方式一致,在此不再赘述。
本发明在复杂的业务场景中,可同时使用规则引擎中(单一规则引擎、规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎)的多个引擎的组合配置实现,以增强规则引擎的处理能力和兼容性;通过根据业务场景定义所需要的字段,可实现规则引擎的页面可配置化,与现有技术的Drools相比,本发明无需业务人员了解一定的语法语言,方便业务人员更加容易地根据业务场景配置规则;
另外,通过对页面配置的各个组件即规则、规则集、规则树、评分卡、脚本和决策矩阵的计算表达式进行即时计算,不需要为了避免重复计算而将计算数据放入缓存中,不会因为规则量和数据量过大而导致内存严重消耗;
而且,本发明是对各个规则进行独立配置,从而使配置后的规则具有独立化的特点,即使相互依赖的规则发生改变时,也不会引起规则的递归计算,从而使得匹配计算效率优于Drools的规则执行,而且还能支持较长跨度的时间窗;
本发明的规则模型是指规则引擎包括的所有组件,包括规则、规则集、规则树、评分卡、脚本和决策矩阵,在多种结构的规则模型的实现上,可支持更加灵活的规则匹配和计算,从而支持多种类型的规则匹配模式,例如全规则匹配、优先级匹配和权重匹配。
本领域普通技术人员可以意识到,结合本发明实施例中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (7)
1.一种基于JIT实时编译的规则引擎实现方法,其特征在于,包括以下步骤:
步骤100:接收业务数据并判断业务数据是否完整;当判断业务数据不完整时,执行以下步骤:
S110:基于所述业务数据加载对应的宽表数据;
S120:基于JIT方式实时编译形成初步规则引擎,对加载的宽表数据进行计算以获得初步计算结果;所述初步规则引擎包括规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的一个或多个;
S130:输出所述计算结果,并用作步骤200中的规则引擎的业务数据;
步骤200:基于预先配置的规则形成规则引擎,将所述步骤S130中获得的业务数据输入所述规则引擎,并以节点的形式按顺序依次计算,直至计算完成,生成输出结果;其中,所述规则引擎通过JIT方式实时编译实现,并且所述规则引擎包括规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的多个,各个规则引擎之间相互独立,并根据不同的业务场景进行组合使用;
步骤300:存储并输出所述输出结果;
其中,所述步骤200还包括在计算之前预先对规则进行配置,所述对规则进行配置是通过以下步骤来实现的:
根据业务场景定义所需要的业务字段及条件关系;
选择所述业务字段,并设置条件关系以配置规则条件。
2.根据权利要求1所述的规则引擎实现方法,其特征在于,所述步骤200中,所述规则集引擎是通过以下步骤实现的:
对每个配置的规则生成计算表达式;
将多个规则及其各自的计算表达式进行集合以形成规则集;
基于选定的匹配模式将所述业务数据与所述规则集进行规则匹配,以输出匹配结果。
3.根据权利要求2所述的规则引擎实现方法,其特征在于,
所述规则匹配包括全规则匹配、优先级匹配、权重匹配的一种或多种匹配方式。
4.根据权利要求1所述的规则引擎实现方法,其特征在于,所述步骤200中的规则树包括开始节点、分支节点和结束节点,通过以下步骤实现:
将待判断字段作为开始节点,将业务场景的需求条件作为分支节点,将规则树的结束输出作为结束节点,根据所述开始节点、分支节点和结束节点形成规则树;
根据业务场景和配置的业务字段对所述开始节点、分支节点和结束节点的规则条件进行配置;
基于配置后的各个节点的规则条件生成计算表达式。
5.根据权利要求1所述的规则引擎实现方法,其特征在于,所述步骤200中的评分卡引擎是通过以下步骤实现的:
根据业务场景预设各评分项的权重值;
基于输入的业务数据和配置的规则条件对所述评分卡的各个评分项进行匹配以获得初始评分值;
通过将所述初始评分值与各个评分项预设的权重相乘,获取各个评分项的评分值;
通过将各个评分项的评分值相加获得总评分值。
6.根据权利要求1所述的规则引擎实现方法,其特征在于,所述步骤200中的决策矩阵引擎是通过以下步骤实现的:
将根据业务场景预先设计的业务字段作为行条件和列条件;
基于所述行条件和列条件构成规则条件,生成计算表达式,进而生成决策矩阵;
基于所述业务数据和所述决策矩阵进行计算,以获得能同时满足行条件和列条件的输出字段坐标,从而得到最终的输出字段值。
7.一种基于JIT实时编译的规则引擎实现系统,其特征在于,包括接收模块、判断模块、加载模块、计算模块和存储模块,其中:
所述接收模块用于接收业务数据;
所述判断模块用于判断业务数据是否完整;
所述加载模块用于当判断业务数据不完整时,基于所述业务数据加载对应的宽表数据并基于JIT方式实时编译形成初步规则引擎,对加载的宽表数据进行计算以获得初步计算结果;所述初步规则引擎包括规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的一个或多个;输出所述计算结果,并用作所述计算模块中的规则引擎的业务数据;
所述计算模块用于基于预先配置的规则形成规则引擎,将所述加载模块中业务数据输入所述规则引擎,并以节点的形式按顺序依次计算,直至计算完成,生成输出结果;其中,所述规则引擎通过JIT方式实时编译实现,并且所述规则引擎包括规则集引擎、规则树引擎、评分卡引擎、决策矩阵引擎和脚本引擎中的多个,各个规则引擎之间相互独立,并根据不同的业务场景进行组合使用;
所述存储模块用于存储并输出所述输出结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011081192.5A CN111930366B (zh) | 2020-10-12 | 2020-10-12 | 一种基于jit实时编译的规则引擎实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011081192.5A CN111930366B (zh) | 2020-10-12 | 2020-10-12 | 一种基于jit实时编译的规则引擎实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111930366A CN111930366A (zh) | 2020-11-13 |
CN111930366B true CN111930366B (zh) | 2021-02-09 |
Family
ID=73333726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011081192.5A Active CN111930366B (zh) | 2020-10-12 | 2020-10-12 | 一种基于jit实时编译的规则引擎实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930366B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112882687A (zh) * | 2020-12-10 | 2021-06-01 | 宝付网络科技(上海)有限公司 | 一种高效的通用型规则引擎的实现方法 |
CN113377419A (zh) * | 2021-05-31 | 2021-09-10 | 同盾科技有限公司 | 一种业务处理方法、装置、可读存储介质及电子设备 |
CN114020762A (zh) * | 2021-11-09 | 2022-02-08 | 中国建设银行股份有限公司 | 一种用户评价规则引擎系统及其方法和装置 |
CN117971203A (zh) * | 2023-12-22 | 2024-05-03 | 上海米链信息技术有限公司 | 基于微服务架构的数据处理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140122052A1 (en) * | 2012-11-01 | 2014-05-01 | Fortinet, Inc. | Detection of jit spraying by flash with an actionscript emulator |
CN106909454A (zh) * | 2015-12-22 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种规则处理方法和设备 |
CN109189393A (zh) * | 2018-07-24 | 2019-01-11 | 中国联合网络通信集团有限公司 | 业务处理方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190220294A1 (en) * | 2018-01-17 | 2019-07-18 | International Business Machines Corporation | Using lightweight jit compilation for short-lived jvms on parallel distributing computing framework |
US10635429B2 (en) * | 2018-09-27 | 2020-04-28 | Citrix Systems, Inc. | Systems and methods of just-in-time proactive notification of a product release containing a software fix |
CN111580931A (zh) * | 2020-05-10 | 2020-08-25 | 江苏省互联网行业管理服务中心 | 支持多元协议变量的组合表达式的匹配规则引擎 |
-
2020
- 2020-10-12 CN CN202011081192.5A patent/CN111930366B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140122052A1 (en) * | 2012-11-01 | 2014-05-01 | Fortinet, Inc. | Detection of jit spraying by flash with an actionscript emulator |
CN106909454A (zh) * | 2015-12-22 | 2017-06-30 | 阿里巴巴集团控股有限公司 | 一种规则处理方法和设备 |
CN109189393A (zh) * | 2018-07-24 | 2019-01-11 | 中国联合网络通信集团有限公司 | 业务处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
Java各种规则引擎;yasepix;《https://www.cnblogs.com/yasepix/p/12125253.html》;20191231;第1-3、12页 * |
Urule开源版系列1——代码结构及运行;龙城飞将军;《https://www.cnblogs.com/jason0529/p/13521125.html》;20200818;第1页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111930366A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111930366B (zh) | 一种基于jit实时编译的规则引擎实现方法及系统 | |
US9251466B2 (en) | Driving an interactive decision service from a forward-chaining rule engine | |
CN111552880B (zh) | 基于知识图谱的数据处理方法、装置、介质及电子设备 | |
Oukil et al. | Ranking dispatching rules in multi-objective dynamic flow shop scheduling: a multi-faceted perspective | |
CN111506801A (zh) | 一种应用App中子应用的排序方法及装置 | |
CN109598563A (zh) | 刷单检测方法、装置、存储介质和电子设备 | |
WO2018040069A1 (zh) | 信息推荐系统及方法 | |
Giachetti et al. | Entry mode degree of control, firm performance and host country institutional development: A meta-analysis | |
WO2021190379A1 (zh) | 实现自动机器学习的方法及装置 | |
CN106648688A (zh) | 一种信息展示方法和装置 | |
CN111723292A (zh) | 基于图神经网络的推荐方法、系统、电子设备及存储介质 | |
CN115082203A (zh) | 生息方案推送方法、装置、电子设备及存储介质 | |
US20230418871A1 (en) | Systems, methods, computing platforms, and storage media for comparing non-adjacent data subsets | |
CN112287111A (zh) | 一种文本处理方法和相关装置 | |
JP2010186283A (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム | |
US11256748B2 (en) | Complex modeling computational engine optimized to reduce redundant calculations | |
WO2023185125A1 (zh) | 产品资源的数据处理方法及装置、电子设备、存储介质 | |
CN111652673A (zh) | 智能推荐方法、装置、服务器和存储介质 | |
US20230048938A1 (en) | Generating actionable insight interfaces derived from business data sets | |
Soriano | Maximizing benefits from IT project management: from requirements to value delivery | |
Shin | Socio-technical design of algorithms: Fairness, accountability, and transparency | |
CN115270923A (zh) | 一种基于场景的可视化智能决策方法及系统 | |
JP5156692B2 (ja) | 擬似データ生成装置、擬似データ生成方法及びコンピュータプログラム | |
CN113742581A (zh) | 榜单的生成方法、装置、电子设备及可读存储介质 | |
CN113076317B (zh) | 基于大数据的数据处理方法、装置、设备及可读存储介质 |
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 |