规则引擎系统、方法、设备及存储介质与流程

文档序号:17260892发布日期:2019-03-30 09:39阅读:169来源:国知局
规则引擎系统、方法、设备及存储介质与流程

本发明涉及规则引擎技术领域,具体地说,涉及一种基于动态语言的规则引擎系统、方法、设备及存储介质。



背景技术:

规则引擎是使用在大规模复杂业务场景下必备的业务框架技术,采用规则引擎可以实现将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务规则。例如,“如果visitcount>5,那么可以领取200积分”是一条规则,其中,我们将visitcount定义为规则实体,规则所对应的脚本语言为规则脚本,多条规则为一个规则集,抽象出规则集、规则实体、规则脚本等概念是一个引擎系统的关键。市面上较为流行的开源引擎drools,开发学习成本较高,性能较差,很难进行相关扩展,在规则的运行模式、ab测试等方面没有相关功能。

传统规则引擎设计中由于缺乏执行模式的抽象,一般只提供一种默认执行模式(全部执行模式),因此规则集的执行策略是固定且单一的。因此,当用户因自己的需求需要对执行策略进行扩展时,现有技术需要重新开发新的执行模式,并且重新启动规则引擎服务器,以便加载新的执行模式。当需要在多种执行模式灵活切换时,需要进行代码的变更并重启服务使其生效,重新加载需要使用的执行模式。

因此,在营销、风控等需要快速灵活变动的领域,如何实现多种执行模式灵活快速变更是一个亟待解决的问题。

需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。



技术实现要素:

针对现有技术中的问题,本发明的目的在于提供了一种规则引擎系统、方法、设备及存储介质,该规则引擎系统通过增加配置模块,实现了规则集执行策略的实时切换。

本发明的实施例还提供了一种规则引擎系统,包括接收模块、预设有规则集与执行策略映射表的配置模块、路由模块和至少一个执行模块,每个所述执行模块至少对应一执行策略;

所述接收模块用于接收规则集请求,所述规则集包括多条规则;

所述配置模块查找所述规则集对应的执行策略;

所述路由模块接收所述执行策略,根据所述执行策略选择所述执行模块,并把所要执行的规则发送至所述执行模块。

优选地,所述配置模块还具有配置规则集的执行策略的功能。

优选地,所述规则引擎系统还包括用户界面模块,所述用户界面模块推送规则集的执行策略配置的交互界面至用户;

所述用户界面模块获取用户对规则集的执行策略的选择,建立规则集与执行策略映射表。

优选地,所述配置模块还用于判断所述执行策略是否属于内置执行策略;

如果否,则加载自定义的执行策略。

优选地,所述内置执行策略包括命中退出模式、全部执行模式、记录模式中的一种或多种;

所述命中退出模式为按照优先级执行规则,命中任何一条规则后不执行后续规则;

所述全部执行模式为按照优先级执行全部规则;

所述记录模式为按照优先级执行全部规则,返回默认返回值,并记录每条规则的执行结果。

优选地,所述执行模块至少包括执行所述内置执行策略的一种或多种。

优选地,所述执行模块至少包括:

命中退出模式执行模块,按照优先级执行规则,判断是否命中规则,如果是,则所述执行模块记录命中规则和返回用户执行所述命中规则的返回值,不执行后续所述执行;

全部执行策略执行模块,按照优先级执行规则,记录所述执行模块记录各条命中规则和返回用户各条所述命中规则的返回值;

记录模式执行模块,按照优先级执行规则,记录所述执行模块记录各条命中规则和返回用户默认的返回值。

优选地,所述执行模块还包括规则测试模块,所述规则测试模块用于分配不同所述规则版本的流量。

优选地,在所述执行模块执行每条所述规则前,所述规则测试模块判断所述规则是否存在灰度版本;

如果是,则进入流量控制开关,所述流量控制开关从所述配置模块获取不同版本规则的流量配置并产生一随机数,所述执行模块判断所述随机数是否小于配置阈值,根据判断结果执行不同版本规则。

优选地,所述执行模块在所述命中规则的返回值中添加相应灰度结果标识。

本发明的实施例还提供了一种规则引擎方法,包括以下步骤:

接收规则集请求,所述规则集包括多条规则;

查找所述规则集对应的执行策略;

根据执行模块与执行策略的对应关系,选择所述执行策略对应的执行模块;

执行模块执行接收到的规则。

优选地,所述执行策略包括内置执行策略和自定义执行策略。

