CN114268540A - 规则引擎的优化方法、装置及设备 - Google Patents
规则引擎的优化方法、装置及设备 Download PDFInfo
- Publication number
- CN114268540A CN114268540A CN202111580618.6A CN202111580618A CN114268540A CN 114268540 A CN114268540 A CN 114268540A CN 202111580618 A CN202111580618 A CN 202111580618A CN 114268540 A CN114268540 A CN 114268540A
- Authority
- CN
- China
- Prior art keywords
- rule
- fact
- target
- combined
- engine
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000005457 optimization Methods 0.000 title claims abstract description 29
- 230000015654 memory Effects 0.000 claims description 40
- 238000012545 processing Methods 0.000 claims description 33
- 238000004590 computer program Methods 0.000 claims description 17
- 238000003860 storage Methods 0.000 claims description 16
- 230000008569 process Effects 0.000 claims description 11
- 239000002131 composite material Substances 0.000 claims description 8
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 3
- 230000005764 inhibitory process Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种规则引擎的优化方法、装置及设备,其中方法包括:对多个具有关联关系的限定事实对象进行合并处理,得到组合事实对象;根据组合事实对象,对预设的限定事实对象所对应的初始规则进行转换处理,得到第一目标规则;根据第一目标规则进行优化Rete网络的构建处理,以将第一目标规则部署于优化Rete网络的Alpha节点中,得到规则引擎。本申请实施例中,实现了规则引擎的优化,能够提升规则匹配效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种规则引擎的优化方法、装置、及设备。
背景技术
基于Rete算法的规则引擎在众多领域中得以应用,Rete算法是将规则拆分得到至少一个条件单元,每个条件单元作为基本单位连接成Rete网络,从而得到规则引擎。现有的Rete网络中包括5类节点:Root节点、Type节点、Alpha节点、Beta节点和Terminal节点。其中,Root节点是Rete网络的入口,它可以让所有的事实通过,并传递给Type节点。Type节点用于将符合本节点类型的事实向后继的Alpha节点传播。Alpha节点主要进行同对象类型内的属性约束或常量测试。Beta节点主要对不同的对象之间进行连接操作。Terminal节点是规则的末尾节点。
对于现有的Rete网络而言,当存在大量甚至海量规则、且规则涉及多个事实的情况下,会产生大量的Beta节点,因此通过Beta节点进行连接操作需要耗时较长,规则的匹配效率会大大降低。进一步的,在大量待处理事实高并发的场景下,会导致待处理事实的堆积,Alpha节点和Beta节点的内存均不能及时的释放,甚至会导致内存资源耗尽。
发明内容
本申请实施例的目的是提供一种规则引擎的优化方法、装置及设备,以解决现有的基于Rete算法的规则引擎存在规则匹配效率低、内存资源难以释放等问题。
为解决上述技术问题,本申请实施例是这样实现的:
第一方面,本申请实施例提供了一种规则引擎的优化方法,包括:
对多个具有关联关系的限定事实对象进行合并处理,得到组合事实对象;
根据所述组合事实对象,对预设的所述限定事实对象所对应的初始规则进行转换处理,得到第一目标规则;
根据所述第一目标规则进行优化Rete网络的构建处理,以将所述第一目标规则部署于所述优化Rete网络的Alpha节点中,得到规则引擎。
第二方面,本申请实施例提供了一种规则引擎的优化装置,包括:
存储器,用于存储待部署规则的Rete网络;
处理器,用于对多个具有关联关系的限定事实对象进行合并处理,得到组合事实对象;根据所述组合事实对象,对预设的所述限定事实对象所对应的初始规则进行转换处理,得到第一目标规则;根据所述第一目标规则进行优化Rete网络的构建处理,以将所述第一目标规则部署于所述优化Rete网络的Alpha节点中,得到规则引擎。
第三方面,本申请实施例提供一种规则引擎的优化设备,包括:处理器,与所述处理器电连接的存储器。所述存储器存储有计算机程序,所述处理器用于从所述存储器调用并执行所述计算机程序以实现上述规则引擎的优化方法的步骤。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述规则引擎的优化方法的步骤。
在本申请实施例中,通过对限定事实对象进行合并处理,得到组合事实对象,并将基于组合事实对象对初始规则进行转换处理得到的第一目标规则部署于优化Rete网络的Alpha节点中;使得该优化Rete网络中仅存在一个组合事实对象,而不存在需要进行连接操作的多个不同的事实对象,因此,不再需要Beta节点进行不同对象之间的连接操作,直接通过Alpha节点基于部署的第一目标规则进行规则匹配处理即可。可见,本申请的优化Rete网络中无需部署Beta节点,简化了Rete网络的结构,实现了对现有Rete网络的优化,进而实现了对规则引擎的优化,不仅能够极大的提升规则引擎的规则匹配效率,而且能够节约内存资源。即使在海量规则高并发的场景下,依然能够保障规则引擎的规则匹配效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例提供的一种规则引擎的优化方法的第一种流程示意图;
图2为本说明书实施例提供的一种规则引擎的优化方法的第二种流程示意图;
图3为本说明书实施例提供的组合事实对象的示意图;
图4为本说明书实施例提供的一种规则引擎的优化方法的第三种流程示意图;
图5为本说明书实施例提供的一种规则引擎的优化方法的第四种流程示意图;
图6为本说明书实施例提供的对组合事实对象的优化示意图;
图7为本说明书实施例提供的一种规则引擎的优化装置的种模块组成示意图;
图8为本说明书实施例提供的一种规则引擎的优化设备的组成示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本申请一个或多个实施例提供的一种规则引擎的优化方法的流程示意图,应用于规则引擎的优化装置,该规则引擎的优化装置可以部署于终端设备中,也可以部署于服务端。其中,终端设备可以是手机、平板电脑、台式计算机、便携式笔记本等;服务端可以是独立的服务器,也可以是多个服务器组成的服务器集群。参见图1,该方法具体可以包括如下步骤:
步骤102,对多个具有关联关系的限定事实对象进行合并处理,得到组合事实对象;
本申请实施例提供的规则引擎,可应用于任意需要进行规则匹配的场景中。具有关联关系的限定事实对象可以根据规则引擎的应用场景预先设定,可以理解的是,对于不同的应用场景,限定事实对象可以不同。例如,在物联网设备的管理场景中,限定事实对象可以包括事件(Event)、物联网设备(Device)、用户(User);又如,在门禁设备的管理场景中,限定事实对象可以包括事件(Event)、门禁设备(Device)、位置(location)等,其中,位置用于表征门禁设备的所在地。
每个限定事实对象可以对应至少一个事实(Fact),以规则引擎应用于物联网设备的管理场景为例进行说明,事件(Event)可以对应启动事件、报警事件、关闭事件等事实;物联网设备(Device)可以对应设备1、设备2、设备3、设备4、设备5等事实,其中,设备1、设备2、设备3、设备4、设备5可以是不同的物联网设备;用户(User)可以对应设备1和设备2归属的用户1、设备3归属的用户2、设备4和设备5归属的用户3等事实。每个限定事实对象可以包括多个字段,通过对限定事实对象的字段赋予不同的字段值,可以表征不同的事实。例如,在物联网设备的管理场景中,限定事实对象“事件(Event)”可以包括deviceSerial(触发事件的设备的序列号)、eventType(事件类型)、value(事件值)等字段,当deviceSerial字段的字段值为序列号1、eventType字段的字段值为报警、value字段的字段值为1时,表征序列号1对应的物联网设备触发了报警事件这一事实;当deviceSerial字段的字段值为序列号2、eventType字段的字段值为启动、value字段的字段值为1时,表征序列号2对应的物联网设备触发了启动事件这一事实。
为了实现对现有基于Rete算法的规则引擎的优化,本申请实施例中,对多个具有关联关系的限定事实对象进行合并处理,得到组合事实对象,从而基于组合事实对象生成规则引擎,以实现对规则引擎的优化。
步骤104,根据组合事实对象,对预设的限定事实对象所对应的初始规则进行转换处理,得到第一目标规则;
其中,规则通常是由条件和结论构成的推理语句,在实际应用中,当规则引擎的应用场景确定后,每个限定事实对象所对应的事实也相应的确定下来,此时,可以根据实际需要,设定各事实所需满足的初始规则。以规则引擎应用于物联网设备的管理场景为例进行说明,初始规则可以包括当设备1触发报警事件时,执行向设备1所属的用户1发送订阅信息的操作,以告知用户1其设备1触发了报警事件;当设备3触发启动事件时,执行向设备3所属的用户2发送订阅信息的操作,以告知用户2其设备3触发了启动事件等。初始规则可以表示为if…Then,或者when…Then的形式,可参见后文的具体示例。
步骤106,根据第一目标规则进行优化Rete网络的构建处理,以将第一目标规则部署于优化Rete网络的Alpha节点中,得到规则引擎。
本申请实施例中,通过对限定事实对象进行合并处理,得到组合事实对象,并将基于组合事实对象对初始规则进行转换处理得到的第一目标规则,部署于优化Rete网络的Alpha节点中;使得该优化Rete网络中仅存在一个组合事实对象,而不存在需要进行连接操作的多个不同的事实对象,因此,不再需要Beta节点进行不同对象之间的连接操作,直接通过Alpha节点基于部署的第一目标规则进行规则匹配处理即可。可见,本申请的优化Rete网络中无需部署Beta节点,简化了Rete网络的结构,实现了对现有Rete网络的优化,进而实现了对规则引擎的优化,不仅能够极大的提升规则引擎的规则匹配效率,而且能够节约内存资源。即使在海量规则高并发的场景下,依然能够保障规则引擎的规则匹配效率。
为了提升规则引擎的规则匹配效率,本申请实施例中,在生成规则引擎的过程中,对限定事实对象进行合并处理,以实现对规则引擎的优化。具体的,如图2所示,步骤102可以包括以下步骤102-2至步骤102-8:
步骤102-2,构建空组合事实对象;
具体的,按照预设的组合事实对象的格式构建空组合事实对象;
步骤102-4,在空组合事实对象中为具有关联关系的每个限定事实对象创建命名空间;
步骤102-6,确定多个限定事实对象的关联字段,对关联字段进行去重处理,得到每个限定事实对象的目标字段;
具体的,确定不同的限定事实对象的字段之间是否存在相同的字段;若是,则将该相同的字段确定为相应限定事实对象之间的关联字段;若否,则根据预先建立的关联关系确定相应限定事实对象之间的关联字段。
更加具体的,根据预先设定的各限定事实对象之间的优先级,按照优先级从高到低的顺序,依次确定相邻优先级所对应的两个限定事实对象的字段之间是否存在相同的字段,若是,则将该相同的字段确定为该两个限定事实对象之间的关联字段;若否,则将该相邻优先级中位于高优先级的限定事实对象的每个字段,与预先建立的字段的关联关系中的字段进行匹配处理,若匹配成功且确定匹配成功的字段所关联的字段,是该相邻优先级中位于低优先级的限定事实对象的字段,则将匹配成功的字段和该匹配成功的字段所关联的字段,确定为该两个限定事实对象之间的关联字段。
例如,在物联网设备的管理场景中,限定事实对象可以包括事件(Event)、设备(Device)、用户(User),且预先设定优先级为事件(Event)高于设备(Device)、设备(Device)高于用户(User),事件(Event)、设备(Device)、用户(User)包括的字段如图3所示。相应的,按照优先级从高到低的顺序,首先确定事件(Event)与设备(Device)之间的关联字段,由图3可知,二者之间存在相同的字段deviceSerial,则将字段deviceSerial确定为事件(Event)与设备(Device)之间的关联字段;然后确定设备(Device)与用户(User)之间的关联字段,比对二者之间的字段可确定不存在相同的字段,则分别将设备(Device)的字段deviceSerial、deviceType、firmwareVersion、ownerld与预先建立的字段的关联关系中的字段进行匹配处理,且确定ownerld字段匹配成功,在该关联关系中,ownerld字段的关联字段为userId,将userId与用户(User)的各字段进行匹配,确定用户(User)的字段中包括userId,则确定ownerld字段和userId字段为设备(Device)与用户(User)之间的关联字段。
步骤102-8,将目标字段添加至相应的命名空间中,得到组合事实对象。
可选地,在确定各限定事实对象之间的关联字段之后,对关联字段进行去重处理,得到每个限定事实的目标字段;并根据限定事实对象之间的优先级,按照优先级从高到低的顺序,依次将目标字段添加至相应的命名空间(namespace)中,得到组合事实对象。或者,根据限定事实对象之间的优先级,按照优先级从高到低的顺序,依次确定相邻优先级对应的两个限定事实对象之间的关联字段,并对该关联字段进行去重处理,得到高优先级的限定事实对象的目标字段,并将该高优先级的限定事实对象的目标字段添加至相应的命名空间中,直至每个限定事实对象的目标字段均添加至相应的命名空间后,得到组合事实对象。可以理解的是,在对最后一个优先级对应的两个限定事实对象之间的关联字段进行去重处理后,得到该两个限定事实对象的目标字段。组合事实对象EventCompose的结构如图3所示,需要指出的是,图3仅用于示意,而不用于限定。
由此,通过对多个具有关联关系的限定事实对象进行合并处理,得到组合事实对象,使得优化Rete网络中仅存在一个组合事实对象,而不存在需要进行连接操作的多个不同的事实对象,因此,不再需要Beta节点进行不同对象之间的连接操作,即本申请的优化Rete网络中无需部署Beta节点,简化了Rete网络的结构,实现了对现有Rete网络的优化,进而实现了对规则引擎的优化。
进一步的,与上述步骤102-2至步骤102-8对应的,如图4所示,步骤104可以包括以下步骤104-2至步骤104-6:
步骤104-2,针对预设的每个初始规则,分别从初始规则中获取对应的限定事实对象的字段的规则信息;
步骤104-4,将组合事实对象中与获取的规则信息相对应的字段的规则,设置为对应的规则信息;
步骤104-6,根据包括规则信息的组合事实对象,生成第一目标规则。
作为示例,某个初始规则如下:
根据上述初始规则可获取到“用户(User)”这一限定事实对象的subscription字段的规则信息为alarm,“事件(Event)”这一限定事实对象的eventType字段的规则信息为alarm,则将组合事实对象EventCompose中的subscription字段的规则设置为alarm,以及将EventCompose中的eventType字段的规则设置为alarm;并根据包括alarm的组合事实对象EventCompose,生成以下第一目标规则:
可见,第一目标规则中仅包括组合事实对象EventCompose,而不是包括多个不同的限定事实对象,因此,基于第一目标规则构建的优化Rete网络中无需部署用于对不同事实对象进行连接操作的Beta节点,在进行规则匹配时,可直接通过Alpha节点基于部署的第一目标规则进行规则匹配处理即可,由此,不仅简化了Rete网络的结构,实现了对现有Rete网络的优化,进而实现了对规则引擎的优化,而且能够提升规则引擎的规则匹配效率,节约内存资源。
需要指出的是,为了使组合事实对象可以多次重复的使用,而无需每次使用组合事实对象时,均需生成组合事实对象。本申请一个或多个实施例中,在每次基于组合事实对象生成第一目标规则时,可以对组合事实对象进行复制操作得到组合事实对象副本,并将组合事实对象副本中与获取的规则信息相对应的字段的规则,设置为对应的规则信息;根据包括规则信息的组合事实对象副本,生成第一目标规则。
在得到第一目标规则之后,即可基于该第一目标规则生成规则引擎,具体的,步骤106可以包括以下步骤106-2至步骤106-12:
步骤106-2,构建优化Rete网络的Root节点;
步骤106-4,分别将每个第一目标规则输入Root节点中,并确定第一目标规则包括的目标事实;
步骤106-6,确定是否存在目标事实对应的Type节点,若否,则创建目标事实对应的Type节点;
步骤106-8,若通过Type节点确定第一目标规则是基于组合事实对象转换所得的规则,则创建Alpha节点,并将第一目标规则部署于Alpha节点中;
步骤106-10,创建Alpha节点对应的Terminal节点;
步骤106-12,若确定各第一目标规则均部署完成,则将包括第一目标规则的优化Rete网络,确定为规则引擎。
其中,Root节点和Terminal节点的作用,与现有Rete网络中的Root节点和Terminal节点的作用相同,这里不再赘述。可见,本申请中基于第一目标规则构建的优化Rete网络中无需部署用于对不同事实对象进行连接操作的Beta节点,简化了Rete网络的结构,实现了对现有Rete网络的优化,进而实现了对规则引擎的优化,能够提升规则引擎的规则匹配效率,节约内存资源。
在得到规则引擎后,即可基于该规则引擎进行规则匹配处理。具体的,如图5所示,步骤106之后还可以包括以下步骤108至步骤112:
步骤108,若获取到待处理事实,则确定与待处理事实具有关联关系的关联事实;
其中,待处理事实的获取方式可以在实际应用中根据需要自行设定,例如,可以接收用户输入的待处理事实,还可以接收其他设备发送的待处理事实等。当获取到待处理事实时,可以从指定的数据库中获取与该待处理事实具有关联关系的关联事实。
例如,在上述示例的物联网设备的管理场景中,设备1的设备序列号为abc,设备1所属用户1的用户标识为123。当获取到限定事实对象“事件(Event)”对应的“报警事件”这一待处理事实时,可以根据待处理事实携带的设备序列号“abc”从指定的数据库中查询关联的Device(即设备1的事实),并根据查询到的Device中的设备主人标识“123”从该指定的数据库中查询关联的User(即用户1的事实),并将查询到的Device和User确定为待处理事实的关联事实。
步骤110,根据待处理事实和关联事实,基于组合事实对象生成待处理的组合事实;
具体的,将组合事实对象中的各字段的字段值,设置为待处理事实和关联事实中相应字段的字段值,得到待处理的组合事实。
步骤112,将待处理的组合事实输入规则引擎中进行规则匹配处理,并基于匹配结果执行相应操作。
具体的,若匹配成功,则执行匹配成功的规则所规定的操作,例如执行向用户发送订阅信息的操作,以告知用户报警事件被触发等;若匹配失败,则输出匹配失败结果。
仍以上述物联网设备的管理场景为例进行说明,考虑到在实际应用中,例如当事件(Event)对应的事实的数量远小于用户(User)对应的事实的数量时,每发生一个事件(Event)对应的事实,都需要在用户(User)对应的大量事实中进行查询操作,而在大量事实中进行查询操作,无疑会存在查询效率低的问题,容易造成性能瓶颈。基于此,本申请一个或多个实施例中,还可以对组合事实对象进行优化,并对相应的规则进行优化。具体的,限定事实对象可以包括第一限定事实对象和第二限定事实对象,第一限定事实对象对应第一数量的第一事实,第二限定事实对象对应第二数量的第二事实;相应的,方法还可以包括以下步骤A:
步骤A,若确定第一数量大于第二数量,则将第二限定事实对象从组合事实对象中删除;以及,对包括第二事实的初始规则或第一目标规则进行条件置换处理,生成第二目标规则。
其中,对包括第二事实的初始规则或第一目标规则进行条件置换处理,生成第二目标规则,可以包括:
确定用于表征第二事实的目标字段,将包括第二事实的初始规则或第一目标规则,转换为基于目标字段的IN类型的规则,将该IN类型的规则确定为第二目标规则。
例如,在上述物联网设备的管理场景中,第一限定事实为事件(Event),第二限定事实对象为用户(User),当事件(Event)对应的第一事实的第一数量小于用户(User)对应的第二事实的第二数量时,可以将用户(User)从组合事实对象中删除,删除用户(User)后的组合事实对象的示例如图6所示。同时,确定用于表征第二事实(例如用户1)的目标字段为userId,则将包括第二事实的初始规则或第一目标规则,转换为基于目标字段“userId”的IN类型的规则,即第二目标规则如下:
由此,通过对组合事实对象和规则进行优化,能够降低组合事实对象的构建成本,并可降低规则的数量,降低规则的维护成本。可以理解的是,第一限定事实对象与第二限定事实对象可以在实际应用中根据需要自行设定,即便是在上述示例的物联网设备的场景中,第一限定事实对象和第二限定事实对象也不限为事件(Event)和用户(User),第二限定事实对象还可以为设备(Device),或者,第一限定事实对象为用户(User),第二限定事实对象为设备(Device)等。
需要指出的是,上述步骤A中若确定第一数量大于第二数量,则将第二限定事实对象从组合事实对象中删除这一操作,可以在步骤102之后执行,以对得到的组合事实对象进行优化;相应的,步骤A中对包括第二事实的初始规则或第一目标规则进行条件置换处理,生成第二目标规则,可以是在相应初始规则的基础上进行条件置换处理,也可以是在第一目标规则的基础上进行条件置换处理。或者,上述步骤A中若确定第一数量大于第二数量,则将第二限定事实对象从组合事实对象中删除这一操作,是在步骤102中执行合并处理时,首先确定第一数量是否大于第二数量,若是,则在合并处理时,直接对除第二限定实施对象之外的各限定实施对象进行合并处理,得到组合事实对象。相应的,步骤A中的对包括第二事实的初始规则或第一目标规则进行条件置换处理,生成第二目标规则,可以是在相应初始规则的基础上进行条件置换处理,得到第二目标规则。
进一步的,仍以上述物联网设备的管理场景为例进行说明,考虑到在实际应用中,可能存在新增设备、新增用户或用户的订阅类型改变等现象,为了保障规则引擎的有效性,本申请一个或多个实施例中,方法还可以包括:
若确定存在待更新的第二目标规则,则根据第二目标规则的更新类型进行更新处理。
具体的,确定第二目标规则的更新类型;若更新类型为更新IN类型的规则中的枚举数据,则确定枚举数据的更新信息,根据更新信息生成相应类型的待添加规则,将待添加规则添加到规则引擎中;若更新类型为更新规则模式,则根据待更新的目标规则模式生成新的规则,将第二目标规则从规则引擎中删除,并将新的规则添加到规则引擎中。
其中,IN类型的规则中的枚举数据即第二目标规则中IN的参数,如上述示例的第二目标规则中的id1,id2。当确定枚举数据的更新信息为新增枚举数据时,可以基于新增的枚举数据生成IN类型的待添加规则并添加到规则引擎中;当确定枚举数据的更新信息为减少枚举数据时,可以基于减少的枚举数据生成NotIN类型的待添加规则并添加到规则引擎中。更新规则模式即规则的条件的类型发生改变,例如,某个规则的条件是设备序列号,更新后变为设备版本号等。由此,通过对第二目标规则的即使更新处理,能够保障规则引擎的有效性。
本申请实施例中,通过对限定事实对象进行合并处理,得到组合事实对象,并将基于组合事实对象对初始规则进行转换处理得到的第一目标规则部署于优化Rete网络的Alpha节点中;使得该优化Rete网络中仅存在一个组合事实对象,而不存在需要进行连接操作的多个不同的事实对象,因此,不再需要Beta节点进行不同对象之间的连接操作,直接通过Alpha节点基于部署的第一目标规则进行规则匹配处理即可。可见,本申请的优化Rete网络中无需部署Beta节点,简化了Rete网络的结构,实现了对现有Rete网络的优化,进而实现了对规则引擎的优化,不仅能够极大的提升规则引擎的规则匹配效率,而且能够节约内存资源。即使在海量规则高并发的场景下,依然能够保障规则引擎的规则匹配效率。
基于相同的技术构思,本说明书一个或多个实施例还提供了一种规则引擎的优化装置,图7本说明书一个或多个实施例提供的一种规则引擎的优化装置的模块组成示意图,如图7所示,该装置包括:
存储器201,用于存储待部署规则的Rete网络;
处理器202,用于对多个具有关联关系的限定事实对象进行合并处理,得到组合事实对象;根据所述组合事实对象,对预设的所述限定事实对象所对应的初始规则进行转换处理,得到第一目标规则;根据所述第一目标规则进行优化Rete网络的构建处理,以将所述第一目标规则部署于所述优化Rete网络的Alpha节点中,得到规则引擎。
可选地,所述处理器202具体用于:
构建空组合事实对象;
在所述空组合事实对象中为每个所述限定事实对象创建命名空间;
确定所述多个限定事实对象的关联字段,对所述关联字段进行去重处理,得到每个所述限定事实对象的目标字段;
将所述目标字段添加至相应的所述命名空间中,得到组合事实对象。
可选地,所述处理器202进一步具体用于:
确定不同的所述限定事实对象的字段之间是否存在相同的字段;
若是,则将所述相同的字段确定为相应限定事实对象之间的关联字段;
若否,则根据预先建立的关联关系确定相应限定事实对象之间的关联字段。
可选地,所述处理器202具体用于:
针对预设的每个初始规则,分别从所述初始规则中获取对应的所述限定事实对象的字段的规则信息;
将所述组合事实对象中与所述规则信息相对应的字段的规则,设置为所述规则信息;
根据包括所述规则信息的组合事实对象,生成第一目标规则。
可选地,每个所述限定事实对象对应至少一个事实;所述处理器202具体用于:
构建优化Rete网络的Root节点;
分别将每个所述第一目标规则输入所述Root节点中,并确定所述第一目标规则包括的目标事实;以及,
确定是否存在所述目标事实对应的Type节点,若否,则创建所述目标事实对应的Type节点;
若通过所述Type节点确定所述第一目标规则是基于所述组合事实对象转换所得的规则,则创建Alpha节点,并将所述第一目标规则部署于所述Alpha节点中;
创建所述Alpha节点对应的Terminal节点;
若确定各所述第一目标规则均部署完成,则将包括所述第一目标规则的优化Rete网络,确定为规则引擎。
可选地,每个所述限定事实对象对应至少一个事实;所述处理器202还用于:
若获取到待处理事实,则确定与所述待处理事实具有关联关系的关联事实;
根据所述待处理事实和所述关联事实,基于所述组合事实对象生成待处理的组合事实;
将所述待处理的组合事实输入所述规则引擎中进行规则匹配处理,并基于匹配结果执行相应操作。
可选地,所述限定事实对象包括第一限定事实对象和第二限定事实对象,所述第一限定事实对象对应第一数量的第一事实,所述第二限定事实对象对应第二数量的第二事实;所述处理器202还用于:
若确定所述第一数量大于所述第二数量,则将所述第二限定事实对象从所述组合事实对象中删除;
对包括所述第二事实的所述初始规则或所述第一目标规则进行条件置换处理,生成第二目标规则。
可选地,所述限定事实对象包括多个字段;所述处理器202进一步具体用于:
确定用于表征所述第二事实的目标字段;
将包括所述第二事实的所述初始规则或所述第一目标规则,转换为基于所述目标字段的IN类型的规则,将所述IN类型的规则确定为第二目标规则。
可选地,所述处理器202还用于:
若确定存在待更新的所述第二目标规则,则根据所述第二目标规则的更新类型进行更新处理。
可选地,所述处理器202进一步具体用于:
确定所述第二目标规则的更新类型;
若所述更新类型为更新所述IN类型的规则中的枚举数据,则确定所述枚举数据的更新信息,根据所述更新信息生成相应类型的待添加规则,将所述待添加规则添加到所述规则引擎中;
若所述更新类型为更新规则模式,则根据待更新的目标规则模式生成新的规则,将所述第二目标规则从所述规则引擎中删除,并将所述新的规则添加到所述规则引擎中。
本说明书实施例提供的规则引擎的优化装置,通过对限定事实对象进行合并处理,得到组合事实对象,并将基于组合事实对象对初始规则进行转换处理得到的第一目标规则部署于优化Rete网络的Alpha节点中;使得该优化Rete网络中仅存在一个组合事实对象,而不存在需要进行连接操作的多个不同的事实对象,因此,不再需要Beta节点进行不同对象之间的连接操作,直接通过Alpha节点基于部署的第一目标规则进行规则匹配处理即可。可见,本申请的优化Rete网络中无需部署Beta节点,简化了Rete网络的结构,实现了对现有Rete网络的优化,进而实现了对规则引擎的优化,不仅能够极大的提升规则引擎的规则匹配效率,而且能够节约内存资源。即使在海量规则高并发的场景下,依然能够保障规则引擎的规则匹配效率。
另外,对于上述装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。而且,应当注意的是,本发明的装置的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重新划分或者组合。
基于同样的技术构思,本申请实施例还提供一种规则引擎的优化设备,如图8所示。规则引擎的优化设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器301和存储器302,存储器302中可以存储有一个或一个以上存储应用程序或数据。其中,存储器302可以是短暂存储或持久存储。存储在存储器302的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对规则引擎的优化设备中的一系列计算机可执行指令。更进一步地,处理器301可以设置为与存储器302通信,在规则引擎的优化设备上执行存储器302中的一系列计算机可执行指令。规则引擎的优化设备还可以包括一个或一个以上电源303,一个或一个以上有线或无线网络接口304,一个或一个以上输入输出接口305,一个或一个以上键盘306。
具体在本实施例中,规则引擎的优化设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对规则引擎的优化设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
对多个具有关联关系的限定事实对象进行合并处理,得到组合事实对象;
根据所述组合事实对象,对预设的所述限定事实对象所对应的初始规则进行转换处理,得到第一目标规则;
根据所述第一目标规则进行优化Rete网络的构建处理,以将所述第一目标规则部署于所述优化Rete网络的Alpha节点中,得到规则引擎。
本申请实施例还提出了一种存储介质,该存储介质存储一个或多个计算机程序,该一个或多个计算机程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行上述一种规则引擎的优化方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (13)
1.一种规则引擎的优化方法,其特征在于,包括:
对多个具有关联关系的限定事实对象进行合并处理,得到组合事实对象;
根据所述组合事实对象,对预设的所述限定事实对象所对应的初始规则进行转换处理,得到第一目标规则;
根据所述第一目标规则进行优化Rete网络的构建处理,以将所述第一目标规则部署于所述优化Rete网络的Alpha节点中,得到规则引擎。
2.根据权利要求1所述的方法,其特征在于,每个所述限定事实对象包括多个字段;所述对多个限定事实对象进行合并处理,得到组合事实对象,包括:
构建空组合事实对象;
在所述空组合事实对象中为每个所述限定事实对象创建命名空间;
确定所述多个限定事实对象的关联字段,对所述关联字段进行去重处理,得到每个所述限定事实对象的目标字段;
将所述目标字段添加至相应的所述命名空间中,得到组合事实对象。
3.根据权利要求2所述的方法,其特征在于,所述确定所述多个限定事实对象的关联字段,包括:
确定不同的所述限定事实对象的字段之间是否存在相同的字段;
若是,则将所述相同的字段确定为相应限定事实对象之间的关联字段;
若否,则根据预先建立的关联关系确定相应限定事实对象之间的关联字段。
4.根据权利要求2所述的方法,其特征在于,所述根据所述组合事实对象,对预设的所述限定事实对象所对应的初始规则进行转换处理,得到第一目标规则,包括:
针对预设的每个初始规则,分别从所述初始规则中获取对应的所述限定事实对象的字段的规则信息;
将所述组合事实对象中与所述规则信息相对应的字段的规则,设置为所述规则信息;
根据包括所述规则信息的组合事实对象,生成第一目标规则。
5.根据权利要求1所述的方法,其特征在于,每个所述限定事实对象对应至少一个事实;所述根据所述第一目标规则进行优化Rete网络的构建处理,以将所述第一目标规则部署于所述优化Rete网络的Alpha节点中,得到规则引擎,包括:
构建优化Rete网络的Root节点;
分别将每个所述第一目标规则输入所述Root节点中,并确定所述第一目标规则包括的目标事实;以及,
确定是否存在所述目标事实对应的Type节点,若否,则创建所述目标事实对应的Type节点;
若通过所述目标事实对应的Type节点确定所述第一目标规则是基于所述组合事实对象转换所得的规则,则创建Alpha节点,并将所述第一目标规则部署于所述Alpha节点中;
创建所述Alpha节点对应的Terminal节点;
若确定各所述第一目标规则均部署完成,则将包括所述第一目标规则的优化Rete网络,确定为规则引擎。
6.根据权利要求1所述的方法,其特征在于,每个所述限定事实对象对应至少一个事实;所述得到规则引擎之后,所述方法还包括:
若获取到待处理事实,则确定与所述待处理事实具有关联关系的关联事实;
根据所述待处理事实和所述关联事实,基于所述组合事实对象生成待处理的组合事实;
将所述待处理的组合事实输入所述规则引擎中进行规则匹配处理,并基于匹配结果执行相应操作。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述限定事实对象包括第一限定事实对象和第二限定事实对象,所述第一限定事实对象对应第一数量的第一事实,所述第二限定事实对象对应第二数量的第二事实;所述方法还包括:
若确定所述第一数量大于所述第二数量,则将所述第二限定事实对象从所述组合事实对象中删除;
对包括所述第二事实的所述初始规则或所述第一目标规则进行条件置换处理,生成第二目标规则。
8.根据权利要求7所述的方法,其特征在于,所述限定事实对象包括多个字段;所述对包括所述第二事实的所述初始规则或所述第一目标规则进行条件置换处理,生成第二目标规则,包括:
确定用于表征所述第二事实的目标字段;
将包括所述第二事实的所述初始规则或所述第一目标规则,转换为基于所述目标字段的IN类型的规则,将所述IN类型的规则确定为第二目标规则。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若确定存在待更新的所述第二目标规则,则根据所述第二目标规则的更新类型进行更新处理。
10.根据权利要求9所述的方法,其特征在于,所述根据所述第二目标规则的更新类型进行更新处理,包括:
确定所述第二目标规则的更新类型;
若所述更新类型为更新所述IN类型的规则中的枚举数据,则确定所述枚举数据的更新信息,根据所述更新信息生成相应类型的待添加规则,将所述待添加规则添加到所述规则引擎中;
若所述更新类型为更新规则模式,则根据待更新的目标规则模式生成新的规则,将所述第二目标规则从所述规则引擎中删除,并将所述新的规则添加到所述规则引擎中。
11.一种规则引擎的优化装置,其特征在于,包括:
存储器,用于存储待部署规则的Rete网络;
处理器,用于对多个具有关联关系的限定事实对象进行合并处理,得到组合事实对象;根据所述组合事实对象,对预设的所述限定事实对象所对应的初始规则进行转换处理,得到第一目标规则;根据所述第一目标规则进行优化Rete网络的构建处理,以将所述第一目标规则部署于所述优化Rete网络的Alpha节点中,得到规则引擎。
12.一种规则引擎的优化设备,其特征在于,包括:处理器,与所述处理器电连接的存储器。所述存储器存储有计算机程序,所述处理器用于从所述存储器调用并执行所述计算机程序以上述权利要求1至10中任一项所述的方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1至10中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111580618.6A CN114268540B (zh) | 2021-12-22 | 2021-12-22 | 规则引擎的优化方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111580618.6A CN114268540B (zh) | 2021-12-22 | 2021-12-22 | 规则引擎的优化方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114268540A true CN114268540A (zh) | 2022-04-01 |
CN114268540B CN114268540B (zh) | 2024-03-01 |
Family
ID=80828761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111580618.6A Active CN114268540B (zh) | 2021-12-22 | 2021-12-22 | 规则引擎的优化方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114268540B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120143809A1 (en) * | 2010-12-02 | 2012-06-07 | Mark Proctor | Lazily enabled truth maintenance in rule engines |
CN102497135A (zh) * | 2011-11-14 | 2012-06-13 | 无锡南理工科技发展有限公司 | 一种基于规则引擎的光伏电站监控方法 |
CN105573737A (zh) * | 2014-10-30 | 2016-05-11 | 中国科学院声学研究所 | 一种提高规则引擎运行效率的方法 |
CN107247588A (zh) * | 2017-05-26 | 2017-10-13 | 电子科技大学 | 一种基于约束频度的规则引擎优化方法 |
CN111814458A (zh) * | 2020-07-30 | 2020-10-23 | 深圳麦亚信科技股份有限公司 | 规则引擎系统优化方法、装置、计算机设备及存储介质 |
-
2021
- 2021-12-22 CN CN202111580618.6A patent/CN114268540B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120143809A1 (en) * | 2010-12-02 | 2012-06-07 | Mark Proctor | Lazily enabled truth maintenance in rule engines |
CN102497135A (zh) * | 2011-11-14 | 2012-06-13 | 无锡南理工科技发展有限公司 | 一种基于规则引擎的光伏电站监控方法 |
CN105573737A (zh) * | 2014-10-30 | 2016-05-11 | 中国科学院声学研究所 | 一种提高规则引擎运行效率的方法 |
CN107247588A (zh) * | 2017-05-26 | 2017-10-13 | 电子科技大学 | 一种基于约束频度的规则引擎优化方法 |
CN111814458A (zh) * | 2020-07-30 | 2020-10-23 | 深圳麦亚信科技股份有限公司 | 规则引擎系统优化方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
田瑞琴;吴尽昭;唐鼎;: "物联网网关中轻量化规则引擎的设计与实现", 计算机应用, no. 04 * |
Also Published As
Publication number | Publication date |
---|---|
CN114268540B (zh) | 2024-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107688500B (zh) | 一种分布式任务处理方法、装置、系统及设备 | |
CN108418851B (zh) | 策略发布系统、方法、装置及设备 | |
CN109032803B (zh) | 数据处理方法和装置、客户端 | |
CN109492013B (zh) | 应用于数据库集群的数据处理方法、装置和系统 | |
CN110543448A (zh) | 数据同步方法、装置、设备及计算机可读存储介质 | |
US11336588B2 (en) | Metadata driven static determination of controller availability | |
CN109145053B (zh) | 数据处理方法和装置、客户端、服务器 | |
WO2021139431A1 (zh) | 微服务的数据同步方法、装置、电子设备及存储介质 | |
CN110430255A (zh) | 分布式集群中服务请求的处理方法、系统以及电子设备 | |
CN111240892A (zh) | 数据备份方法及装置 | |
CN108989072B (zh) | 一种部署、管理及调用组件的方法及装置 | |
CN108536447B (zh) | 运维管理方法 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
CN112199200B (zh) | 资源调度方法、装置、计算机设备和存储介质 | |
CN110298031B (zh) | 一种词典服务系统及模型版本一致性配送方法 | |
CN114268540B (zh) | 规则引擎的优化方法、装置及设备 | |
CN116302424A (zh) | 分布式系统的数据处理方法、节点及分布式系统 | |
CN113656426B (zh) | 分布式数据处理方法、装置及设备 | |
CN112579877A (zh) | 信源系统的控制方法、装置、存储介质和设备 | |
CN113806309B (zh) | 基于分布式锁的元数据删除方法、系统、终端及存储介质 | |
CN114968422A (zh) | 基于变量状态自动执行合约的方法和装置 | |
CN114710350A (zh) | 一种可调用资源的分配方法和装置 | |
CN111400243B (zh) | 基于流水线服务的研发管理系统以及文件存储方法、装置 | |
CN114328129A (zh) | 消息发送方法、装置、设备及存储介质 | |
CN109032804B (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 |