1.本技术涉及规则引擎技术领域,更具体地说,是涉及一种规则引擎在线生成方法、规则引擎系统及相关设备。
背景技术:2.在电商业务发展迅速的当今时代,电商平台通常涉及多种业务规则,且更新迭代速度比较快。在现有的规则引擎开发模式中,当需要开发新的业务规则时,需要依据新的业务规则需求,重新开发规则引擎配置文件,并依赖于大型的商用规则引擎组件,重建新的规则引擎,存在较多重复的工作,更新迭代周期越短,重复的工作内容越多,导致整体开发效率不高。
技术实现要素:3.有鉴于此,本技术提供了一种规则引擎在线生成方法、规则引擎系统及相关设备,以解决至少一个上面提出的技术问题。
4.为实现上述目的,本技术第一方面提供了一种规则引擎在线生成方法,包括:
5.通过网页形式获取用户输入的函数信息,所述函数信息包括规则函数的函数名和参数信息,所述参数信息包括输入参数的类型和值的范围;
6.通过网页形式获取用户输入的规则信息,所述规则信息包括至少一个由各输入参数组成的条件表达式、对应于每一条件表达式的优先级、以及对应于每一条件表达式的期望推导结果;
7.基于所述函数名、所述参数信息以及所述规则信息,生成规则引擎配置文件;
8.基于所述规则引擎配置文件和预设的规则引擎,生成候选规则引擎;
9.对所述候选规则引擎进行测试,并将通过测试的候选规则引擎确定为目标规则引擎,所述目标规则引擎用于对输入参数进行推导,得到输出结果。
10.优选地,对所述候选规则引擎进行测试的过程,包括:
11.通过网页形式获取用户输入的多组参数及每一组参数的期望的输出结果,各组参数的信息与所述参数信息相符;
12.将每一组参数输入至所述候选规则引擎,得到输出结果;
13.判断所述输出结果是否等同于所述组参数的期望的输出结果;
14.若是,确定所述候选规则引擎通过测试。
15.优选地,所述期望推导结果包括变量、常量和脚本。
16.优选地,所述函数信息还包括异常抛出规则,用于判断是否需要发起异常抛出。
17.优选地,所述目标规则引擎对输入参数进行推导,得到输出结果的过程,包括:
18.对输入参数进行校验,得到校验结果;
19.基于所述校验结果判断所述输入参数是否通过校验;
20.若是,将各优先级从高到低排序,得到优先级序列;
21.获取排在首位的优先级,将所述优先级确定为当前优先级;
22.获取与当前优先级对应的条件表达式;
23.判断所述输入参数是否满足所述条件表达式;
24.若所述输入参数满足所述条件表达式,根据对应于所述条件表达式的期望推导结果,确定输出结果;
25.若所述输入参数不满足所述条件表达式,获取在当前优先级后一位的优先级,将所述优先级确定为新的当前优先级,并返回执行获取与当前优先级对应的条件表达式的步骤。
26.优选地,根据对应于所述条件表达式的期望推导结果,确定输出结果的过程,包括:
27.若所述推导结果为变量,将所述变量确定为输出结果;
28.若所述推导结果为常量,将所述常量确定为输出结果;
29.若所述推导结果为脚本,执行所述脚本,并将脚本执行结果确定为输出结果。
30.本技术第二方面提供了一种规则引擎系统,包括:
31.所述规则引擎系统为依据上述的规则引擎在线生成方法生成的目标规则引擎。
32.本技术第三方面提供了一种规则引擎在线生成装置,包括:
33.函数信息获取单元,用于通过网页形式获取用户输入的函数信息,所述函数信息包括规则函数的函数名和参数信息,所述参数信息包括输入参数的类型和值的范围;
34.规则信息获取单元,用于通过网页形式获取用户输入的规则信息,所述规则信息包括至少一个由各输入参数组成的条件表达式、对应于每一条件表达式的优先级、以及对应于每一条件表达式的期望推导结果;
35.配置文件生成单元,用于基于所述函数名、所述参数信息以及所述规则信息,生成规则引擎配置文件;
36.规则引擎生成单元,用于基于所述规则引擎配置文件和预设的规则引擎,生成候选规则引擎;
37.规则引擎确定单元,用于对所述候选规则引擎进行测试,并将通过测试的候选规则引擎确定为目标规则引擎,所述目标规则引擎用于对输入参数进行推导,得到输出结果。
38.本技术第四方面提供了一种规则引擎在线生成设备,包括:存储器和处理器;
39.所述存储器,用于存储程序;
40.所述处理器,用于执行所述程序,实现上述的规则引擎在线生成方法的各个步骤。
41.本技术第五方面提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上述的规则引擎在线生成方法的各个步骤。
42.经由上述的技术方案可知,本技术通过网页形式获取用户输入的函数信息以及规则信息。其中,所述函数信息包括规则函数的函数名和参数信息,所述参数信息包括输入参数的类型和值的范围;所述规则信息包括至少一个由各输入参数组成的条件表达式、对应于每一条件表达式的优先级、以及对应于每一条件表达式的期望推导结果。然后,基于所述函数名、所述参数信息以及所述规则信息,生成规则引擎配置文件。接着,基于所述规则引擎配置文件和预设的规则引擎,生成候选规则引擎。最后,对所述候选规则引擎进行测试,并将通过测试的候选规则引擎确定为目标规则引擎,所述目标规则引擎用于对输入参数进
行推导,得到输出结果。可以理解的是,上述处理过程均在服务器中完成,本地无需依赖庞大的规则引擎组件,本地仅需通过网页提交函数信息及规则信息,与服务器之间的通信量比较少,实现了规则引擎在线生成。进一步地,所有定制性的信息以网页形式来获取,无需从头编写规则引擎配置文件,减少了重复性的工作,提高了整体开发效率,有利于规则引擎的快速迭代。
附图说明
43.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
44.图1为本技术实施例公开的规则引擎在线生成方法的示意图;
45.图2示例了本技术实施例公开的规则树;
46.图3示例了本技术实施例提供的规则引擎服务与业务系统交互的示意图;
47.图4为本技术实施例公开的对输入参数进行规则推导的示意图;
48.图5为本技术实施例公开的规则引擎在线生成装置的示意图;
49.图6为本技术实施例公开的规则引擎在线生成设备的示意图。
具体实施方式
50.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
51.下面介绍本技术实施例提供的规则引擎在线生成方法。请参阅图1,本技术实施例提供的规则引擎在线生成方法可以包括如下步骤:
52.步骤s101,通过网页形式获取用户输入的函数信息。
53.其中,该函数信息可以包括规则函数的函数名和参数信息,函数名必须与现有的函数名不一致,参数信息可以包括输入参数的类型和值的范围。
54.示例性地,对于如图2所示的规则树,输入参考包括年龄、学生状态以及征信状态,其中,年龄为一个整形,取值范围为0以上;学生状态为一个布尔量,取值范围为“是”和“否”(在计算机中对应于true和false,或者,0和1);征信状态为一个布尔量,取值范围为“好”和“坏”(在计算机中对应于true和false,或者,0和1)。
55.步骤s102,通过网页形式获取用户输入的规则信息。
56.其中,该规则信息包括至少一个由各输入参数组成的条件表达式、对应于每一条件表达式的优先级、以及对应于每一条件表达式的期望推导结果。
57.示例性地,对于如图2所示的规则树,可以得到各条件表达式、优先级以及期望推导结果如下表所示。
58.表1:规则信息
59.优先级条件表达式期望推导结果(常量)
1年龄《30且学生==是购买(y)2年龄《30且学生==否不购买(n)330《年龄《40购买(y)4年龄》40且征信==好购买(y)5年龄》40且征信==坏不购买(n)
60.其中,这里的期望推导结果为常量,即y或n。
61.步骤s103,基于函数名、参数信息以及规则信息,生成规则引擎配置文件。
62.具体地,由部署于服务器端的规则引擎服务基于函数名、参数信息以及规则信息,生成规则引擎配置文件。
63.步骤s104,基于规则引擎配置文件和预设的规则引擎,生成候选规则引擎。
64.其中,该预设的规则引擎在部署于服务器端的规则引擎,该部分由一份通用代码支撑,在运行时,结合不同的规则引擎配置文件,而得到不同业务规则场景下的规则引擎。
65.步骤s105,对候选规则引擎进行测试,并将通过测试的候选规则引擎确定为目标规则引擎。
66.其中,当用户输入的函数信息及规则信息存在问题时,会导致测试不通过。这时候,就需要用户重新配置,以得到能正常使用的规则引擎。目标规则引擎用于对输入参数进行推导,得到输出结果。
67.本技术通过网页形式获取用户输入的函数信息以及规则信息。其中,所述函数信息包括规则函数的函数名和参数信息,所述参数信息包括输入参数的类型和值的范围;所述规则信息包括至少一个由各输入参数组成的条件表达式、对应于每一条件表达式的优先级、以及对应于每一条件表达式的期望推导结果。然后,基于所述函数名、所述参数信息以及所述规则信息,生成规则引擎配置文件。接着,基于所述规则引擎配置文件和预设的规则引擎,生成候选规则引擎。最后,对所述候选规则引擎进行测试,并将通过测试的候选规则引擎确定为目标规则引擎,所述目标规则引擎用于对输入参数进行推导,得到输出结果。可以理解的是,上述处理过程均在服务器中完成,本地无需依赖庞大的规则引擎组件,本地仅需通过网页提交函数信息及规则信息,与服务器之间的通信量比较少,实现了规则引擎在线生成。进一步地,所有定制性的信息以网页形式来获取,无需从头编写规则引擎配置文件,减少了重复性的工作,提高了整体开发效率,有利于规则引擎的快速迭代。
68.在本技术的一些实施例中,步骤s105对候选规则引擎进行测试的过程,可以包括:
69.s1,通过网页形式获取用户输入的多组参数及每一组参数的期望的输出结果。
70.其中,各组参数的信息与步骤s101中提及的参数信息相符。
71.s2,将每一组参数输入至候选规则引擎,得到输出结果。
72.s3,判断所输出结果是否等同于该组参数的期望的输出结果。若是,执行s4。
73.s4,确定该候选规则引擎通过测试。
74.示例性地,对于如图2所示的规则树,可以输入如表2所示的5组参数。
75.表2:用于测试的多组参数
[0076][0077][0078]
在本技术的一些实施例中,步骤s102中提及的期望推导结果可以包括变量、常量和脚本。
[0079]
其中,如上述例子,若期望推导结果为常量时,则直接返回对应于输入参数的常量;若期望推导结果为变量时,例如,为某一输入参数的值,则直接返回该参数的值;若期望推导结果为脚本,例如,输入参数所对应的下单时间是否为7天之内,则调用脚本程序进行相关的计算后,返回脚本执行结果。
[0080]
在本技术的一些实施例中,步骤s101中提及的函数信息还可以包括异常抛出规则,用于判断是否需要发起异常抛出。
[0081]
例如,当输入参数有误时,抛出异常。
[0082]
请参阅图3,在运行时状态中,规则引擎以服务(如rpc)的形式提供规则判断服务。具体地,业务系统按照预设的组装规则将待处理的数据组装成输入参数,输入函数输入至规则引擎服务,规则引擎服务对这些输入参数进行推导处理后,得到输出结果,并将其返回至业务系统。
[0083]
在本技术的一些实施例中,请参阅图4,步骤s105中提及的目标规则引擎对输入参数进行推导,得到输出结果的过程,可以包括:
[0084]
s1,对输入参数进行校验,得到校验结果。
[0085]
s2,基于该校验结果判断输入参数是否通过校验。若是,执行s3。
[0086]
s3,将各优先级从高到低排序,得到优先级序列。
[0087]
s4,获取排在首位的优先级,将该优先级确定为当前优先级。
[0088]
s5,获取与当前优先级对应的条件表达式。
[0089]
s6,判断该输入参数是否满足该条件表达式。若是,执行s7;若否,执行s8。
[0090]
s7,根据对应于该条件表达式的期望推导结果,确定输出结果;
[0091]
s8,获取在当前优先级后一位的优先级,将该优先级确定为新的当前优先级,并返回执行s5。
[0092]
在本技术的一些实施例中,上述s7根据对应于所述条件表达式的期望推导结果,确定输出结果的过程,可以包括:
[0093]
s1,若推导结果为变量,将该变量确定为输出结果。
[0094]
s2,若推导结果为常量,将该常量确定为输出结果。
[0095]
s3,若推导结果为脚本,执行该脚本,并将脚本执行结果确定为输出结果。
[0096]
下面对本技术实施例提供的规则引擎在线生成装置进行描述,下文描述的规则引擎在线生成装置与上文描述的规则引擎在线生成方法可相互对应参照。
[0097]
请参见图5,本技术实施例提供的规则引擎在线生成装置,可以包括:
[0098]
函数信息获取单元21,用于通过网页形式获取用户输入的函数信息,所述函数信息包括规则函数的函数名和参数信息,所述参数信息包括输入参数的类型和值的范围;
[0099]
规则信息获取单元22,用于通过网页形式获取用户输入的规则信息,所述规则信息包括至少一个由各输入参数组成的条件表达式、对应于每一条件表达式的优先级、以及对应于每一条件表达式的期望推导结果;
[0100]
配置文件生成单元23,用于基于所述函数名、所述参数信息以及所述规则信息,生成规则引擎配置文件;
[0101]
规则引擎生成单元24,用于基于所述规则引擎配置文件和预设的规则引擎,生成候选规则引擎;
[0102]
规则引擎确定单元25,用于对所述候选规则引擎进行测试,并将通过测试的候选规则引擎确定为目标规则引擎,所述目标规则引擎用于对输入参数进行推导,得到输出结果。
[0103]
在本技术的一些实施例中,规则引擎确定单元25对所述候选规则引擎进行测试的过程,可以包括:
[0104]
通过网页形式获取用户输入的多组参数及每一组参数的期望的输出结果,各组参数的信息与所述参数信息相符;
[0105]
将每一组参数输入至所述候选规则引擎,得到输出结果;
[0106]
判断所述输出结果是否等同于所述组参数的期望的输出结果;
[0107]
若是,确定所述候选规则引擎通过测试。
[0108]
在本技术的一些实施例中,所述期望推导结果包括变量、常量和脚本。
[0109]
在本技术的一些实施例中,所述函数信息还包括异常抛出规则,用于判断是否需要发起异常抛出。
[0110]
在本技术的一些实施例中,所述目标规则引擎对输入参数进行推导,得到输出结果的过程,可以包括:
[0111]
对输入参数进行校验,得到校验结果;
[0112]
基于所述校验结果判断所述输入参数是否通过校验;
[0113]
若是,将各优先级从高到低排序,得到优先级序列;
[0114]
获取排在首位的优先级,将所述优先级确定为当前优先级;
[0115]
获取与当前优先级对应的条件表达式;
[0116]
判断所述输入参数是否满足所述条件表达式;
[0117]
若所述输入参数满足所述条件表达式,根据对应于所述条件表达式的期望推导结果,确定输出结果;
[0118]
若所述输入参数不满足所述条件表达式,获取在当前优先级后一位的优先级,将所述优先级确定为新的当前优先级,并返回执行获取与当前优先级对应的条件表达式的步骤。
[0119]
在本技术的一些实施例中,所述目标规则引擎根据对应于所述条件表达式的期望推导结果,确定输出结果的过程,可以包括:
[0120]
若所述推导结果为变量,将所述变量确定为输出结果;
[0121]
若所述推导结果为常量,将所述常量确定为输出结果;
[0122]
若所述推导结果为脚本,执行所述脚本,并将脚本执行结果确定为输出结果。
[0123]
本技术实施例提供的规则引擎在线生成装置可应用于规则引擎在线生成设备,如计算机等。可选的,图6示出了规则引擎在线生成设备的硬件结构框图,参照图6,规则引擎在线生成设备的硬件结构可以包括:至少一个处理器31,至少一个通信接口32,至少一个存储器33和至少一个通信总线34。
[0124]
在本技术实施例中,处理器31、通信接口32、存储器33、通信总线34的数量为至少一个,且处理器31、通信接口32、存储器33通过通信总线34完成相互间的通信;
[0125]
处理器31可能是一个中央处理器cpu,或者是特定集成电路asic(application specific integrated circuit),或者是被配置成实施本技术实施例的一个或多个集成电路等;
[0126]
存储器33可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
[0127]
其中,存储器33存储有程序,处理器31可调用存储器33存储的程序,所述程序用于:
[0128]
通过网页形式获取用户输入的函数信息,所述函数信息包括规则函数的函数名和参数信息,所述参数信息包括输入参数的类型和值的范围;
[0129]
通过网页形式获取用户输入的规则信息,所述规则信息包括至少一个由各输入参数组成的条件表达式、对应于每一条件表达式的优先级、以及对应于每一条件表达式的期望推导结果;
[0130]
基于所述函数名、所述参数信息以及所述规则信息,生成规则引擎配置文件;
[0131]
基于所述规则引擎配置文件和预设的规则引擎,生成候选规则引擎;
[0132]
对所述候选规则引擎进行测试,并将通过测试的候选规则引擎确定为目标规则引擎,所述目标规则引擎用于对输入参数进行推导,得到输出结果。
[0133]
可选的,所述程序的细化功能和扩展功能可参照上文描述。
[0134]
本技术实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:
[0135]
通过网页形式获取用户输入的函数信息,所述函数信息包括规则函数的函数名和参数信息,所述参数信息包括输入参数的类型和值的范围;
[0136]
通过网页形式获取用户输入的规则信息,所述规则信息包括至少一个由各输入参数组成的条件表达式、对应于每一条件表达式的优先级、以及对应于每一条件表达式的期望推导结果;
[0137]
基于所述函数名、所述参数信息以及所述规则信息,生成规则引擎配置文件;
[0138]
基于所述规则引擎配置文件和预设的规则引擎,生成候选规则引擎;
[0139]
对所述候选规则引擎进行测试,并将通过测试的候选规则引擎确定为目标规则引擎,所述目标规则引擎用于对输入参数进行推导,得到输出结果。
[0140]
可选的,所述程序的细化功能和扩展功能可参照上文描述。
[0141]
综上所述:
[0142]
本技术通过网页形式获取用户输入的函数信息以及规则信息。其中,所述函数信
息包括规则函数的函数名和参数信息,所述参数信息包括输入参数的类型和值的范围;所述规则信息包括至少一个由各输入参数组成的条件表达式、对应于每一条件表达式的优先级、以及对应于每一条件表达式的期望推导结果。然后,基于所述函数名、所述参数信息以及所述规则信息,生成规则引擎配置文件。接着,基于所述规则引擎配置文件和预设的规则引擎,生成候选规则引擎。最后,对所述候选规则引擎进行测试,并将通过测试的候选规则引擎确定为目标规则引擎,所述目标规则引擎用于对输入参数进行推导,得到输出结果。可以理解的是,上述处理过程均在服务器中完成,本地无需依赖庞大的规则引擎组件,本地仅需通过网页提交函数信息及规则信息,与服务器之间的通信量比较少,实现了规则引擎在线生成。进一步地,所有定制性的信息以网页形式来获取,无需从头编写规则引擎配置文件,减少了重复性的工作,提高了整体开发效率,有利于规则引擎的快速迭代。
[0143]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0144]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间可以根据需要进行组合,且相同相似部分互相参见即可。
[0145]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。