优选地,所述内置执行策略包括命中退出模式、全部执行模式、记录模式中的一种或多种。

所述命中退出模式为按照优先级执行规则,命中任何一条规则后不执行后续规则;

所述全部执行模式为按照优先级执行全部规则;

所述记录模式为按照优先级执行全部规则,返回默认返回值。

优选地,所述规则引擎方法还包括测试步骤,所述测试步骤包括如下步骤:

在执行每条所述规则前,判断所述规则是否存在灰度版本;

如果是,则进入流量控制开关,所述流量控制开关获取a/b版本规则的流量大小配置并产生一随机数,判断所述随机数是否小于配置阈值;

如果所述随机数是否小于配置阈值,则执行a版本规则,

如果否,执行b版本规则。

本发明的实施例还提供了一种规则引擎设备,包括:

处理器;

存储器,其中存储有所述处理器的可执行指令;

其中,所述处理器配置为经由执行所述可执行指令来执行所述规则引擎方法的步骤。

本发明的实施例还提供了一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被执行时实现所述规则引擎方法的步骤。

本发明的规则引擎系统优点:

1.通过变更配置模块设置,实时切换或定制规则集的执行策略;

2.提供可视化规则集执行策略配置的交互界面,方便系统用户;

3.配置模块可加载自定义的执行策略,系统兼具易用性、高性能、高扩展性等特点。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例的规则引擎系统的架构示意图;

图2为本发明一实施例的规则引擎方法的流程图;

图3为本发明一实施例的规则引擎方法的测试的流程图;

图4为本发明一实施例的规则引擎设备的结构示意图;

图5为本发明一实施例的计算机可读存储介质的结构示意图。

具体实施方式

现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。

此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。

图1为本发明一实施例的规则引擎系统的架构示意图,该规则引擎系统包括接收模块11、配置模块12、路由模块13和至少一个执行模块14,每个执行模块14至少对应一执行策略,配置模块12预设有规则集与执行策略的映射表。

图2为本发明一实施例的规则引擎方法的流程图,该方法具体包以下步骤:

s100、接收模块11用于接收规则集请求,这里的规则集是一组多条规则的集合,一般对应某一个固定的业务场景。

s200、配置模块12查找规则集对应的执行策略;在本发明的实施例中,配置模块12还具有配置规则集的执行策略的功能,且配置可以实时自动生效。

为了使用者更方便使用本发明的规则引擎系统,实施例中该系统还包括用户界面模块,用户界面模块推送规则集的执行策略配置的交互界面至用户;用户界面模块获取用户对规则集的执行策略的选择,建立规则集与执行策略映射表。s200步骤的规则集执行策略的配置过程可以看成是规则集中多个规则逻辑的生成过程。

本发明的一实施例中,规则引擎系统内置有执行策略,内置执行策略包括命中退出模式、全部执行模式、记录模式,也可包括其中的或多种。

命中退出模式为按照优先级执行规则,命中任何一条规则后不执行后续规则;

全部执行模式为按照优先级执行全部规则;

记录模式为按照优先级执行全部规则,返回默认返回值,并记录每条规则的执行结果。

本发明的规则引擎系统还提供动态扩展执行策略的能力,可通过配置脚本扩展一种新的执行策略。即当使用者所需的执行策略不属于上述内置执行策略的任一模式时,配置模块12可以加载自定义的执行策略,以满足使用者的需要。

s300、路由模块13接收配置模块12所配置的执行策略,根据执行策略选择执行模块14,上述已实施例中,由于内置执行策略包括命中退出模式、全部执行模式、记录模式,相应地,执行模块也包括执行内置执行策略的命中退出模式执行模块、命中退出模式执行模块和记录模式执行模块。但执行模块并不限于此处列举的。

此处,命中退出模式执行模块,按照优先级执行规则,判断是否命中规则,如果是,则所述执行模块记录命中规则和返回用户执行所述命中规则的返回值,不执行后续所述执行。

全部执行策略执行模块,按照优先级执行规则,记录所述执行模块记录各条命中规则和返回用户各条所述命中规则的返回值。

记录模式执行模块,按照优先级执行规则,记录所述执行模块记录各条命中规则和返回用户默认的返回值。记录模式只记录命中规则,忽略执行结果,此模式适用于业务场景第一次使用规则引擎,需要观察效果,无需具体命中规则。

路由模块13选择执行模块14后,s400步骤中执行模块14执行路由模块13发送的所要执行的规则。

本发明的规则引擎系统增加配置模块14,具有易用性、高性能、高扩展性等特点,通过本系统,用户无需经过开发人员研发即可灵活的、可视化的配置或定制规则集的不同执行策略,更有利于响应快速变化的实际业务需要。

以下面叙述场景为例,一个业务为“判断登录用户是否为注册用户本人”

此登录场景的业务规则集中可以有:

规则一“如果1分钟内登录次数>10次,那么弹出图形验证码”

规则二“登录地点notmatch注册地,那么弹出图形验证码”

如果选择命中执行模式,本发明的规则引擎系统命中执行规则一“如果1分钟内登录次数>10次,那么弹出图形验证码”后,如果结果显示1分钟内登录次数>10次的用户这条规则足以判断登录用户是否为注册用户本人,则表示命中执行模式的执行策略足以满足上述登录场景的业务需求,不需改变上述规则集的执行策略。

如果上述执行结果显示不足以判断登录用户是否为注册用户本人,则可将上述规则集的执行策略变更为可以清晰反应用户行为的全部风险全部执行模式。通过本发明中的配置模块,可实现上述的执行策略灵活实时变更。

本发明的实施例中,本系统的执行模块14还包括规则测试模块,规则测试模块用于分配不同规则版本的流量。

相应地,本发明一实施例的规则引擎方法还包括测试步骤,其流程图见图3,具体地包括如下步骤:

在执行模块14执行每条规则前,执行s410步骤:规则测试模块判断规则是否存在灰度版本;灰度版本是指同一规则的不同版本,提供能够平滑迭代测试线上规则的一种方式。在其上可以进行a/b测试,即让一部分流量继续执行原有规则,一部分流量执行灰度规则。在灰度期间可以保证整体系统的稳定,并对迭代的规则发现、评估、调整问题。

如果存在灰度版本,则s420进入流量控制开关,否则执行模块14直接执行所述规则。

接着执行s430步骤:流量控制开关从配置模块获取不同版本规则的流量配置并产生一随机数;

然后执行s440步骤:执行模块14判断随机数是否小于配置阈值,根据判断结果执行不同版本规则。

此处的流量控制开关起到按照设定的比例分流执行不同规则版本的作用。比如,实际中存在两个版本规则,a版本规则和b版本规则,当设置a版本规则承载30%的流量时,流量控制开关随机产生一个区间是0-100的数字,再跟30比较,小于30则执行a版本规则;否则,则执行b版本规则,此处30即为配置阈值。配置阈值可根据不同的业务场景设定。灰度版本也不限于两种,可以是多种。

还是以上述登录场景的业务为例,如此时的规则集包括:

规则一“如果1分钟内登录次数>10次,那么弹出图形验证码”

同时还包括规则一的灰度版本规则三和规则四:

规则三“如果1分钟内登录次数>5次,那么弹出图形验证码”

规则四“如果1分钟内登录次数>2次,那么弹出图形验证码”

通过本规则引擎系统的规则测试模块,如流量配置为各版本规则执行33.3%的流量,比较三个版本规则的执行结果,如果结果显示执行规则一仍存在不是注册用户本人登录的情况,而执行规则四后接到用户反馈“弹出图形验证码”操作过于繁琐,则规则三可看成是此登录场景的业务的最优规则实体,在后续的业务中如条件没有变化,可直接采用规则三的版本。

下面参照图4来描述根据本发明的这种实施方式的电子设备600。图4显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图4所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。

其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元610可以执行如图2中所示的步骤。

存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(rom)6203。

存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。

电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储平台等。

本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行实现分拣规则引擎系统的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。

参考图5所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。

综上所述,本发明提供了一种规则引擎系统、方法、设备及存储介质,该系统包括接收模块、预设有规则集与执行策略映射表的配置模块、路由模块和至少一个执行模块,每个所述执行模块至少对应一执行策略;所述接收模块用于接收规则集请求,所述规则集包括多个规则;所述配置模块查找所述规则集对应的执行策略;所述路由模块接收所述执行策略,根据所述执行策略选择所述执行模块,并把所要执行的规则发送至所述执行模块。本发明的规则引擎系统增加配置模块,具有易用性、高性能、高扩展性等特点,通过本系统,用户无需经过开发人员研发即可灵活的、可视化的配置或定制规则集的不同执行策略,更有利于响应快速变化的实际业务需要。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1