CN109542935A - 一种规则引擎的执行方法、存储介质和服务器 - Google Patents
一种规则引擎的执行方法、存储介质和服务器 Download PDFInfo
- Publication number
- CN109542935A CN109542935A CN201811181899.6A CN201811181899A CN109542935A CN 109542935 A CN109542935 A CN 109542935A CN 201811181899 A CN201811181899 A CN 201811181899A CN 109542935 A CN109542935 A CN 109542935A
- Authority
- CN
- China
- Prior art keywords
- service logic
- event
- engine
- rule base
- logic
- 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 33
- 238000012544 monitoring process Methods 0.000 claims abstract description 25
- 230000001960 triggered effect Effects 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 19
- 230000006870 function Effects 0.000 claims description 14
- 238000011161 development Methods 0.000 abstract description 10
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000012423 maintenance Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种规则引擎的执行方法、存储介质和服务器,包括:监控业务逻辑的调用接口;若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点;用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作;基于所述第一事件触发点,在第一引擎规则库中查询所述业务逻辑是否存在对应的事件规则;根据所述在第一引擎规则库中的查询结果执行所述业务逻辑;若所述业务逻辑执行完毕,触发所述业务逻辑的第二事件触发点;基于所述第二事件触发点,在第二引擎规则库中查找所述业务逻辑是否存在对应的事件规则;根据所述在第二引擎规则库中的查询结果返回所述业务逻辑的执行结果。本发明将业务逻辑与引擎的事件规则分离,可降低引擎重构风险,提高开发效率。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种规则引擎的执行方法、存储介质和服务器。
背景技术
复杂企业级项目的开发和维护面临着软件必须“随需而变”的问题。由于随外部条件和需求经常变动的商业决策和业务逻辑被固化在代码中,这使得软件的开发和维护变得异常困难,耗费大量的时间和成本,因此迫切需要分离企业决策者的决策逻辑和应用开发者的技术决策,将这些企业决策者的决策逻辑放在中心数据库或者其他的地方,让他们能在运行时可以动态地被管理和被修改,从而提高软件系统的柔性和适应性。在这样的动态环境中,规则引擎应运而生,规则引擎能够增加软件的可维护性,为软件提供可供用户直接修改业务逻辑的功能,使得软件项目不会因为维护成本太高而难以运行。
过去在规则引擎的使用上,很多时候都是在代码中显式的调用规则引擎,并执行规则,每个点需要调用什么规则都是写死在代码中的,这样的弊端在于:调用规则引擎的逻辑比较分散,重构风险大,从而导致开发效率不高。
发明内容
本发明实施例提供了一种规则引擎的执行方法、存储介质和服务器,以解决现有技术中,调用规则引擎的逻辑比较分散,重构风险大,从而导致开发效率不高的问题。
本发明实施例的第一方面提供了一种规则引擎的执行方法,包括:
监控业务逻辑的调用接口;
若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,所述第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作;
基于所述第一事件触发点,在第一引擎规则库中查询所述业务逻辑是否存在对应的事件规则;
根据所述在第一引擎规则库中的查询结果执行所述业务逻辑;
若所述业务逻辑执行完毕,触发所述业务逻辑的第二事件触发点,所述第二事件触发点用于在所述业务逻辑执行完毕之后触发在第二引擎规则库中事件规则的查询操作;
基于所述第二事件触发点,在第二引擎规则库中查找所述业务逻辑是否存在对应的事件规则;
根据所述在第二引擎规则库中的查询结果返回所述业务逻辑的执行结果。
本发明实施例的第二方面提供了一种服务器,包括存储器以及处理器,所述存储器存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下步骤:
监控业务逻辑的调用接口;
若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,所述第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作;
基于所述第一事件触发点,在第一引擎规则库中查询所述业务逻辑是否存在对应的事件规则;
根据所述在第一引擎规则库中的查询结果执行所述业务逻辑;
若所述业务逻辑执行完毕,触发所述业务逻辑的第二事件触发点,所述第二事件触发点用于在所述业务逻辑执行完毕之后触发在第二引擎规则库中事件规则的查询操作;
基于所述第二事件触发点,在第二引擎规则库中查找所述业务逻辑是否存在对应的事件规则;
根据所述在第二引擎规则库中的查询结果返回所述业务逻辑的执行结果。
本发明实施例的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:
监控业务逻辑的调用接口;
若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,所述第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作;
基于所述第一事件触发点,在第一引擎规则库中查询所述业务逻辑是否存在对应的事件规则;
根据所述在第一引擎规则库中的查询结果执行所述业务逻辑;
若所述业务逻辑执行完毕,触发所述业务逻辑的第二事件触发点,所述第二事件触发点用于在所述业务逻辑执行完毕之后触发在第二引擎规则库中事件规则的查询操作;
基于所述第二事件触发点,在第二引擎规则库中查找所述业务逻辑是否存在对应的事件规则;
根据所述在第二引擎规则库中的查询结果返回所述业务逻辑的执行结果。
本发明实施例中,通过设置事件触发点,在事件触发点被触发时才查询并执行业务逻辑对应的事件规则,将引擎的事件规则与业务逻辑分离,在事件规则需要修改时,开发人员无需修改所有的业务逻辑代码,只需直接修改事件规则,降低了开发难度与引擎重构的风险,同时,本方案设置两个事件触发点,第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作,第二事件触发点用于在所述业务逻辑执行完毕之后触发在第二引擎规则库中的事件规则查询,在所述业务逻辑执行前后分别进行事件规则的查找与执行,以保证事件规则执行的准确性与有效性,从而提高开发效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的规则引擎的执行方法的实现流程图;
图2是本发明实施例提供的规则引擎的执行方法S102的具体实现流程图;
图3是本发明实施例提供的规则引擎的执行方法S104的具体实现流程图;
图4是本发明实施例提供的规则引擎的执行方法步骤B1的具体实现流程图;
图5是本发明实施例提供的规则引擎的执行装置的结构框图;
图6是本发明实施例提供的服务器的示意图。
具体实施方式
为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1示出了本发明实施例提供的规则引擎的执行方法的实现流程,该方法流程包括步骤S101至S107。各步骤的具体实现原理如下:
S101:监控业务逻辑的调用接口。
具体地,不同的项目有不同的功能,不同的功能需要不同的实现,所述业务逻辑是指实现核心功能的代码。在本发明实施例中,业务逻辑设有调用接口,通过监控所述调用接口来确定所述业务逻辑是否被调用。
可选地,由于实现不同功能的代码不相同,即实现不同功能的业务逻辑也不相同,在本发明实施例中,所述业务逻辑具有业务标识,所述业务标识用于唯一标识业务逻辑。进一步地,若有多个业务逻辑,则分别为每一个业务逻辑分配一个调用接口,所述业务逻辑的业务标识与所述调用接口的接口编号对应。
S102:若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,所述第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作。
具体地,设置事件触发点用于触发事件规则的查询。所述事件触发点可包括但不限于下述的一种或多种:添加规则、更新规则、查询规则、添加规则组、添加规则到规则组、从规则组中删除规则、根据数据类型获取操作符列表、获取所有的数据类型及每个数据类型支持的操作符列表、根据规则组ID查询该规则组内包含的规则列表、查询所有的规则组、校验指定规则组下规则、判断输入数据是否满足指定规则、对输入的规则依次进行校验和获取指定规则数据项列表。
在本发明实施例中,若监测到所述调用接口被调用,触发所述事件触发点时,则触发了规则引擎的调用。所述事件触发点包括第一事件触发点和第二事件触发点。所述第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作。若检测到所述业务逻辑的所述调用接口被调用时,触发第一事件触发点,也即在所述业务逻辑执行之前触发查询所述第一引擎规则库中事件规则的查询操作。
在本发明实施例中,将需在所述业务逻辑执行之前执行处理的事件规则存放于第一引擎规则库中,业务逻辑与引擎的事件规则分离,并设置第一事件触发点触发查询所述业务逻辑对应的事件规则,在监测到所述业务逻辑的调用接口被调用时触发所述第一事件触发点。
示例性地,本发明实施例中,通过规则引擎服务器接收规则引擎客户端发送的针对所述业务逻辑的事件规则的调用请求,调用请求可以是通过规则引擎客户端的相应接口发送的请求,其中,规则引擎客户端的个数可以是一个,也可以是多个,例如,大于或等于2个。在一些实施例中,客户端通过规则引擎提供的客户端Jar包调用应用程序接口(Application Programming Interface,API),通过远程过程调用(Remote ProcedureCall,RPC)协议调用规则引擎服务器,例如,可以基于HessianRPC调用通信技术进行调用,也可以根据应用需要采用其他RPC调用技术进行调用。
作为本发明的一个实施例,如图2所示,上述S102具体包括:
A1:获取所述业务逻辑的业务标识。所述业务标识用于标识所述业务逻辑,不同的业务标识对应的业务逻辑,实现的功能也不一样。
A2:判断预设的事件触发集合中是否存在所述业务逻辑的业务标识。
A3:若所述事件触发集合中存在所述业务标识,则触发所述业务标识对应的第一事件触发点。
具体地,不是所有的业务逻辑都有对应的第一事件触发点,因此,不是所有的业务逻辑被调用时都会触发所述第一事件触发点。所述预设的事件触发集合存放的是与所述第一事件触发点对应的业务逻辑的业务标识。在本发明实施例中,若检测到被调用接口的业务逻辑的业务标识在所述预设的事件触发集合中,则触发所述业务标识对应的第一事件触发点,从而对触发所述第一事件触发点的业务逻辑进行筛选。
S103:基于所述第一事件触发点,在第一引擎规则库中查询所述业务逻辑是否存在对应的事件规则。
具体地,所述第一引擎规则库中存放的事件规则在所述业务逻辑执行之前执行。根据所述业务逻辑的业务标识,在所述第一引擎规则库中查找所述业务标识对应的事件规则。
S104:根据所述在第一引擎规则库中的查询结果执行所述业务逻辑。
其中,所述查询结果包括所述第一引擎规则库中存在或者不存在所述业务逻辑对应的事件规则。
作为本发明的一个实施例,图3示出了本发明实施例提供的规则引擎的执行方法S104的具体实现流程,详述如下:
B1:若在所述第一引擎规则库中查找到所述业务逻辑对应的事件规则,则执行所述事件规则定义的处理逻辑。
B2:在执行完所述事件规则定义的处理逻辑后,执行所述业务逻辑。
B3:若在所述第一引擎规则库中未查询到所述业务逻辑对应的事件规则,则直接执行所述业务逻辑。
在本发明实施例中,若在所述第一引擎规则库中查找到所述业务逻辑对应的事件规则,则先执行所述事件规则定义的处理逻辑,再执行所述业务逻辑,若在所述第一引擎规则库中未查找到所述业务逻辑对应的事件规则,则直接执行所述业务逻辑。
作为本发明的一个实施例,图4示出了本发明实施例提供的规则引擎的执行方法步骤B1的具体实现流程,详述如下:
B11:若所述第一引擎规则库中所述业务逻辑对应的事件规则有多个,获取所述业务逻辑对应的事件规则的优先指数。所述优先指数用于标识所述业务逻辑对应的事件规则的处理排序。所述优先指数可由用户预先定义,也可以根据所述多个事件规则的历史执行记录的统计信息确定。
B12:按所述优先指数从高到低依次执行所述业务逻辑对应的事件规则定义的处理逻辑。
在本发明实施例中,当所述第一引擎规则库中存在多个与所述业务逻辑对应的事件规则时,根据所述事件规则的优先指数的排序结果依次处理所述多个事件规则,从而避免出现执行冲突。
可选地,若所述第一引擎规则库中所述业务逻辑对应的事件规则有多个,获取所述业务逻辑对应的多个事件规则之间的依赖关系,所述依赖关系是指一事件规则的执行触发依赖于另一事件规则的执行,所述依赖关系包括所述事件规则依赖的事件规则的数量以及被依赖的事件规则的数量,可选地,所述事件规则被依赖的事件规则的数量越大,所述事件规则的优先指数越高。
可选地,根据如下公式计算事件规则的优先指数PriDegi:
其中,ωi表示所述事件规则i对应的预设权值,L为整数,表示所述事件规则i被依赖的事件规则的数量,L≥0,rely_λl表示所述事件规则i被依赖的事件规则的数量为l时对应的依赖权值,0≤l≤L,N为所述业务逻辑对应的事件规则数,N为正整数,Func为任意一个实现从[0,+∞)到[0,1)映射的单调递增函数。
具体地,事件规则对应的预设权值可根据事件规则的类型定义,在本实施例中,事件规则的类型包括添加、修改以及删除,其中,添加的优先级高于修改的优先级,修改的优先级高于删除的优先级。因此,定义添加的预设权值高于修改的预设权值,而修改的预设权值高于删除的预设权值。
S105:若所述业务逻辑执行完毕,触发所述业务逻辑的第二事件触发点,所述第二事件触发点用于在所述业务逻辑执行完毕之后触发在第二引擎规则库中事件规则的查询操作。
在本发明实施例中,所述第二事件触发点用于在所述业务逻辑执行之后触发在第二引擎规则库中事件规则的查询操作。若检测到所述业务逻辑执行完毕,触发第二事件触发点,从而触发查询所述第二引擎规则库中事件规则的查询操作。
S106:基于所述第二事件触发点,在第二引擎规则库中查找所述业务逻辑是否存在对应的事件规则。
具体地,所述第二引擎规则库中存放的事件规则在所述业务逻辑执行之后执行。根据所述业务逻辑的业务标识,在所述第二引擎规则库中查找所述业务标识对应的事件规则。
S107:根据所述在第二引擎规则库中的查询结果返回所述业务逻辑的执行结果。
具体地,若在所述第二引擎规则库中查找到所述业务逻辑对应的事件规则,则在执行完所述业务逻辑之后,再执行所述事件规则定义的处理逻辑,返回所述处理逻辑的执行结果。若在所述第二引擎规则库中未查找到所述业务逻辑对应的事件规则,则直接返回所述业务逻辑的执行结果。
示例性地,条件为门店编号(640100001),结论为门店公司段(作业)(092801)和门店成本中心(作业)(1201)。假如有一条订单的门店编号为640100001,则规则引擎自动的把门店公司段(作业)和门店成本中心(作业)这两个字段分别更新为092801和1201。这样就把业务逻辑从代码中分离,让规则引擎自动匹配。
在本发明实施例中,通过监控业务逻辑的调用接口,若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,所述第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作,基于所述第一事件触发点,在第一引擎规则库中查询所述业务逻辑是否存在对应的事件规则,根据所述在第一引擎规则库中的查询结果执行所述业务逻辑,若所述业务逻辑执行完毕,触发所述业务逻辑的第二事件触发点,所述第二事件触发点用于在所述业务逻辑执行完毕之后触发在第二引擎规则库中事件规则的查询操作,基于所述第二事件触发点,在第二引擎规则库中查找所述业务逻辑是否存在对应的事件规则,根据所述在第二引擎规则库中的查询结果返回所述业务逻辑的执行结果,本方案通过设置事件触发点,在事件触发点被触发时才查询并执行业务逻辑对应的事件规则,将引擎的事件规则与业务逻辑分离,在事件规则需要修改时,开发人员无需修改所有的业务逻辑代码,只需直接修改事件规则,降低了开发难度与引擎重构的风险,同时,设置两个事件触发点,在所述业务逻辑执行前后分别进行事件规则的查找与执行,以保证事件规则执行的准确性与有效性,从而提高开发效率。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
对应于上文实施例所述的规则引擎的执行方法,图5示出了本申请实施例提供的规则引擎的执行装置的结构框图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图5,该规则引擎的执行装置包括:接口监控单元51,第一事件触发点单元52,第一规则查询单元53,第一执行单元54,第二事件触发点单元55,第二规则查询单元56,第二执行单元57,其中:
接口监控单元51,用于监控业务逻辑的调用接口;
第一事件触发点单元52,用于若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,所述第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作;
第一规则查询单元53,用于基于所述第一事件触发点,在第一引擎规则库中查询所述业务逻辑是否存在对应的事件规则;
第一执行单元54,用于根据所述在第一引擎规则库中的查询结果执行所述业务逻辑;
第二事件触发点单元55,用于若所述业务逻辑执行完毕,触发所述业务逻辑的第二事件触发点,所述第二事件触发点用于在所述业务逻辑执行完毕之后触发在第二引擎规则库中事件规则的查询操作;
第二规则查询单元56,用于基于所述第二事件触发点,在第二引擎规则库中查找所述业务逻辑是否存在对应的事件规则;
第二执行单元57,用于根据所述在第二引擎规则库中的查询结果返回所述业务逻辑的执行结果。
可选地,所述包第一事件触发点单元52括:
业务标识获取模块,用于获取所述业务逻辑的业务标识;
第一判断模块,用于判断预设的事件触发集合中是否存在所述业务逻辑的业务标识;
第一触发点模块,用于若所述事件触发集合中存在所述业务标识,则触发所述业务标识对应的第一事件触发点。
可选地,所述第一执行单元54包括:
第一规则执行模块,用于若在所述第一引擎规则库中查找到所述业务逻辑对应的事件规则,则执行所述事件规则定义的处理逻辑;
第一业务执行模块,用于在执行完所述事件规则定义的处理逻辑后,执行所述业务逻辑;若在所述第一引擎规则库中未查询到所述业务逻辑对应的事件规则,则直接执行所述业务逻辑。
可选地,所述第一规则执行模块包括:
优先指数确定子模块,用于若所述第一引擎规则库中所述业务逻辑对应的事件规则有多个,获取所述业务逻辑对应的事件规则的优先指数;
第一规则执行子模块,用于按所述优先指数从高到低依次执行所述业务逻辑对应的事件规则定义的处理逻辑。
可选地,所述优先指数确定子模块包括:
依赖关系确定子模块,用于获取所述业务逻辑对应的多个事件规则之间的依赖关系,所述依赖关系是指一事件规则的执行触发依赖于另一事件规则的执行;
优先指数确定子模块,用于根据如下公式计算事件规则的优先指数PriDegi:
其中,ωi表示所述事件规则i对应的预设权值,L为整数,表示所述事件规则i被依赖的事件规则的数量,L≥0,rely_λl表示所述事件规则i被依赖的事件规则的数量为l时对应的依赖权值,0≤l≤L,N为所述业务逻辑对应的事件规则数,N为正整数,Func为任意一个实现从[0,+∞)到[0,1)映射的单调递增函数。
本发明实施例中,通过监控业务逻辑的调用接口,若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,所述第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作,基于所述第一事件触发点,在第一引擎规则库中查询所述业务逻辑是否存在对应的事件规则,根据所述在第一引擎规则库中的查询结果执行所述业务逻辑,若所述业务逻辑执行完毕,触发所述业务逻辑的第二事件触发点,所述第二事件触发点用于在所述业务逻辑执行完毕之后触发在第二引擎规则库中事件规则的查询操作,基于所述第二事件触发点,在第二引擎规则库中查找所述业务逻辑是否存在对应的事件规则,根据所述在第二引擎规则库中的查询结果返回所述业务逻辑的执行结果,本方案通过设置事件触发点,在事件触发点被触发时才查询并执行业务逻辑对应的事件规则,将引擎的事件规则与业务逻辑分离,在事件规则需要修改时,开发人员无需修改所有的业务逻辑代码,只需直接修改事件规则,降低了开发难度与引擎重构的风险,同时,设置两个事件触发点,在所述业务逻辑执行前后分别进行事件规则的查找与执行,以保证事件规则执行的准确性与有效性,从而提高开发效率。
图6是本发明一实施例提供的服务器的示意图。如图6所示,该实施例的服务器6包括:处理器60、存储器61以及存储在所述存储器61中并可在所述处理器60上运行的计算机程序62,例如规则引擎的执行程序。所述处理器60执行所述计算机程序62时实现上述各个规则引擎的执行方法实施例中的步骤,例如图1所示的步骤101至107。或者,所述处理器60执行所述计算机程序62时实现上述各装置实施例中各模块/单元的功能,例如图5所示单元51至57的功能。
示例性的,所述计算机程序62可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器61中,并由所述处理器60执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序62在所述服务器6中的执行过程。
所述服务器6可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述服务器可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是服务器6的示例,并不构成对服务器6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述服务器还可以包括输入输出设备、网络接入设备、总线等。
所述处理器60可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器61可以是所述服务器6的内部存储单元,例如服务器6的硬盘或内存。所述存储器61也可以是所述服务器6的外部存储设备,例如所述服务器6上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器61还可以既包括所述服务器6的内部存储单元也包括外部存储设备。所述存储器61用于存储所述计算机程序以及所述服务器所需的其他程序和数据。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种规则引擎的执行方法,其特征在于,包括:
监控业务逻辑的调用接口;
若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,所述第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作;
基于所述第一事件触发点,在第一引擎规则库中查询所述业务逻辑是否存在对应的事件规则;
根据所述在第一引擎规则库中的查询结果执行所述业务逻辑;
若所述业务逻辑执行完毕,触发所述业务逻辑的第二事件触发点,所述第二事件触发点用于在所述业务逻辑执行完毕之后触发在第二引擎规则库中事件规则的查询操作;
基于所述第二事件触发点,在第二引擎规则库中查找所述业务逻辑是否存在对应的事件规则;
根据所述在第二引擎规则库中的查询结果返回所述业务逻辑的执行结果。
2.根据权利要求1所述的执行方法,其特征在于,所述若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,包括:
获取所述业务逻辑的业务标识;
判断预设的事件触发集合中是否存在所述业务逻辑的业务标识;
若所述事件触发集合中存在所述业务标识,则触发所述业务标识对应的第一事件触发点。
3.根据权利要求1所述的执行方法,其特征在于,所述根据所述在第一引擎规则库中的查询结果执行所述业务逻辑,包括:
若在所述第一引擎规则库中查找到所述业务逻辑对应的事件规则,则执行所述事件规则定义的处理逻辑;
在执行完所述事件规则定义的处理逻辑后,执行所述业务逻辑;
若在所述第一引擎规则库中未查询到所述业务逻辑对应的事件规则,则直接执行所述业务逻辑。
4.根据权利要求3所述的执行方法,其特征在于,所述若在所述第一引擎规则库中查找到所述业务逻辑对应的事件规则,则执行所述事件规则定义的处理逻辑,包括:
若所述第一引擎规则库中所述业务逻辑对应的事件规则有多个,获取所述业务逻辑对应的事件规则的优先指数;
按所述优先指数从高到低依次执行所述业务逻辑对应的事件规则定义的处理逻辑。
5.根据权利要求4所述的执行方法,其特征在于,所述若所述第一引擎规则库中所述业务逻辑对应的事件规则有多个,获取所述业务逻辑对应的事件规则的优先指数,包括:
获取所述业务逻辑对应的多个事件规则之间的依赖关系,所述依赖关系是指一事件规则的执行触发依赖于另一事件规则的执行;
根据如下公式计算事件规则的优先指数PriDegi:
其中,ωi表示所述事件规则i对应的预设权值,L为整数,表示所述事件规则i被依赖的事件规则的数量,L≥0,rely_λl表示所述事件规则i被依赖的事件规则的数量为l时对应的依赖权值,0≤l≤L,N为所述业务逻辑对应的事件规则数,N为正整数,Func为任意一个实现从[0,+∞)到[0,1)映射的单调递增函数。
6.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述规则引擎的执行方法的步骤。
7.一种服务器,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如下步骤:
监控业务逻辑的调用接口;
若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,所述第一事件触发点用于在所述业务逻辑执行之前触发在第一引擎规则库中事件规则的查询操作;
基于所述第一事件触发点,在第一引擎规则库中查询所述业务逻辑是否存在对应的事件规则;
根据所述在第一引擎规则库中的查询结果执行所述业务逻辑;
若所述业务逻辑执行完毕,触发所述业务逻辑的第二事件触发点,所述第二事件触发点用于在所述业务逻辑执行完毕之后触发在第二引擎规则库中事件规则的查询操作;
基于所述第二事件触发点,在第二引擎规则库中查找所述业务逻辑是否存在对应的事件规则;
根据所述在第二引擎规则库中的查询结果返回所述业务逻辑的执行结果。
8.根据权利要求7所述的服务器,其特征在于,所述若监测到所述调用接口被调用,触发所述业务逻辑的第一事件触发点,包括:
获取所述业务逻辑的业务标识;
判断预设的事件触发集合中是否存在所述业务逻辑的业务标识;
若所述事件触发集合中存在所述业务标识,则触发所述业务标识对应的第一事件触发点。
9.根据权利要求7所述的服务器,其特征在于,所述根据所述在第一引擎规则库中的查询结果执行所述业务逻辑,包括:
若在所述第一引擎规则库中查找到所述业务逻辑对应的事件规则,则执行所述事件规则定义的处理逻辑;
在执行完所述事件规则定义的处理逻辑后,执行所述业务逻辑;
若在所述第一引擎规则库中未查询到所述业务逻辑对应的事件规则,则直接执行所述业务逻辑。
10.根据权利要求9所述的服务器,其特征在于,所述若在所述第一引擎规则库中查找到所述业务逻辑对应的事件规则,则执行所述事件规则定义的处理逻辑,包括:
若所述第一引擎规则库中所述业务逻辑对应的事件规则有多个,获取所述业务逻辑对应的事件规则的优先指数;
按所述优先指数从高到低依次执行所述业务逻辑对应的事件规则定义的处理逻辑。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811181899.6A CN109542935B (zh) | 2018-10-11 | 2018-10-11 | 一种规则引擎的执行方法、存储介质和服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811181899.6A CN109542935B (zh) | 2018-10-11 | 2018-10-11 | 一种规则引擎的执行方法、存储介质和服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542935A true CN109542935A (zh) | 2019-03-29 |
CN109542935B CN109542935B (zh) | 2024-10-18 |
Family
ID=65843822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811181899.6A Active CN109542935B (zh) | 2018-10-11 | 2018-10-11 | 一种规则引擎的执行方法、存储介质和服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542935B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111028925A (zh) * | 2019-10-21 | 2020-04-17 | 望海康信(北京)科技股份公司 | 数据传输方法及系统 |
CN111143408A (zh) * | 2019-11-25 | 2020-05-12 | 泰康保险集团股份有限公司 | 一种基于业务规则的事件处理方法和装置 |
CN111443943A (zh) * | 2020-05-18 | 2020-07-24 | 江苏电力信息技术有限公司 | 一种基于规则引擎的属性动态配置方法 |
CN111475144A (zh) * | 2020-04-13 | 2020-07-31 | 深圳前海微众银行股份有限公司 | 风控决策方法、装置、设备及计算机可读存储介质 |
CN111767157A (zh) * | 2019-08-07 | 2020-10-13 | 北京京东尚科信息技术有限公司 | 基于服务网格的请求处理方法和装置 |
CN111966342A (zh) * | 2020-08-10 | 2020-11-20 | 上海中通吉网络技术有限公司 | 基于类自然语言的规则配置与解析方法、系统及设备 |
CN112328410A (zh) * | 2020-11-04 | 2021-02-05 | 网易(杭州)网络有限公司 | 远程过程调用的实现方法、装置、设备及存储介质 |
CN113965538A (zh) * | 2021-10-21 | 2022-01-21 | 青岛海信智慧生活科技股份有限公司 | 设备状态消息处理方法、装置及存储介质 |
CN114090597A (zh) * | 2021-11-08 | 2022-02-25 | 阿里巴巴(中国)有限公司 | 读写分离的方法、设备、存储介质及程序产品 |
CN118210611A (zh) * | 2024-03-29 | 2024-06-18 | 重庆赛力斯凤凰智创科技有限公司 | 逻辑事件执行方法、装置、电子设备及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1866283A (zh) * | 2005-12-13 | 2006-11-22 | 华为技术有限公司 | 实现规则系统触发的系统及方法 |
CN1967572A (zh) * | 2005-11-18 | 2007-05-23 | 中国科学院软件研究所 | 用于业务密集型领域的业务过程管理方法和系统 |
CN101777142A (zh) * | 2009-09-01 | 2010-07-14 | 厦门东南融通系统工程有限公司 | 一种将企事业规章制度转换为计算机可识别程序的方法 |
US7765291B1 (en) * | 2004-05-19 | 2010-07-27 | Ultimus, Inc. | Business process management/workflow automation software |
CN105404620A (zh) * | 2015-11-20 | 2016-03-16 | 华为技术有限公司 | 一种表单校验的方法和装置 |
CN105701160A (zh) * | 2015-12-31 | 2016-06-22 | 南威软件股份有限公司 | 一种监察规则引擎及其实现监察的方法 |
CN105893214A (zh) * | 2016-06-28 | 2016-08-24 | 国家电投集团河南电力有限公司技术信息中心 | 一种基于电力企业erp数据质量集中监控的方法及装置 |
CN106101090A (zh) * | 2016-06-07 | 2016-11-09 | 中国建设银行股份有限公司 | 用于规则引擎的操作方法以及规则引擎系统 |
CN107818509A (zh) * | 2017-11-24 | 2018-03-20 | 泰康保险集团股份有限公司 | 业务数据校验方法、装置、存储介质及电子设备 |
CN107943878A (zh) * | 2017-11-14 | 2018-04-20 | 北京思特奇信息技术股份有限公司 | 一种业务规则引擎实现方法和系统 |
-
2018
- 2018-10-11 CN CN201811181899.6A patent/CN109542935B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7765291B1 (en) * | 2004-05-19 | 2010-07-27 | Ultimus, Inc. | Business process management/workflow automation software |
CN1967572A (zh) * | 2005-11-18 | 2007-05-23 | 中国科学院软件研究所 | 用于业务密集型领域的业务过程管理方法和系统 |
CN1866283A (zh) * | 2005-12-13 | 2006-11-22 | 华为技术有限公司 | 实现规则系统触发的系统及方法 |
CN101777142A (zh) * | 2009-09-01 | 2010-07-14 | 厦门东南融通系统工程有限公司 | 一种将企事业规章制度转换为计算机可识别程序的方法 |
CN105404620A (zh) * | 2015-11-20 | 2016-03-16 | 华为技术有限公司 | 一种表单校验的方法和装置 |
CN105701160A (zh) * | 2015-12-31 | 2016-06-22 | 南威软件股份有限公司 | 一种监察规则引擎及其实现监察的方法 |
CN106101090A (zh) * | 2016-06-07 | 2016-11-09 | 中国建设银行股份有限公司 | 用于规则引擎的操作方法以及规则引擎系统 |
CN105893214A (zh) * | 2016-06-28 | 2016-08-24 | 国家电投集团河南电力有限公司技术信息中心 | 一种基于电力企业erp数据质量集中监控的方法及装置 |
CN107943878A (zh) * | 2017-11-14 | 2018-04-20 | 北京思特奇信息技术股份有限公司 | 一种业务规则引擎实现方法和系统 |
CN107818509A (zh) * | 2017-11-24 | 2018-03-20 | 泰康保险集团股份有限公司 | 业务数据校验方法、装置、存储介质及电子设备 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111767157B (zh) * | 2019-08-07 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 基于服务网格的请求处理方法和装置 |
CN111767157A (zh) * | 2019-08-07 | 2020-10-13 | 北京京东尚科信息技术有限公司 | 基于服务网格的请求处理方法和装置 |
CN111028925A (zh) * | 2019-10-21 | 2020-04-17 | 望海康信(北京)科技股份公司 | 数据传输方法及系统 |
CN111143408A (zh) * | 2019-11-25 | 2020-05-12 | 泰康保险集团股份有限公司 | 一种基于业务规则的事件处理方法和装置 |
CN111143408B (zh) * | 2019-11-25 | 2023-08-22 | 泰康保险集团股份有限公司 | 一种基于业务规则的事件处理方法和装置 |
CN111475144A (zh) * | 2020-04-13 | 2020-07-31 | 深圳前海微众银行股份有限公司 | 风控决策方法、装置、设备及计算机可读存储介质 |
CN111443943B (zh) * | 2020-05-18 | 2023-05-12 | 江苏电力信息技术有限公司 | 一种基于规则引擎的属性动态配置方法 |
CN111443943A (zh) * | 2020-05-18 | 2020-07-24 | 江苏电力信息技术有限公司 | 一种基于规则引擎的属性动态配置方法 |
CN111966342A (zh) * | 2020-08-10 | 2020-11-20 | 上海中通吉网络技术有限公司 | 基于类自然语言的规则配置与解析方法、系统及设备 |
CN112328410A (zh) * | 2020-11-04 | 2021-02-05 | 网易(杭州)网络有限公司 | 远程过程调用的实现方法、装置、设备及存储介质 |
CN112328410B (zh) * | 2020-11-04 | 2023-08-08 | 网易(杭州)网络有限公司 | 远程过程调用的实现方法、装置、设备及存储介质 |
CN113965538A (zh) * | 2021-10-21 | 2022-01-21 | 青岛海信智慧生活科技股份有限公司 | 设备状态消息处理方法、装置及存储介质 |
CN114090597A (zh) * | 2021-11-08 | 2022-02-25 | 阿里巴巴(中国)有限公司 | 读写分离的方法、设备、存储介质及程序产品 |
CN118210611A (zh) * | 2024-03-29 | 2024-06-18 | 重庆赛力斯凤凰智创科技有限公司 | 逻辑事件执行方法、装置、电子设备及存储介质 |
CN118210611B (zh) * | 2024-03-29 | 2024-10-01 | 重庆赛力斯凤凰智创科技有限公司 | 逻辑事件执行方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109542935B (zh) | 2024-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542935A (zh) | 一种规则引擎的执行方法、存储介质和服务器 | |
CN112766907A (zh) | 业务数据的处理方法、装置和服务器 | |
CN109903112A (zh) | 信息输出方法和装置 | |
CN109491857B (zh) | 一种基于规则引擎的数据监控方法、系统及终端设备 | |
CN110633977A (zh) | 支付异常处理方法、装置及终端设备 | |
CN109388654A (zh) | 一种查询数据表的方法和装置 | |
CN111881221A (zh) | 物流服务里客户画像的方法、装置和设备 | |
CN107577787B (zh) | 关联数据信息入库的方法及系统 | |
CN111325428A (zh) | 一种工单推送方法、装置及存储介质 | |
CN109669925A (zh) | 非结构化数据的管理方法及装置 | |
CN109542462A (zh) | 一种系统环境部署方法、存储介质和服务器 | |
CN109739433A (zh) | 数据处理的方法及终端设备 | |
CN109819286A (zh) | 多机型软件同步升级方法、装置及终端设备 | |
CN109062936A (zh) | 一种数据查询方法、计算机可读存储介质及终端设备 | |
CN108446989A (zh) | 手续费确定方法及终端设备 | |
CN108154024A (zh) | 一种数据检索方法、装置及电子设备 | |
US20230418842A1 (en) | Data processing independent of storage, format or schema | |
CN110321242A (zh) | 数据处理方法和装置 | |
CN110276566A (zh) | 信息输出方法和装置 | |
CN110175808A (zh) | 一种订单管理、查询方法、装置、设备及介质 | |
CN109377391A (zh) | 一种信息追踪方法、存储介质和服务器 | |
CN112131257A (zh) | 数据查询方法和装置 | |
CN112926907B (zh) | 一种仓库库存布局方法和装置 | |
CN114281549A (zh) | 数据的处理方法及装置 | |
CN113760863A (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 |