CN109857833B - 一种规则引擎实现方法、装置及电子设备 - Google Patents
一种规则引擎实现方法、装置及电子设备 Download PDFInfo
- Publication number
- CN109857833B CN109857833B CN201811648322.1A CN201811648322A CN109857833B CN 109857833 B CN109857833 B CN 109857833B CN 201811648322 A CN201811648322 A CN 201811648322A CN 109857833 B CN109857833 B CN 109857833B
- Authority
- CN
- China
- Prior art keywords
- rule
- operator
- business
- business rules
- rules
- 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
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种规则引擎实现方法、装置及电子设备,该方法包括:对业务逻辑进行规则的抽象分析,获取业务规则,并基于所述业务规则,进行归纳总结,建立基础规则算子;基于不同所述业务规则间的逻辑关系,建立各所述业务规则间的逻辑关系算子;利用所述基础规则算子和所述逻辑关系算子,对所述业务逻辑中的所有所述业务规则进行表示,获取算子表示的业务规则,并基于所述算子表示的业务规则,构成所述规则引擎。本发明能够有效提高规则引擎的可扩展性,降低对规则引擎的使用成本,并使得对规则引擎的维护更加方便、快捷。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种规则引擎实现方法、装置及电子设备。
背景技术
在IT领域,规则引擎的出现,使得开发人员能够从复杂的规则逻辑判断中被解放出来,从而能专注于业务代码的开发。规则引擎在促销、红包等运营项目中的应用越来越广泛。随着运营活动的手段越来越丰富,对应的规则也越来越多,规则的匹配效率和可扩展性成为衡量一个规则引擎好坏的标准。
目前,使用最广泛的规则引擎是Drools,其基于RETE算法,速度快且效率高,常用于一些大型项目中。尽管Drools在大型企业项目应用中具有很多优点,但是其并不适用于灵活多变的互联网项目,主要体现在:Drools的使用成本较高;Drools的规则使用领域专用语言(Domain Specific Language,DSL)来描述,仅仅适合描述简单的规则,对于复杂的规则需要特殊配置,维护起来不方便;Drools适用于大型企业项目,但是对于灵活多变的互联网项目,其可扩展性较差。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明提供一种规则引擎实现方法、装置及电子设备,用以有效提高规则引擎的可扩展性,降低对规则引擎的使用成本,并使得对规则引擎的维护更加方便、快捷。
第一方面,本发明提供一种规则引擎实现方法,包括:对业务逻辑进行规则的抽象分析,获取业务规则,并基于所述业务规则,进行归纳总结,建立基础规则算子;基于不同所述业务规则间的逻辑关系,建立各所述业务规则间的逻辑关系算子;利用所述基础规则算子和所述逻辑关系算子,对所述业务逻辑中的所有所述业务规则进行表示,获取算子表示的业务规则,并基于所述算子表示的业务规则,构成所述规则引擎。
进一步的,在所述对所述业务逻辑中的所有所述业务规则进行表示,获取算子表示的业务规则的步骤之后,所述方法还包括:基于所有所述算子表示的业务规则,在内存中创建关于所有所述算子表示的业务规则的倒排索引;相应的,所述基于所述算子表示的业务规则,构成所述规则引擎的步骤进一步包括:基于所述算子表示的业务规则和所述倒排索引,构成所述规则引擎。
其中,所述对业务逻辑进行规则的抽象分析,获取业务规则的步骤进一步包括:根据所述业务逻辑的语言描述,提取条件-结果(if-then)语句,并基于所述条件-结果语句,构成所述业务规则。
其中,所述业务规则中包括条件单元和决策单元;相应的,所述基于所述业务规则,进行归纳总结,建立基础规则算子的步骤进一步包括:基于所有所述业务规则,通过对所述条件-结果语句的归纳总结,建立所述基础规则算子如下:规则=条件+决策;式中,条件表示规则中进行对应决策时,需要满足的设定条件,决策表示当对应设定条件得到满足时,要进行的行为决策;
相应的,所述利用所述基础规则算子和所述逻辑关系算子,对所述业务逻辑中的所有所述业务规则进行表示,获取算子表示的业务规则的步骤进一步包括:利用所述基础规则算子,对所有所述业务规则的条件单元和决策单元分别进行表示,获取算子表示的基础业务规则,所述算子表示的基础业务规则中包括条件算子单元和决策算子单元;利用所述逻辑关系算子,分别对不同业务规则的条件单元间的逻辑关系以及决策单元间的逻辑关系进行表示,获取算子表示的逻辑关系;基于所述算子表示的基础业务规则和所述算子表示的逻辑关系,构成所述算子表示的业务规则。
其中,所述基于不同所述业务规则间的逻辑关系,建立各所述业务规则间的逻辑关系算子的步骤进一步包括:基于不同所述业务规则中条件单元间的逻辑关系,建立该条件单元间的逻辑关系算子;基于不同所述业务规则中决策单元间的逻辑关系,建立该决策单元间的逻辑关系算子。
其中,所述基于所有所述算子表示的业务规则,在内存中创建关于所有所述算子表示的业务规则的倒排索引的步骤进一步包括:对各所述算子表示的业务规则分别进行编码,获取各所述算子表示的业务规则分别对应的唯一编码;提取各所述算子表示的业务规则中的算子条件单元,作为索引键,并确定该算子表示的业务规则的所述唯一编码,作为索引值;基于各所述算子表示的业务规则对应的索引键和索引值,在内存中创建所述倒排索引。
进一步的,在所述在内存中创建关于所有所述算子表示的业务规则的倒排索引的步骤之后,所述方法还包括:构建所述倒排索引的修改逻辑,用以在所述业务规则发生变动时,基于变动前的业务规则和变动后的业务规则,同步调整所述倒排索引。
第二方面,本发明提供一种规则引擎实现装置,包括:基础规则算子建立模块,用于对业务逻辑进行规则的抽象分析,获取业务规则,并基于所述业务规则,进行归纳总结,建立基础规则算子;逻辑关系算子建立模块,用于基于不同所述业务规则间的逻辑关系,建立各所述业务规则间的逻辑关系算子;规则引擎生成模块,用于利用所述基础规则算子和所述逻辑关系算子,对所述业务逻辑中的所有所述业务规则进行表示,获取算子表示的业务规则,并基于所述算子表示的业务规则,构成所述规则引擎。
第三方面,本发明提供一种电子设备,包括:至少一个处理器,以及至少一个与所述处理器通信连接的存储器;所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上所述的规则引擎实现方法。
第四方面,本发明提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上所述的规则引擎实现方法。
本发明提供的一种规则引擎实现方法、装置及电子设备,通过对业务规则进行抽象,定义了规则算子,通过算子来任意组合各种业务规则,具有很好的扩展性,可以满足复杂的规则要求,能够很好的适用于业务灵活多变且规则多、访问量高的场景。
附图说明
图1为本发明实施例一种规则引擎实现方法的流程图;
图2为根据本发明实施例一种规则引擎实现方法中条件的逻辑关系算子示意图;
图3为本发明实施例一种规则引擎实现装置的结构示意图;
图4为本发明实施例一种电子设备的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到目前广泛使用的规则引擎Drools,存在使用成本高、维护不方便及可扩展性较差等问题,本发明实施例提出了一种规则引擎新的实现思路:对待处理的业务规则进行抽象,并根据抽象结果定义规则算子,再通过算子来任意组合各种业务规则,实现最终的规则引擎。这种规则引擎具有很好的扩展性,从而可以满足更加复杂、灵活的规则要求。
另外,为了判断规则是否生效,需要逐条对规则进行判断,而如果规则数量众多,该过程将非常耗时。因此,本发明实施例考虑通过对规则建立内存倒排索引,来提高规则的匹配速度,从而提高大数据量规则并发请求时的处理速度。基于本发明实施例的实现方法,可以快速构建一套高效可扩展的轻量级的规则引擎,适用于业务灵活多变且规则多访问量高的场景。
作为本发明实施例的一个方面,本实施例提供一种规则引擎实现方法,参考图1,为本发明实施例一种规则引擎实现方法的流程图,包括:
S1,对业务逻辑进行规则的抽象分析,获取业务规则,并基于业务规则,进行归纳总结,建立基础规则算子。
可以理解为,对于常规的业务逻辑,通常用业务逻辑语言进行表述。该业务逻辑语言表述中,可能包含相关的业务规则,这些业务规则可以通过对业务逻辑语言进行抽象分析得到。
之后,对于不同的业务规则,可以对其进行进一步分析、归纳并总结,并将总结结果用算式进行描述,得到同一类型业务规则最终的算式表示,即基础规则算子。可以理解,基础规则算子是指对业务规则的归纳总结,将规则用算式进行表示的形式,即为基础规则算子。具体规则类型不同,基础规则算子也会不同。
其中,业务逻辑是在智能网中,对利用积木式组件和基本呼叫处理模块的组合来完成每项业务特征的过程描述。而智能网是用于生成和提供电信新业务的网路结构体系。本发明实施例中业务逻辑包含关于某件事务的处理规则,例如,“If新用户:Then满100减10”。
S2,基于不同业务规则间的逻辑关系,建立各业务规则间的逻辑关系算子。
可以理解为,对于不同的业务规则,其之间可能存在某种逻辑关系。通过分析不同业务规则的这种逻辑关系,并根据该逻辑关系建立这些业务规则间的逻辑算式,作为逻辑关系算子。
例如,对于规则“If新用户:Then满100减10”、“If淡季商品:Then 9.5折优惠”和“If新用户AND淡季商品:Then满100减10&&9.5折优惠”,第三个规则中“新用户AND淡季商品”是前两个规则中“新用户”和“淡季商品”的合并。即,三条规则中,第三个规则的条件=第一个规则的条件&&第二个规则的条件,则该算式即可定义为是上述三个规则间的逻辑关系算子。
S3,利用基础规则算子和逻辑关系算子,对业务逻辑中的所有业务规则进行表示,获取算子表示的业务规则,并基于算子表示的业务规则,构成规则引擎。
可以理解为,在根据上述步骤定义所有规则的基础规则算子和规则间逻辑关系算子的基础上,利用这些算子表示业务逻辑中的所有业务规则。即,将自然语言或者计算机语言表示的业务规则,表示成具有基础规则算子所定义的算式结构的形式,得到算子表示的基础业务规则。
另外,对于业务逻辑中的多个业务规则之间,根据其不同的逻辑关系,利用逻辑关系算子进行表示,得到算子表示的逻辑关系。算子表示的逻辑关系例如,第三个规则的条件=第一个规则的条件&&第二个规则的条件。
可以理解的是,本发明实施例中的算子表示的基础业务规则和算子表示的逻辑关系共同构成算子表示的业务规则。
之后,根据上述得到的算子表示的业务规则,即算子表示的基础业务规则以及算子表示的逻辑关系,进行有序的排列,构成对应的规则引擎。之后在已知查询条件的情况下,即可利用该规则引擎,查询到对应的处理策略。
可以理解,上述有序的排列中的有序,可以根据事先任意设定的排序规则实现。例如,可以根据业务逻辑中业务规则出现的先后顺序排列,或者根据业务逻辑中相同业务规则出现的频次顺序排序,或者根据算子表示的业务规则中的时间先后顺序排列等实现。
本发明实施例提供的一种规则引擎实现方法,通过对业务规则进行抽象,定义了规则算子,通过算子来任意组合各种业务规则,具有很好的扩展性,可以满足复杂的规则要求,能够很好的适用于业务灵活多变且规则多、访问量高等的场景。
进一步的,在上述实施例的基础上,在对业务逻辑中的所有业务规则进行表示,获取算子表示的业务规则的步骤之后,该方法还包括:基于所有算子表示的业务规则,在内存中创建关于所有算子表示的业务规则的倒排索引。
相应的,基于算子表示的业务规则,构成规则引擎的步骤进一步包括:基于算子表示的业务规则和倒排索引,构成规则引擎。
可以理解为,考虑到在利用上述实施例的规则引擎进行查询或应用时,为了判断规则是否生效,需要逐条对规则进行判断,而如果规则数量众多,该过程将会耗费大量的时间,严重影响处理效率。为此,本实施例通过对所有算子表示的业务规则进行分析分解,并对这些算子表示的业务规则建立倒排索引,将该倒排索引在应用项目启动时,写入到内存中。
则相应的,在构成规则引擎时,除考虑业务规则本身相关的算子表示的业务规则和算子表示的逻辑关系之外,还引入倒排索引,三者一起构成最终的规则引擎。则在应用该规则引擎进行规则匹配的过程中,当已知检索条件时,先利用倒排索引确定该检索条件相关的规则,再根据这些相关的规则,对该检索条件进行规则匹配,确定最终匹配的规则。
可以理解,其中倒排索引源于实际应用中需要根据属性的值来查找记录,这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。通常正排索引是通过查找记录来得到属性值,倒排索引是由属性值来确定记录的位置,而非由记录来确定属性值。本发明实施例中正排索引是规则标号到具体算子表示的业务规则的索引,即需要查询规则标号来确定检索条件对应的具体规则,从而得到决策结果。而倒排索引是基于算子表示的业务规则来构成索引键,并将与这些索引键分别相关的具体规则的规则标号作为索引值构成的索引。倒排索引是根据检索条件,查询基于算子表示的业务规则构成的索引键,来确定相关的具体规则的规则标号。
考虑到在实际应用中,业务逻辑会随运营决策做出相应的变更,为使规则引擎能够继续适用,在其中一个实施例中,在在内存中创建关于所有算子表示的业务规则的倒排索引的步骤之后,该方法还包括:构建倒排索引的修改逻辑,用以在业务规则发生变动时,基于变动前的业务规则和变动后的业务规则,同步调整倒排索引。
可以理解,在调整倒排索引时只调整变动业务规则相关的倒排索引。若某业务规则发生变动,则根据变动前该业务规则的条件、决策信息,找出对应的倒排索引。另外,对变动后的该规则单独进行倒排处理,并用处理得到的新的倒排索引替换变动前该规则对应的倒排索引。
本发明实施例提供的一种规则引擎实现方法,通过对规则建立内存倒排索引,可以提高规则的匹配速度,从而提高大数据量规则并发请求时的处理速度。
其中可选的,对业务逻辑进行规则的抽象分析,获取业务规则的步骤进一步包括:根据业务逻辑的语言描述,提取条件-结果语句,并基于条件-结果语句,构成业务规则。
可以理解为,考虑到实际应用中,业务规则通常用if-then的形式来描述,则对于这种业务规则的获取思路,本实施例首先对项目中业务逻辑的语言描述进行分析分解,提取其中所有的条件-结果语句。之后对于每一个条件-结果语句,根据if以及then的句式结构,分别构成对应的业务规则。
本发明实施例提供的一种规则引擎实现方法,通过对项目中业务逻辑的分析分解,提取其中所有的条件-结果语句,并基于此构建这种句式的业务规则,能够快速且有效的解决条件-结果句式的业务规则的提取问题,从而更方便快捷的进行该类规则的检索匹配。
其中,在一个实施例中,业务规则中包括条件单元和决策单元;
相应的,基于业务规则,进行归纳总结,建立基础规则算子的步骤进一步包括:基于所有业务规则,通过对条件-结果语句的归纳总结,建立基础规则算子如下:规则=条件+决策;式中,条件表示规则中进行对应决策时,需要满足的设定条件,决策表示当对应设定条件得到满足时,要进行的行为决策;
相应的,利用基础规则算子和逻辑关系算子,对业务逻辑中的所有业务规则进行表示,获取算子表示的业务规则的步骤进一步包括:
利用基础规则算子,对所有业务规则的条件单元和决策单元分别进行表示,获取算子表示的基础业务规则,算子表示的基础业务规则中包括条件算子单元和决策算子单元;
利用逻辑关系算子,分别对不同业务规则的条件单元间的逻辑关系以及决策单元间的逻辑关系进行表示,获取算子表示的逻辑关系;
基于算子表示的基础业务规则和算子表示的逻辑关系,构成算子表示的业务规则。
可以理解为,根据上述实施例,在条件-结果句式的业务规则中,句式中会包含两部分内容,一部分作为判断条件,另一部分作为满足该条件下对应的决策行为,对应的分别作为条件单元和决策单元。
则,在该种结构的业务规则下,建立基础规则算子时按如下方式进行:对于所有的业务规则,根据其句式结构可以归纳总结出算子形式,即基础规则算子如下:规则=条件+决策。之后在此基础上,分别利用基础规则算子和逻辑关系算子对各业务规则重新进行表示。
具体而言,对于各业务规则,分解其中的条件单元和决策单元,并将其根据基础规则算子的结构形式进行表示,得到各业务规则对应的算子表示形式,即算子表示的基础业务规则。
其中,对应业务规则中的条件单元和决策单元,在构成的算子表示的基础业务规则中,同样对应含有条件算子单元和决策算子单元。
具体而言,对于各业务规则间的逻辑关系,利用逻辑关系算子进行表示。具体对于各不同业务规则中条件单元间的逻辑关系,利用逻辑关系算子进行表示,得到关于条件的算子表示的逻辑关系;对于各不同业务规则中决策单元间的逻辑关系,利用逻辑关系算子进行表示,得到关于决策的算子表示的逻辑关系。
可以理解的是,该应用项目中关于条件的算子表示的逻辑关系和关于决策的算子表示的逻辑关系,共同构成算子表示的逻辑关系。
则,对于应用项目中所有业务逻辑而言,其所有业务规则对应的算子表示的基础业务规则和算子表示的逻辑关系,共同构成该业务逻辑对应的算子表示的业务规则。
本发明实施例提供的一种规则引擎实现方法,通过规则算子对条件-结果句式的业务规则进行表示,并分别建立不同规则中条件单元和决策单元间逻辑关系,能够更细致的表示各业务规则及相互间的关系,在已知检索条件时,便于更快速准确定位相关规则。
其中,在另一个实施例中,基于不同业务规则间的逻辑关系,建立各业务规则间的逻辑关系算子的步骤进一步包括:
基于不同业务规则中条件单元间的逻辑关系,建立该条件单元间的逻辑关系算子;
基于不同业务规则中决策单元间的逻辑关系,建立该决策单元间的逻辑关系算子。
可以理解为,根据上述实施例,对于条件-结果句式的业务规则,各业务规则中均包含条件单元和决策单元两个组成部分。则对于不同的业务规则,分别按这两个部分进行分解后,分析不同业务规则中相应条件单元和决策单元间的逻辑关系。
之后,对于不同业务规则中的条件单元,根据该条件单元间的逻辑关系,建立各条件单元间的逻辑算式,作为各条件单元间的逻辑关系算子。同样的,对于不同业务规则中的决策单元,根据该决策单元间的逻辑关系,建立各决策单元间的逻辑算式,作为各决策单元间的逻辑关系算子。
本发明实施例提供的一种规则引擎实现方法,通过对条件-结果句式的业务规则进行分解,并对不同业务规则中条件单元和决策单元间的逻辑关系进行分析,最终分别建立各业务规则条件单元的逻辑关系算子和决策单元间的逻辑关系算子,能够更快速的根据检索条件匹配到所有相关的业务规则。
根据上述实施例,其中可选的,基于所有算子表示的业务规则,在内存中创建关于所有算子表示的业务规则的倒排索引的步骤进一步包括:
对各算子表示的业务规则分别进行编码,获取各算子表示的业务规则分别对应的唯一编码;
提取各算子表示的业务规则中的算子条件单元,作为索引键,并确定该算子表示的业务规则的唯一编码,作为索引值;
基于各算子表示的业务规则对应的索引键和索引值,在内存中创建倒排索引。
可以理解为,对于已知的检索条件,为了更快速的在不同的算子表示的业务规则中匹配出相关的规则,通过建立算子表示的业务规则的倒排索引的方式来实现。具体而言:
首先,对于根据上述实施例得到的各算子表示的业务规则,分别为其分配一个唯一编码。即,对于每一个算子表示的业务规则,对应分配一个编码,且每个规则对应的编码是唯一的,并与该规则唯一对应,则以该编码作为该算子表示的业务规则的唯一编码。例如,规则1、规则2、...、规则N。
之后,对于每个算子表示的业务规则,分别提取其中对应的算子条件单元,并将该算子条件单元作为索引键。同时,确定该算子表示的业务规则对应的唯一编码,并将该唯一编码作为该条规则的索引值。
最后,对于所有的算子表示的业务规则,根据各规则分别对应的索引键和索引值,建立对应的倒排索引,并在应用项目启动时,将该倒排索引写入内存。
则在实际规则匹配应用中,在已知一个条件时,可以快速查找到该日期所适用的规则条款,而不用再对数据库遍历所有规则,从而极大的提高规则的查找效率。
为进一步说明本发明的技术方案,提供如下实例处理流程,但不对本发明的保护范围进行限制。
步骤1,业务规则抽象分析,并通过算子组合业务规则。
业务规则通常用if-then的形式来描述。例如,如表1所示,为一种if-then的业务规则示例表。
表1,if-then的业务规则示例表
通过对一系列规则进行归纳总结,可以得出规则的基础组成形式,即基础规则算子:
规则=条件+策略。
语句中只要包含条件和策略两个属性组成部分,就可以定义为一条完整的规则。
此外,不同规则的条件或者策略之间存在一定的关系。例如,如表1中的规则1和规则2,两个规则中的条件(新用户和老用户)同时只能有其中一个得到满足,属于互斥关系。而规则1和规则3的条件有可能同时得到满足,这种情况可以通过规则4来进行描述,具体为,规则4条件=规则1条件and规则3条件。为了描述这种关系,可以定义条件的逻辑关系算子,如并(同时满足,and,&&)和或(任意满足,or,||)等。
类似的,规则中的策略也可以用算子来操作。例如,如表1中的规则1、规则3和规则4,可以定义策略的逻辑关系算子,来表示三者中策略间的关系,具体为,规则4策略=规则1策略and规则3策略。
以条件的逻辑关系算子为例,可以表示各不同规则间关于条件的逻辑关系如图2所示,图2为根据本发明实施例一种规则引擎实现方法中条件的逻辑关系算子示意图。图中不同规则中的条件之间,满足一定的逻辑关系,根据不同条件间的逻辑关系,对相关条件进行逻辑关联。
有了上述的基础规则算子、条件的逻辑关系算子和策略的逻辑关系算子,就可以用这些算子任意组合各种规则,从而实现复杂规则的创建。
步骤2,对规则建立内存倒排索引。
通常正排索引中是规则标号到算子表示的业务规则的对应关系,也即规则标号到具体规则的对应关系。在这些具体规则中,包含了规则的条件值和决策值。实际应用中通常已知检索条件,需要根据检索条件,通过查询索引表得到决策结果。
也即是说,为了判断规则是否生效,需要逐条对规则进行判断。而如果规则数量众多,该过程将非常耗时。如果能一次筛选出符合当前条件的规则,则处理时间将会大幅缩短。
利用倒排索引技术,可以解决上述问题,达到初步筛选目的。具体在项目启动时,从数据库拉取根据上述步骤组合而成的规则,即算子表示的业务规则。之后,在内存中创建所有算子表示的业务规则的倒排索引。其中,规则变化的时候可同时修改该倒排索引。
具体而言,可对上述正排索引中的各条索引进行分析,提取索引值中的条件值,并以各条件值为索引号,以对应包含各条件值的具体规则的规则标号为索引值,建立新的索引,即构成上述正排索引的倒排索引。
例如,在建立规则的倒排索引时,可先了解规则的正排索引如表2所示,为根据本发明实例的一种规则正排索引表。在该索引表中,是以每条规则标号为索引号,以具体的规则为索引值,该索引值中具体包括规则的条件值和决策值。因此在利用该索引表进行检索时,需要遍历每一个索引号(即规则标号),并通过逐个验证这些索引号对应的具体规则中是否包含检索条件对应的条件值,来得到最终的决策输出。即,正排索引是规则标号到具体规则内容的对应关系。
根据表2的正排索引,可以建立规则的倒排索引如表3所示,为根据本发明实例的一种规则倒排索引表。在建立该倒排索引时,可以通过遍历表2中正排索引的每一个规则标号,来获取每一条具体规则中的条件值,并以这些条件值为索引键,以包含这些条件值的具体规则的规则标号为索引值,建立条件值到规则标号的索引表,即可得到表3的倒排索引表。可以看出,倒排索引变换为规则的条件值到规则标号的对应关系。则在利用该倒排索引进行检索时,可根据检索条件查询索引键,直接定位到对应具体规则的规则标号,再根据该规则标号对应的具体规则,确定检索条件对应的决策值。
表2,根据本发明实例的一种规则正排索引表
表3根据本发明实例的一种规则倒排索引表
如上表所示的例子,对表2中的规则倒排后,得到表3,之后再把该倒排表数据载入内存中。则在已知一个条件,如上表中的日期时,可以快速查找到该日期所适用的规则条款,而不用再对数据库遍历所有规则,从而极大的提高规则的查找效率。
作为本发明实施例的另一个方面,本实施例根据上述实施例提供一种规则引擎实现装置,参考图3,为本发明实施例一种规则引擎实现装置的结构示意图。包括:基础规则算子建立模块301、逻辑关系算子建立模块302和规则引擎生成模块303。
其中,基础规则算子建立模块301用于对业务逻辑进行规则的抽象分析,获取业务规则,并基于业务规则,进行归纳总结,建立基础规则算子;逻辑关系算子建立模块302用于基于不同业务规则间的逻辑关系,建立各业务规则间的逻辑关系算子;规则引擎生成模块303用于利用基础规则算子和逻辑关系算子,对业务逻辑中的所有业务规则进行表示,获取算子表示的业务规则,并基于算子表示的业务规则,构成规则引擎。
可以理解为,本实施例的规则引擎实现装置中至少包括基础规则算子建立模块301、逻辑关系算子建立模块302和规则引擎生成模块303,用于在上述各实施例中对规则引擎进行实现。因此,在上述各实施例规则引擎实现方法中的描述和定义,可以用于本发明实施例中各个功能模块的理解,具体可参考上述实施例,此处不再赘述。
另外,可以理解的是,本发明实施例中可以通过硬件处理器(hardwareprocessor)来实现相关功能模块。
本发明实施例提供的一种规则引擎实现装置,通过在装置中设置相关的功能模块,通过对业务规则进行抽象,定义规则算子,通过算子来任意组合各种业务规则,具有很好的扩展性,可以满足复杂的规则要求,能够很好的适用于业务灵活多变且规则多、访问量高的场景。
作为本发明实施例的又一个方面,本实施例根据上述实施例提供一种电子设备,参考图4,为本发明实施例一种电子设备的结构框图,包括:至少一个处理器401,以及至少一个与处理器401通信连接的存储器402。其中,存储器402中存储有可在处理器401上运行的计算机程序,处理器401执行该计算机程序时,实现如上述实施例所述的规则引擎实现方法。
可以理解为,本实施例的电子设备中至少包含一个处理器401和一个存储器402,且处理器401和存储器402之间形成通信连接,可以进行相互间信息和指令的传输,如处理器401从存储器402中读取规则引擎实现方法的程序指令等。
该电子设备运行时,处理器401调用存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:对业务逻辑进行规则的抽象分析,获取业务规则,并基于业务规则,进行归纳总结,建立基础规则算子;以及对业务逻辑进行规则的抽象分析,获取业务规则的步骤进一步包括:根据业务逻辑的语言描述,提取条件-结果语句,并基于条件-结果语句,构成业务规则等。
本发明另一个实施例中,提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,且该计算机指令使计算机执行如上述实施例所述的规则引擎实现方法。
可以理解的是,上述的存储器402中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。或者,实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的电子设备的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,既可以位于一个地方,或者也可以分布到不同网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解,各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令,用以使得一台计算机设备(如个人计算机,服务器,或者网络设备等)执行上述各方法实施例或者方法实施例的某些部分所述的方法。
本发明实施例提供的一种电子设备和一种非暂态计算机可读存储介质,通过对业务规则进行抽象,定义了规则算子,通过算子来任意组合各种业务规则,具有很好的扩展性,可以满足复杂的规则要求,能够很好的适用于业务灵活多变且规则多、访问量高的场景。
另外,本领域内的技术人员应当理解的是,在本发明的申请文件中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明的说明书中,说明了大量具体细节。然而应当理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。
然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种规则引擎实现方法,其特征在于,包括:
对业务逻辑进行规则的抽象分析,获取业务规则,并基于所述业务规则,进行归纳总结,建立基础规则算子;
基于不同所述业务规则间的逻辑关系,建立各所述业务规则间的逻辑关系算子;
利用所述基础规则算子和所述逻辑关系算子,对所述业务逻辑中的所有所述业务规则进行表示,获取算子表示的业务规则,并基于所述算子表示的业务规则,构成所述规则引擎;
进一步的,在所述对所述业务逻辑中的所有所述业务规则进行表示,获取算子表示的业务规则的步骤之后,还包括:
基于所有所述算子表示的业务规则,在内存中创建关于所有所述算子表示的业务规则的倒排索引;
相应的,所述基于所述算子表示的业务规则,构成所述规则引擎的步骤进一步包括:
基于所述算子表示的业务规则和所述倒排索引,构成所述规则引擎;
其中,所述基于所有所述算子表示的业务规则,在内存中创建关于所有所述算子表示的业务规则的倒排索引的步骤进一步包括:
对各所述算子表示的业务规则分别进行编码,获取各所述算子表示的业务规则分别对应的唯一编码;
提取各所述算子表示的业务规则中的算子条件单元,作为索引键,并确定该算子表示的业务规则的所述唯一编码,作为索引值;
基于各所述算子表示的业务规则对应的索引键和索引值,在内存中创建所述倒排索引。
2.根据权利要求1所述的方法,其特征在于,所述对业务逻辑进行规则的抽象分析,获取业务规则的步骤进一步包括:
根据所述业务逻辑的语言描述,提取条件-结果语句,并基于所述条件-结果语句,构成所述业务规则。
3.根据权利要求2所述的方法,其特征在于,所述业务规则中包括条件单元和决策单元;
相应的,所述基于所述业务规则,进行归纳总结,建立基础规则算子的步骤进一步包括:
基于所有所述业务规则,通过对所述条件-结果语句的归纳总结,建立所述基础规则算子如下:
规则=条件+决策;
式中,条件表示规则中进行对应决策时,需要满足的设定条件,决策表示当对应设定条件得到满足时,要进行的行为决策;
相应的,所述利用所述基础规则算子和所述逻辑关系算子,对所述业务逻辑中的所有所述业务规则进行表示,获取算子表示的业务规则的步骤进一步包括:
利用所述基础规则算子,对所有所述业务规则的条件单元和决策单元分别进行表示,获取算子表示的基础业务规则,所述算子表示的基础业务规则中包括条件算子单元和决策算子单元;
利用所述逻辑关系算子,分别对不同业务规则的条件单元间的逻辑关系以及决策单元间的逻辑关系进行表示,获取算子表示的逻辑关系;
基于所述算子表示的基础业务规则和所述算子表示的逻辑关系,构成所述算子表示的业务规则。
4.根据权利要求3所述的方法,其特征在于,所述基于不同所述业务规则间的逻辑关系,建立各所述业务规则间的逻辑关系算子的步骤进一步包括:
基于不同所述业务规则中条件单元间的逻辑关系,建立该条件单元间的逻辑关系算子;
基于不同所述业务规则中决策单元间的逻辑关系,建立该决策单元间的逻辑关系算子。
5.根据权利要求1所述的方法,其特征在于,在所述在内存中创建关于所有所述算子表示的业务规则的倒排索引的步骤之后,还包括:
构建所述倒排索引的修改逻辑,用以在所述业务规则发生变动时,基于变动前的业务规则和变动后的业务规则,同步调整所述倒排索引。
6.一种规则引擎实现装置,其特征在于,包括:
基础规则算子建立模块,用于对业务逻辑进行规则的抽象分析,获取业务规则,并基于所述业务规则,进行归纳总结,建立基础规则算子;
逻辑关系算子建立模块,用于基于不同所述业务规则间的逻辑关系,建立各所述业务规则间的逻辑关系算子;
规则引擎生成模块,用于利用所述基础规则算子和所述逻辑关系算子,对所述业务逻辑中的所有所述业务规则进行表示,获取算子表示的业务规则,并基于所述算子表示的业务规则,构成所述规则引擎;
其中,所述规则引擎生成模块还用于:基于所有所述算子表示的业务规则,在内存中创建关于所有所述算子表示的业务规则的倒排索引;
相应的,所述规则引擎生成模块在进行所述基于所述算子表示的业务规则,构成所述规则引擎的步骤时具体用于:
基于所述算子表示的业务规则和所述倒排索引,构成所述规则引擎;
所述规则引擎生成模块在进行所述基于所有所述算子表示的业务规则,在内存中创建关于所有所述算子表示的业务规则的倒排索引的步骤时具体用于:
对各所述算子表示的业务规则分别进行编码,获取各所述算子表示的业务规则分别对应的唯一编码;
提取各所述算子表示的业务规则中的算子条件单元,作为索引键,并确定该算子表示的业务规则的所述唯一编码,作为索引值;
基于各所述算子表示的业务规则对应的索引键和索引值,在内存中创建所述倒排索引。
7.一种电子设备,其特征在于,包括:至少一个处理器,以及至少一个与所述处理器通信连接的存储器;
所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1至5中任一所述的方法。
8.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811648322.1A CN109857833B (zh) | 2018-12-30 | 2018-12-30 | 一种规则引擎实现方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811648322.1A CN109857833B (zh) | 2018-12-30 | 2018-12-30 | 一种规则引擎实现方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109857833A CN109857833A (zh) | 2019-06-07 |
CN109857833B true CN109857833B (zh) | 2021-06-08 |
Family
ID=66893598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811648322.1A Active CN109857833B (zh) | 2018-12-30 | 2018-12-30 | 一种规则引擎实现方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109857833B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111524008B (zh) * | 2020-04-16 | 2023-06-06 | Gotcex 有限公司 | 一种规则引擎及其建模方法、建模装置及指令处理方法 |
CN111932076B (zh) * | 2020-07-09 | 2023-12-12 | 车智互联(北京)科技有限公司 | 一种规则配置和发布方法、装置及计算设备 |
CN112130895B (zh) * | 2020-08-04 | 2022-04-15 | 中科天玑数据科技股份有限公司 | 一种可移植性的模型发布方法、装置和存储介质 |
CN112882687A (zh) * | 2020-12-10 | 2021-06-01 | 宝付网络科技(上海)有限公司 | 一种高效的通用型规则引擎的实现方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105335133B (zh) * | 2014-06-18 | 2018-10-09 | 国际商业机器公司 | 用于生成业务规则模型的方法和装置 |
CN105573737A (zh) * | 2014-10-30 | 2016-05-11 | 中国科学院声学研究所 | 一种提高规则引擎运行效率的方法 |
CN105786950A (zh) * | 2015-12-30 | 2016-07-20 | 北京锐安科技有限公司 | 一种处理数据的方法及装置 |
KR20170130741A (ko) * | 2016-05-19 | 2017-11-29 | 삼성에스디에스 주식회사 | 룰 관리 시스템 및 방법 |
CN108399066A (zh) * | 2018-01-25 | 2018-08-14 | 链家网(北京)科技有限公司 | 一种规则引擎实现方法及装置 |
-
2018
- 2018-12-30 CN CN201811648322.1A patent/CN109857833B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109857833A (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857833B (zh) | 一种规则引擎实现方法、装置及电子设备 | |
CN111782965B (zh) | 意图推荐方法、装置、设备及存储介质 | |
US11663033B2 (en) | Design-time information based on run-time artifacts in a distributed computing cluster | |
US20170357653A1 (en) | Unsupervised method for enriching rdf data sources from denormalized data | |
US7912816B2 (en) | Adaptive archive data management | |
CN111459985B (zh) | 标识信息处理方法及装置 | |
Gilson et al. | From web data to visualization via ontology mapping | |
US7809771B2 (en) | Automatic reduction of table memory footprint using column cardinality information | |
US20150100568A1 (en) | Automatic definition of entity collections | |
US20090292711A1 (en) | Constraints With Hidden Rows in a Database | |
US11106719B2 (en) | Heuristic dimension reduction in metadata modeling | |
WO2015051481A1 (en) | Determining collection membership in a data graph | |
JP5844824B2 (ja) | Sparqlクエリ最適化方法 | |
US10467276B2 (en) | Systems and methods for merging electronic data collections | |
Sunuwar et al. | Comparative Analysis of Relational and Graph Databases for Data Provenance: Performance, Queries, and Security Considerations | |
Alsarkhi et al. | An analysis of the effect of stop words on the performance of the matrix comparator for entity resolution | |
CN116541578A (zh) | 资产数字化多维度管理方法及系统 | |
EP4002152A1 (en) | Data tagging and synchronisation system | |
Atzori et al. | Gdup: De-duplication of scholarly communication big graphs | |
Zhang et al. | A text mining based method for policy recommendation | |
Tsvetovat et al. | NetIntel: A database for manipulation of rich social network data | |
Wu et al. | Mining Skyline Patterns from Big Data Environments based on a Spark Framework | |
US20170270187A1 (en) | Information processing device, information processing method, and program | |
Walha et al. | From user generated content to social data warehouse: Processes, operations and data modelling | |
Kim et al. | Key issues for a manufacturing data query system based on graph |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20210330 Address after: 101309 room 24, 62 Farm Road, Erjie village, Yangzhen, Shunyi District, Beijing Applicant after: Beijing fangjianghu Technology Co.,Ltd. Address before: Unit 05, room 112, 1st floor, office building, Nangang Industrial Zone, economic and Technological Development Zone, Binhai New Area, Tianjin 300457 Applicant before: BEIKE TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |