CN108256647A - 规则执行请求处理方法、装置、存储介质和电子设备 - Google Patents

规则执行请求处理方法、装置、存储介质和电子设备 Download PDF

Info

Publication number
CN108256647A
CN108256647A CN201711386592.5A CN201711386592A CN108256647A CN 108256647 A CN108256647 A CN 108256647A CN 201711386592 A CN201711386592 A CN 201711386592A CN 108256647 A CN108256647 A CN 108256647A
Authority
CN
China
Prior art keywords
rule
session
current sessions
queue
request
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
Application number
CN201711386592.5A
Other languages
English (en)
Other versions
CN108256647B (zh
Inventor
张延凤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Neusoft Corp
Original Assignee
Neusoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Neusoft Corp filed Critical Neusoft Corp
Priority to CN201711386592.5A priority Critical patent/CN108256647B/zh
Publication of CN108256647A publication Critical patent/CN108256647A/zh
Application granted granted Critical
Publication of CN108256647B publication Critical patent/CN108256647B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems
    • G06N5/047Pattern matching networks; Rete networks

Abstract

本公开涉及一种规则执行请求处理方法、装置、存储介质和电子设备,该方法包括:创建包括依序排列的预设个数的规则会话的会话队列;当接收到第一规则执行请求时,获取位于该会话队列首位的第一规则会话作为当前会话;当利用该当前会话处理过的规则执行请求数量确定该当前会话满足注销条件时,注销该当前会话;将该会话队列中该第一规则会话的下一规则会话作为该当前会话,以针对该第一规则执行请求进行规则执行处理。能够通过在会话队列中循环地使用、销毁和创建规则会话的方式,避免规则引擎系统在高并发状况下频繁销毁事实对象并进行垃圾回收的状况,在不引起内存溢出的情况下,提高系统进行规则执行处理的效率。

Description

规则执行请求处理方法、装置、存储介质和电子设备
技术领域
本公开涉及规则引擎领域,具体地,涉及一种规则执行请求处理方法、装置、存储介质和电子设备。
背景技术
规则引擎起源于基于规则的专家系统,由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策,接受数据输入,解释业务规则,并根据业务规则做出业务决策。规则引擎主要包括三部分:规则库或知识库、工作内存或事实库以及推理引擎。目前,现有的规则引擎框架已经实现了RETE算法,Rete在拉丁文中是网络的意思,RETE算法是一种高效的模式匹配算法,该算法实现可分为规则编译和运行时执行两个部分。其中,规则编译是指如何将缓存中的规则构建成一个有效的网络;运行时执行是指规则引擎在执行声明、撤销或者修改事实对象等操作时,事实对象在RETE网络中的传播过程。
在将事实对象放入RETE网络并触发规则执行时,规则引擎通过API接口session.insert(fact)将事实对象(fact)写入规则会话(session),再通过API接口session.fireAllRules()触发规则执行。在规则执行完毕后,通过API接口session.delete(factHandler)销毁事实对象,以防止内存溢出。但在高并发状况下,系统会频繁地将事实对象放入规则会话,再通过上述API接口销毁事实对象。这个过程会带来严重的Java虚拟机垃圾回收(Garbage Collection,简称GC)问题,意味着规则引擎系统每隔一段时间就会忙于进行垃圾回收,导致对规则执行请求的响应时间变长,进而降低系统的处理效率。
发明内容
为克服相关技术中存在的问题,本公开提供一种规则执行请求处理方法、装置、存储介质和电子设备。
根据本公开实施例的第一方面,提供一种规则执行请求处理方法,包括:
创建会话队列,所述会话队列中包括依序排列的预设个数的规则会话;
当接收到第一规则执行请求时,获取位于所述会话队列首位的第一规则会话作为当前会话;
当利用所述当前会话处理过的规则执行请求数量确定所述当前会话满足注销条件时,注销所述当前会话;
将所述会话队列中的第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理,所述第二规则会话为所述会话队列中所述第一规则会话的下一规则会话,所述规则执行处理为根据目标事实对象判断是否满足目标规则的处理。
可选的,所述将所述会话队列中的第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理,包括:
在将所述第一规则会话注销后,将所述会话队列中的每个规则会话均向所述会话队列首位的方向移动一位;
将新创建的规则会话加入所述会话队列,置于所述会话队列的末尾位;
将当前位于所述会话队列首位的所述第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理。
可选的,所述当利用所述当前会话处理过的规则执行请求数量确定所述当前会话满足注销条件时,注销所述当前会话,包括:
根据所述规则执行请求数量,以及预设数量阈值,确定所述当前会话是否满足注销条件;
当确定所述当前会话满足注销条件时,注销所述当前会话。
可选的,所述根据所述规则执行请求数量,以及预设数量阈值,确定所述当前会话是否满足注销条件,包括:
获取计数器记录的所述规则执行请求数量;
根据所述规则执行请求数量与所述预设数量进行取模运算;
当所述取模运算得到的模值为零时,确定所述当前会话满足注销条件。
可选的,在接收到第一规则执行请求之前,所述方法还包括:
确定规则引擎所需要的事实对象集合,所述事实对象集合中包含与多个业务事件对应的多个事实对象;
将预先设置的环状缓存区中的多个块区分配给所述多个业务事件,其中,在每个块区中记录有一个业务事件对应的所有事实对象的标记。
可选的,所述环状缓存区包括请求入口位置和规则执行处理位置,所述将所述会话队列中的第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理,包括:
根据所述第一规则执行请求从规则库中确定所述目标规则;
根据所述目标规则确定所述目标规则需要的所述目标事实对象;
获取所述第一规则执行请求中携带的所述目标事实对象的参数;
在所述环状缓存区中确定目标区块,所述目标区块中为包含所有所述目标事实对象的标记的区块;
在所述请求入口位置将所述目标事实对象的参数赋值到所述目标区块中;其中,每当有下一个规则执行请求到来时,所述环状缓存区中的每个区块均向规则执行处理位置移动一个以区块的大小;
当所述目标区块移动至规则执行处理位置时,将所述目标区块分配给所述当前会话,以利用所述当前会话针对所述第一规则执行请求进行规则执行处理。
根据本公开实施例的第二方面,提供一种规则执行请求处理装置,所述装置包括:
队列创建模块,用于创建会话队列,所述会话队列中包括依序排列的预设个数的规则会话;
会话获取模块,用于当接收到第一规则执行请求时,获取位于所述会话队列首位的第一规则会话作为当前会话;
会话注销模块,用于当利用所述当前会话处理过的规则执行请求数量确定所述当前会话满足注销条件时,注销所述当前会话;
规则执行模块,用于将所述会话队列中的第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理,所述第二规则会话为所述会话队列中所述第一规则会话的下一规则会话,所述规则执行处理为根据目标事实对象判断是否满足目标规则的处理。
可选的,所述规则执行模块,包括:
会话移位子模块,用于在将所述第一规则会话注销后,将所述会话队列中的每个规则会话均向所述会话队列首位的方向移动一位;
会话添加子模块,用于将新创建的规则会话加入所述会话队列,置于所述会话队列的末尾位;
规则执行子模块,用于将当前位于所述会话队列首位的所述第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理。
可选的,所述会话注销模块,包括:
条件确定子模块,用于根据所述规则执行请求数量,以及预设数量阈值,确定所述当前会话是否满足注销条件;
会话注销子模块,用于当确定所述当前会话满足注销条件时,注销所述当前会话。
可选的,所述条件确定子模块,用于:
获取计数器记录的所述规则执行请求数量;
根据所述规则执行请求数量与所述预设数量进行取模运算;
当所述取模运算得到的模值为零时,确定所述当前会话满足注销条件。
可选的,所述装置还包括:
对象确定模块,用于确定规则引擎所需要的事实对象集合,所述事实对象集合中包含与多个业务事件对应的多个事实对象;
内存分配模块,用于将预先设置的环状缓存区中的多个块区分配给所述多个业务事件,其中,在每个块区中记录有一个业务事件对应的所有事实对象的标记。
可选的,所述环状缓存区包括请求入口位置和规则执行处理位置,所述规则执行模块,用于:
根据所述第一规则执行请求从规则库中确定所述目标规则;
根据所述目标规则确定所述目标规则需要的所述目标事实对象;
获取所述第一规则执行请求中携带的所述目标事实对象的参数;
在所述环状缓存区中确定目标区块,所述目标区块中为包含所有所述目标事实对象的标记的区块;
在所述请求入口位置将所述目标事实对象的参数赋值到所述目标区块中;其中,每当有下一个规则执行请求到来时,所述环状缓存区中的每个区块均向规则执行处理位置移动一个以区块的大小;
当所述目标区块移动至规则执行处理位置时,将所述目标区块分配给所述当前会话,以利用所述当前会话针对所述第一规则执行请求进行规则执行处理。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本公开实施例的第一方面中所述方法的步骤。
根据本公开实施例的第四方面,提供一种电子设备,包括:
本公开实施例的第三方面所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
本公开的提供的规则执行请求处理方法、装置、存储介质及设备,能够创建会话队列,该会话队列中包括依序排列的预设个数的规则会话;当接收到第一规则执行请求时,获取位于该会话队列首位的第一规则会话作为当前会话;当利用该当前会话处理过的规则执行请求数量确定该当前会话满足注销条件时,注销该当前会话;将该会话队列中的第二规则会话作为该当前会话,以针对该第一规则执行请求进行规则执行处理,该第二规则会话为该会话队列中该第一规则会话的下一规则会话,该规则执行处理为根据目标事实对象判断是否满足目标规则的处理。能够通过在会话队列中循环地使用、销毁和创建规则会话的方式,避免规则引擎系统在高并发状况下频繁销毁事实对象并进行垃圾回收的状况,在不引起内存溢出的情况下,提高系统进行规则执行处理的效率。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据一示例性实施例示出的一种规则执行请求处理方法的流程图;
图2是根据图1所示实施例示出的一种规则执行方法的流程图;
图3是根据图1所示实施例示出的一种会话注销方法的流程图;
图4是根据图1所示实施例示出的另一种规则执行请求处理方法的流程图;
图5是根据一示例性实施例示出的一种规则执行请求处理装置的框图;
图6是根据图5所示实施例示出的一种规则执行模块的框图;
图7是根据图5所示实施例示出的一种会话注销模块的框图;
图8是根据图5所示实施例示出的另一种规则执行请求处理装置的框图;
图9是根据一示例性实施例示出的一种电子设备的框图;
图10是根据一示例性实施例示出的另一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1是根据一示例性实施例示出的一种规则执行请求处理方法的流程图,如图1所示,该方法可以包括以下步骤:
步骤101,创建会话队列。
其中,该会话队列中包括依序排列的预设个数的规则会话,可选的,该会话队列中包括依次排列的三个规则会话。该会话队列可以为通过Java中的ArrayBlockingQueue(有界阻塞队列)语句创建的队列。该队列按先进先出的原则对元素(在本实施例中元素就是规则会话,即session)进行排序。该队列中元素的顺序为逻辑上的位置关系,其中,队列的首位为在队列中存在时间最长的元素,队列的末尾位是在会话队列中存在时间最短元素。在进行队列中的元素替换时,将新元素插入到队列的末尾位,并且,在队列检索操作中,从队列首位开始获得元素。
步骤102,当接收到第一规则执行请求时,获取位于该会话队列首位的第一规则会话作为当前会话。
其中,该第一规则执行请求可以包含需要执行的规则信息(例如目标规则标识,或其他类型的能够指示目标规则的信息)、规则执行的目标事务的信息、以及该目标事务的所有已知的参数的值。当规则引擎系统接收到该第一规则执行请求时,首先根据该第一规则执行请求中需要执行的规则信息确定本次规则执行涉及的目标规则;再根据该目标规则,获取上述所有已知的目标规则中执行该目标规则所需的参数(可以首先确定目标规则所需要的目标事实对象,即fact,然后将目标事实对象所对应的参数作为该目标规则所需的参数);最后将该相关参数的值和该目标规则写入已确定的当前会话(包括将目标规则写入当前会话,以及将目标事实对象所对应的参数的值赋值给目标事实对象),进而当前会话中对该目标规则进行执行,其中,该当前会话可以看成是用于执行目标规则的一个平台,为该目标规则的执行提供所需的API接口,也可以看作是一个包含多个API接口的集合。
例如,该第一规则执行请求中需要执行的规则信息可以为:判断客户A是否为高端客户的规则,规则执行的目标事务为客户A,该客户A所有已知参数包括:姓名、年龄、学历、存款余额,以及性别等。当系统接收到该第一规则执行请求时,首先根据上述需要执行的规则信息确定本次规则执行涉及用于判断用户是否为高端客户的目标规则1,然后根据目标规则1确定该目标规则1所需要的目标事实对象包括:学历、年龄以及存款余额,从而根据目标规则1所需要的目标事实对象在第一规则执行请求提供的参数中获取到:学历、年龄以及存款余额。最后,通过当前会话的API接口将该目标规则1以及该相关参数的值(即用户A具体的学历信息、岁数以及存款数)写入当前会话,进而在当前会话中执行该目标规则1,确定该客户A是或者不是高端客户,其中该目标规则1可以看做是包含学历、年龄以及存款余额这三个变量的一个公式,通过目标规则1的计算结果以及与预设的针对计算结果的判定条件即可确定出客户A是或者不是高端客户。
示例地,将该会话队列首位的第一规则会话作为当前会话,再通过session.insert(fact)在该当前会话中插入对象,并进而通过session.fireAllRules()在该当前会话中触发规则执行。
步骤103,当利用该当前会话处理过的规则执行请求数量确定该当前会话满足注销条件时,注销该当前会话。
示例地,当该当前会话处理了一定数量的规则执行请求时,可以注销该当前会话。在注销该当前会话的同时,该当前会话中关联的所有事实对象也一并被销毁,以达到防止内存溢出的效果。
步骤104,将该会话队列中的第二规则会话作为该当前会话,以针对该第一规则执行请求进行规则执行处理。
其中,该第二规则会话为该会话队列中该第一规则会话的下一规则会话,该规则执行处理为根据目标事实对象判断是否满足目标规则的处理。该下一规则会话为在该会话队列中存在时长仅次于该第一规则会话的规则会话。
示例地,在上述步骤103中的当前会话被注销后,系统会从该会话队列中重新获取排在首位的规则会话,作为新的当前会话,以继续对规则执行请求进行处理。需要说明的是,上述步骤103中注销当前会话的操作以及该步骤104中创建新的当前会话的操作采用异步线程方式实现,以保证上述的注销和生成操作不会对持续地规则执行处理产生影响。
综上所述,本公开提供的规则执行请求处理方法,能够创建会话队列,该会话队列中包括依序排列的预设个数的规则会话;当接收到第一规则执行请求时,获取位于该会话队列首位的第一规则会话作为当前会话;当利用该当前会话处理过的规则执行请求数量确定该当前会话满足注销条件时,注销该当前会话;将该会话队列中的第二规则会话作为该当前会话,以针对该第一规则执行请求进行规则执行处理,该第二规则会话为该会话队列中该第一规则会话的下一规则会话,该规则执行处理为根据目标事实对象判断是否满足目标规则的处理。能够通过在会话队列中循环地使用、销毁和创建规则会话的方式,避免规则引擎在高并发状况下频繁销毁事实对象并进行垃圾回收的状况,在不引起内存溢出的情况下,提高系统进行规则执行处理的效率。
图2是根据图1所示实施例示出的一种规则执行方法的流程图,如图2所示,在上述步骤104可以包括以下步骤:
步骤1041,在将该第一规则会话注销后,将该会话队列中的每个规则会话均向该会话队列首位的方向移动一位。
以该会话队列中包含三个规则会话为例,当该第一规则会话被注销后,该会话队列中的第二规则会话以及原本排在末尾的规则会话在该会话队列中的存在时间均大于在该步骤1042中新创建的规则会话,故该第二规则会话以及原本排在末尾的规则会话在该会话队列中的逻辑上的位置均向该会话队列首位的方向移动一位。
步骤1042,将新创建的规则会话加入该会话队列,置于该会话队列的末尾位。
步骤1043,将当前位于该会话队列首位的该第二规则会话作为该当前会话,以针对该第一规则执行请求进行规则执行处理。
图3是根据图1所示实施例示出的一种会话注销方法的流程图,如图3所示,上述步骤103可以包括以下步骤:
步骤1031,根据该规则执行请求数量,以及预设数量阈值,确定该当前会话是否满足注销条件。
示例地,该预设数量阈值可以根据可能出现的并发规则执行请求的数量任意设置。例如,可以根据能出现的并发规则执行请求的数量将该预设数量阈值设置为1000,每当当前会话处理了1000个规则执行请求时,则确认该当前会话满足注销条件。在对该规则执行请求数量进行计数时,该步骤1031可以包括:获取计数器记录的该规则执行请求数量;根据该规则执行请求数量与该预设数量进行取模运算;当该取模运算得到的模值为零时,确定该当前会话满足注销条件。当该当前会话处理的规则执行请求未达到该预设数量时,确定该当前会话不满足注销条件,并继续通过该当前会话进行规则执行处理;当该当前会话处理的规则执行请求达到了该预设数量时,继续进行下列步骤1032。
步骤1032,当确定该当前会话满足注销条件时,注销该当前会话。
图4是根据图1所示实施例示出的另一种规则执行请求处理方法的流程图,如图4所示,在步骤101之前,该方法还可以包括以下步骤:
步骤105,确定规则引擎所需要的事实对象集合,该事实对象集合中包含与多个业务事件对应的多个事实对象。
示例地,在该事实对象集合中,一个业务事件对应实现某一业务逻辑所需要的多个事实对象的集合,并且,多个不同的业务事件可以对应同一个事实对象。
步骤106,将预先设置的环状缓存区中的多个块区分配给该多个业务事件。
示例地,在对规则执行请求进行处理之前,需要通过该步骤105以及步骤106对事实对象对应的内存进行预先分配。在通过该步骤105确定该事实对象集合后,该步骤106包括:首先,在内存中开辟环状缓存区(Ring Buffer);其次,在该环状缓存区的每个块区中创建对应的业务事件(Event);最后,在每个区块中记录该业务事件对应的所有事实对象的标记。
示例地,该环状缓存区包括请求入口位置和规则执行处理位置,基于该步骤105与106,上述步骤104还可以包括:当高并发下大量规则处理请求到来时,首先,根据该第一规则执行请求从规则库中确定该目标规则;其次,根据该目标规则确定该目标规则需要的该目标事实对象;再次,获取该第一规则执行请求中携带的该目标事实对象的参数,其中,该第一规则执行请求中可以携带执行该目标规则所需要的以及不需要的所有参数,在本步骤中,需要建立该目标事实对象与所有参数中该目标规则所需的参数之间的映射关系,可以首先确定目标规则所需要的目标事实对象,然后在第一规则执行请求携带的所有参数中,将目标事实对象所对应的参数作为该目标规则所需的参数;之后,在该环状缓存区中确定目标区块,该目标区块中为包含所有该目标事实对象的标记的区块;进而由该第一规则执行请求的发起者(或者可以称为生产者)在该请求入口位置将该目标事实对象对应的参数赋值到该目标区块中;需要说明的是,每当有下一个规则执行请求到来时,该环状缓存区中的每个区块均向规则执行处理位置移动一个以区块的大小,当该目标区块移动至规则执行处理位置时,该第一规则执行请求的处理者(即handler,或者可以称为消费者)将该目标区块分配给该当前会话(这样之前赋值到该目标区块中的目标事实对象对应的参数,就可以在该当前会话中赋给该目标规则中的目标事实对象,即相当于在目标区块移动至规则执行处理位置时,写入目标区块中的目标事实对象的参数就可以传递至当前会话中),以利用该当前会话针对该第一规则执行请求进行规则执行处理。这样的好处是,当有大量的规则执行请求到来时,可以通过上述的环状缓存区先将规则执行请求中的目标事实对象需要的参数缓存下来,当这些参数缓存的区块排到执行处理位置时再进行相应的规则执行处理,通过这种参数写入和规则执行异步的方式,能够提高高并发下规则执行请求的响应速度,避免内存溢出。
综上所述,本公开提供的规则执行请求处理方法,能够创建会话队列,该会话队列中包括依序排列的预设个数的规则会话;当接收到第一规则执行请求时,获取位于该会话队列首位的第一规则会话作为当前会话;当利用该当前会话处理过的规则执行请求数量确定该当前会话满足注销条件时,注销该当前会话;将该会话队列中的第二规则会话作为该当前会话,以针对该第一规则执行请求进行规则执行处理,该第二规则会话为该会话队列中该第一规则会话的下一规则会话,该规则执行处理为根据目标事实对象判断是否满足目标规则的处理。能够通过在会话队列中循环地使用、销毁和创建规则会话的方式,避免规则引擎在高并发状况下频繁销毁事实对象并进行垃圾回收的状况,并且通过环状缓冲区预先建立规则执行请求携带的参数与事实对象的映射关系,提高高并发下规则执行请求的响应速度,在不引起内存溢出的情况下,提高系统进行规则执行处理的效率。
图5是根据一示例性实施例示出的一种规则执行请求处理装置的框图,该规则执行请求处理装置500可以用于执行图1所述的方法。参见图5,该装置500可以包括:
队列创建模块510,用于创建会话队列,该会话队列中包括依序排列的预设个数的规则会话;
会话获取模块520,用于当接收到第一规则执行请求时,获取位于该会话队列首位的第一规则会话作为当前会话;
会话注销模块530,用于当利用该当前会话处理过的规则执行请求数量确定该当前会话满足注销条件时,注销该当前会话;
规则执行模块540,用于将该会话队列中的第二规则会话作为该当前会话,以针对该第一规则执行请求进行规则执行处理,该第二规则会话为该会话队列中该第一规则会话的下一规则会话,该规则执行处理为根据目标事实对象判断是否满足目标规则的处理。
图6是根据图5所示实施例示出的一种规则执行模块的框图,该规则执行模块540可以用于执行图2该的方法。参见图6,该规则执行模块540可以包括:
会话移位子模块541,用于在将该第一规则会话注销后,将该会话队列中的每个规则会话均向该会话队列首位的方向移动一位;
会话添加子模块542,用于将新创建的规则会话加入该会话队列,置于该会话队列的末尾位;
规则执行子模块543,用于将当前位于该会话队列首位的该第二规则会话作为该当前会话,以针对该第一规则执行请求进行规则执行处理。
图7是根据图5所示实施例示出的一种会话注销模块的框图,该会话注销模块530可以用于执行图3该的方法。参见图7,该会话注销模块530可以包括:
条件确定子模块531,用于根据该规则执行请求数量,以及预设数量阈值,确定该当前会话是否满足注销条件;
会话注销子模块532,用于当确定该当前会话满足注销条件时,注销该当前会话。
可选的,该条件确定子模块531,用于:
获取计数器记录的该规则执行请求数量;
根据该规则执行请求数量与该预设数量进行取模运算;
当该取模运算得到的模值为零时,确定该当前会话满足注销条件。
图8是根据图5所示实施例示出的另一种规则执行请求处理装置的框图,该规则执行请求处理装置500可以用于执行图4该的方法。参见图8,该装置500还可以包括:
对象确定模块550,用于确定规则引擎所需要的事实对象集合,该事实对象集合中包含与多个业务事件对应的多个事实对象;
内存分配模块560,用于将预先设置的环状缓存区中的多个块区分配给该多个业务事件,其中,在每个块区中记录有一个业务事件对应的所有事实对象的标记。
可选的,该环状缓存区包括请求入口位置和规则执行处理位置,该规则执行模块540,用于:
根据该第一规则执行请求从规则库中确定该目标规则;
根据该目标规则确定该目标规则需要的该目标事实对象;
获取该第一规则执行请求中携带的该目标事实对象的参数;
在该环状缓存区中确定目标区块,该目标区块中为包含所有该目标事实对象的标记的区块;
在该请求入口位置将该目标事实对象的参数赋值到该目标区块中;其中,每当有下一个规则执行请求到来时,该环状缓存区中的每个区块均向规则执行处理位置移动一个以区块的大小;
当该目标区块移动至规则执行处理位置时,将该目标区块分配给该当前会话,以利用该当前会话针对该第一规则执行请求进行规则执行处理。
综上所述,本公开提供的规则执行请求处理装置,能够创建会话队列,该会话队列中包括依序排列的预设个数的规则会话;当接收到第一规则执行请求时,获取位于该会话队列首位的第一规则会话作为当前会话;当利用该当前会话处理过的规则执行请求数量确定该当前会话满足注销条件时,注销该当前会话;将该会话队列中的第二规则会话作为该当前会话,以针对该第一规则执行请求进行规则执行处理,该第二规则会话为该会话队列中该第一规则会话的下一规则会话,该规则执行处理为根据目标事实对象判断是否满足目标规则的处理。能够通过在会话队列中循环地使用、销毁和创建规则会话的方式,避免规则引擎在高并发状况下频繁销毁事实对象并进行垃圾回收的状况,并且通过环状缓冲区预先建立规则执行请求携带的参数与事实对象的映射关系,提高高并发下规则执行请求的响应速度,在不引起内存溢出的情况下,提高系统进行规则执行处理的效率。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图9是根据一示例性实施例示出的一种电子设备900的框图。如图9所示,该电子设备900可以包括:处理器901,存储器902,多媒体组件903,输入/输出(I/O)接口904,以及通信组件905。
其中,处理器901用于控制该电子设备900的整体操作,以完成上述的规则执行请求处理方法中的全部或部分步骤。存储器902用于存储各种类型的数据以支持在该电子设备900的操作,这些数据例如可以包括用于在该电子设备900上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器902可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件903可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器902或通过通信组件905发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口904为处理器901和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件905用于该电子设备900与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件905可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备900可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的规则执行请求处理方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器902,上述程序指令可由电子设备900的处理器901执行以完成上述的规则执行请求处理方法。
图10是根据一示例性实施例示出的一种电子设备1000的框图。例如,电子设备1000可以被提供为一服务器。参照图10,电子设备1000包括处理器1022,其数量可以为一个或多个,以及存储器1032,用于存储可由处理器1022执行的计算机程序。存储器1032中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器1022可以被配置为执行该计算机程序,以执行上述的规则执行请求处理方法。
另外,电子设备1000还可以包括电源组件1026和通信组件1050,该电源组件1026可以被配置为执行电子设备1000的电源管理,该通信组件1050可以被配置为实现电子设备1000的通信,例如,有线或无线通信。此外,该电子设备1000还可以包括输入/输出(I/O)接口1058。电子设备1000可以操作基于存储在存储器1032的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器1032,上述程序指令可由电子设备1000的处理器1022执行以完成上述的规则执行请求处理方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

Claims (10)

1.一种规则执行请求处理方法,其特征在于,所述方法包括:
创建会话队列,所述会话队列中包括依序排列的预设个数的规则会话;
当接收到第一规则执行请求时,获取位于所述会话队列首位的第一规则会话作为当前会话;
当利用所述当前会话处理过的规则执行请求数量确定所述当前会话满足注销条件时,注销所述当前会话;
将所述会话队列中的第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理,所述第二规则会话为所述会话队列中所述第一规则会话的下一规则会话,所述规则执行处理为根据目标事实对象判断是否满足目标规则的处理。
2.根据权利要求1所述的方法,其特征在于,所述将所述会话队列中的第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理,包括:
在将所述第一规则会话注销后,将所述会话队列中的每个规则会话均向所述会话队列首位的方向移动一位;
将新创建的规则会话加入所述会话队列,置于所述会话队列的末尾位;
将当前位于所述会话队列首位的所述第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理。
3.根据权利要求1所述的方法,其特征在于,所述当利用所述当前会话处理过的规则执行请求数量确定所述当前会话满足注销条件时,注销所述当前会话,包括:
根据所述规则执行请求数量,以及预设数量阈值,确定所述当前会话是否满足注销条件;
当确定所述当前会话满足注销条件时,注销所述当前会话。
4.根据权利要求3所述的方法,其特征在于,所述根据所述规则执行请求数量,以及预设数量阈值,确定所述当前会话是否满足注销条件,包括:
获取计数器记录的所述规则执行请求数量;
根据所述规则执行请求数量与所述预设数量进行取模运算;
当所述取模运算得到的模值为零时,确定所述当前会话满足注销条件。
5.根据权利要求1所述的方法,其特征在于,在接收到第一规则执行请求之前,所述方法还包括:
确定规则引擎所需要的事实对象集合,所述事实对象集合中包含与多个业务事件对应的多个事实对象;
将预先设置的环状缓存区中的多个块区分配给所述多个业务事件,其中,在每个块区中记录有一个业务事件对应的所有事实对象的标记。
6.根据权利要求5所述的方法,其特征在于,所述环状缓存区包括请求入口位置和规则执行处理位置,所述将所述会话队列中的第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理,包括:
根据所述第一规则执行请求从规则库中确定所述目标规则;
根据所述目标规则确定所述目标规则需要的所述目标事实对象;
获取所述第一规则执行请求中携带的所述目标事实对象的参数;
在所述环状缓存区中确定目标区块,所述目标区块中为包含所有所述目标事实对象的标记的区块;
在所述请求入口位置将所述目标事实对象的参数赋值到所述目标区块中;其中,每当有下一个规则执行请求到来时,所述环状缓存区中的每个区块均向规则执行处理位置移动一个以区块的大小;
当所述目标区块移动至规则执行处理位置时,将所述目标区块分配给所述当前会话,以利用所述当前会话针对所述第一规则执行请求进行规则执行处理。
7.一种规则执行请求处理装置,其特征在于,所述装置包括:
队列创建模块,用于创建会话队列,所述会话队列中包括依序排列的预设个数的规则会话;
会话获取模块,用于当接收到第一规则执行请求时,获取位于所述会话队列首位的第一规则会话作为当前会话;
会话注销模块,用于当利用所述当前会话处理过的规则执行请求数量确定所述当前会话满足注销条件时,注销所述当前会话;
规则执行模块,用于将所述会话队列中的第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理,所述第二规则会话为所述会话队列中所述第一规则会话的下一规则会话,所述规则执行处理为根据目标事实对象判断是否满足目标规则的处理。
8.根据权利要求7所述的装置,其特征在于,所述规则执行模块,包括:
会话移位子模块,用于在将所述第一规则会话注销后,将所述会话队列中的每个规则会话均向所述会话队列首位的方向移动一位;
会话添加子模块,用于将新创建的规则会话加入所述会话队列,置于所述会话队列的末尾位;
规则执行子模块,用于将当前位于所述会话队列首位的所述第二规则会话作为所述当前会话,以针对所述第一规则执行请求进行规则执行处理。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
权利要求9中所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
CN201711386592.5A 2017-12-20 2017-12-20 规则执行请求处理方法、装置、存储介质和电子设备 Active CN108256647B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711386592.5A CN108256647B (zh) 2017-12-20 2017-12-20 规则执行请求处理方法、装置、存储介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711386592.5A CN108256647B (zh) 2017-12-20 2017-12-20 规则执行请求处理方法、装置、存储介质和电子设备

Publications (2)

Publication Number Publication Date
CN108256647A true CN108256647A (zh) 2018-07-06
CN108256647B CN108256647B (zh) 2020-09-11

Family

ID=62722568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711386592.5A Active CN108256647B (zh) 2017-12-20 2017-12-20 规则执行请求处理方法、装置、存储介质和电子设备

Country Status (1)

Country Link
CN (1) CN108256647B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110598155A (zh) * 2019-09-17 2019-12-20 北京锐安科技有限公司 一种Ajax请求调用方法、装置、计算机设备及存储介质
CN111381955A (zh) * 2018-12-28 2020-07-07 无锡智道安盈科技有限公司 一种优化决策引擎吞吐率及响应时间的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778402A (en) * 1995-06-07 1998-07-07 Microsoft Corporation Method and system for auto-formatting a document using an event-based rule engine to format a document as the user types
CN101017540A (zh) * 2007-01-24 2007-08-15 华为技术有限公司 智能问卷系统、问卷开发方法及装置
CN104063452A (zh) * 2014-06-24 2014-09-24 武汉烽火众智数字技术有限责任公司 一种共享队列的读写方法与装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778402A (en) * 1995-06-07 1998-07-07 Microsoft Corporation Method and system for auto-formatting a document using an event-based rule engine to format a document as the user types
CN101017540A (zh) * 2007-01-24 2007-08-15 华为技术有限公司 智能问卷系统、问卷开发方法及装置
CN104063452A (zh) * 2014-06-24 2014-09-24 武汉烽火众智数字技术有限责任公司 一种共享队列的读写方法与装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
刘伟: "Java规则引擎--Drools的介绍及应用", 《微计算机应用》 *
郭志龙: "订阅分发平台过滤性能的优化", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111381955A (zh) * 2018-12-28 2020-07-07 无锡智道安盈科技有限公司 一种优化决策引擎吞吐率及响应时间的方法
CN110598155A (zh) * 2019-09-17 2019-12-20 北京锐安科技有限公司 一种Ajax请求调用方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN108256647B (zh) 2020-09-11

Similar Documents

Publication Publication Date Title
WO2018127063A1 (zh) 应用数据处理的方法、装置及存储介质
CN107430492A (zh) 空闲时间软件垃圾收集
US7107217B2 (en) Voice interactive system and voice interactive method
CN104321744B (zh) 用于潜在动作预测的装置、方法和机器可读介质
CN107943534B (zh) 后台应用程序的关闭方法、装置、存储介质及电子设备
US11748389B1 (en) Delegated decision tree evaluation
CN107885545B (zh) 应用管理方法、装置、存储介质及电子设备
CN110018920A (zh) 一种页面展示异常的检测方法、装置及设备
CN109003069A (zh) 一种资源回退方法及装置
CN108345644A (zh) 一种数据处理的方法及装置
JPWO2008047835A1 (ja) 能動学習システム、方法およびプログラム
CN109922298A (zh) 会议室监控方法和装置
CN108256647A (zh) 规则执行请求处理方法、装置、存储介质和电子设备
CN111831795A (zh) 多轮对话处理方法、装置、电子设备及存储介质
CN110347399A (zh) 数据处理方法、实时计算系统以及信息系统
CN109791501A (zh) 用于减少下载要求的系统和方法
CN112214376A (zh) 存储空间提示方法及装置
CN112559575A (zh) 一种搜索处理方法、客服信息处理方法及装置
CN110888628A (zh) 生成控制工具的方法、装置、设备和存储介质
CN108966315A (zh) 无线网络获取方法、装置及电子设备
CN108287761A (zh) 内存回收方法及装置、终端设备及计算机可读存储介质
CN109582187A (zh) 文件发送方法、装置、计算机设备和存储介质
CN108763375A (zh) 一种媒体文件缓存方法、装置以及多媒体播放系统
CN108255486A (zh) 用于表单设计的视图转换方法、装置和电子设备
JP2015523666A (ja) タスク処理方法および装置

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