一种规则处理方法和设备
技术领域
本申请涉及互联网信息处理技术领域,尤其涉及一种规则处理方法和设备。
背景技术
随着互联网技术的发展,用户请求服务器处理的业务越来越多。然而,业务在处理过程中需要使用业务规则,每一条业务规则中包含多个执行条件(这里的执行条件是指包含一段业务逻辑的代码)和多个逻辑运算符(例如:and逻辑运算符;or逻辑运算符),但是,服务器在处理一个业务请求时需要使用多条业务规则,这就意味着业务规则分析处理的速度决定了业务请求的处理速度。
一般业务规则的分析方法为:将业务规则对应的表达式转换成为表达式树的形式,并对表达式树执行遍历操作,在遍历的过程中计算表达式树中各个叶子节点(即执行条件)的值,逐步向表达式树的根结点回溯得到根节点的值,根节点的值即可认定为该业务规则的分析结果。这种传统的业务规则的分析方法,在遍历过程中逐一计算表达式树中各个叶子节点的值,存在计算量大,又比较耗时的问题,使得业务规则处理的速度相对比较慢,进而影响业务请求的处理速度。
然而,随着电子商务技术的发展,网络业务的复杂度也随之增加,当面对海量的业务请求需要处理时,如何缩短业务规则的处理时间成为提高业务处理效率的关键问题。
发明内容
有鉴于此,本申请实施例提供了一种规则处理方法和设备,用于解决如何缩短业务规则处理时间的问题,以提升业务处理效率。
一种规则处理方法,包括:
获取待处理的规则,其中,所述规则中包含至少一个执行条件;
解析所述规则,确定针对所述规则的满足设定条件的运算路径;
根据所述运算路径和短路运算策略,对所述规则进行处理,得到所述规则的处理结果,其中,所述处理结果用于处理与所述规则相匹配的业务事件。
一种规则处理设备,包括:
获取单元,用于获取待处理的规则,其中,所述规则中包含至少一个执行条件;
确定单元,用于解析所述规则,确定针对所述规则的满足设定条件的运算路径;
处理单元,用于根据所述运算路径和短路运算策略,对所述规则进行处理,得到所述规则的处理结果,其中,所述处理结果用于处理与所述规则相匹配的业务事件。
本发明有益效果如下:
本发明实施例获取待处理的规则,所述规则中包含至少一个执行条件;解析所述规则,确定针对所述规则的满足设定条件的运算路径;根据所述运算路径和短路运算策略,对所述规则进行处理,得到所述规则的处理结果,其中,所述处理结果用于处理与所述规则相匹配的业务事件。这样,对于待处理的规则,通过解析所述规则中各个执行条件之间的逻辑关系,确定满足设定条件的运算路径,并基于该运算路径和短路运算策略,快速得到规则的处理结果,有效简化规则中各个执行条件的逻辑执行次数,进而缩短规则处理时间,快速提升业务事件的处理效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种规则处理方法的流程示意图;
图2为规则表达树的结构示意图;
图3为本申请实施例提供的一种规则处理设备的结构示意图。
具体实施方式
为了实现本申请的目的,本申请实施例提供了一种规则处理方法和设备,获取待处理的规则,所述规则中包含至少一个执行条件;解析所述规则,确定针对所述规则的满足设定条件的运算路径;根据所述运算路径和短路运算策略,对所述规则进行处理,得到所述规则的处理结果,其中,所述处理结果用于处理与所述规则相匹配的业务事件。这样,对于待处理的规则,通过解析所述规则中各个执行条件之间的逻辑关系,确定满足设定条件的运算路径,并基于该运算路径和短路运算策略,快速得到规则的处理结果,有效简化规则中各个执行条件的逻辑执行次数,进而缩短规则处理时间,快速提升业务事件的处理效率。
需要说明的是,本申请实施例的执行主体可以是规则引擎,规则引擎是一种嵌入在应用程序中的组件,实现将业务策略从应用程序代码中分离出来,并使用预定义的语义模块编写业务策略。
在电子商务时代,规则引擎被用于支撑复杂的业务决策,被广泛地用于商品交易、风险识别、行为特征匹配以及个性化推荐等方面。规则引擎中可以包含多个规则模型,每一个规则模型的建立包含:规则可以表示成为一个布尔表达式,包含执行条件和逻辑运算符;规则的结果是布尔值,即真或假;而执行条件是包含一段业务逻辑的代码,可以根据输入参数计算得出结果。
下面结合说明书附图对本发明各个实施例作进一步地详细描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本申请实施例提供的一种规则处理方法的流程示意图。所述方法可以如下所示。
步骤101:获取待处理的规则。
其中,所述规则中包含至少一个执行条件。
在步骤101中,规则引擎中包含多个规则,获取待处理的规则可以是指在接收到业务处理请求时,根据该业务处理请求确定用于处理该业务处理请求的规则;也可以是指规则引擎中包含的每一个规则,这里不做限定。
需要说明的是,本申请实施例中所记载的规则是指由执行条件和逻辑运算符组成的规则表达式。例如:(((((1&2)&3)&4)&5)&(7|(3&(1&2)),1、2、3、4、5、7分别表示执行条件,&和|分别表示逻辑运算符。
步骤102:解析所述规则,确定针对所述规则的满足设定条件的运算路径。
在步骤102中,解析所述规则中包含的执行条件以及不同执行条件之间的逻辑关系,确定所述规则中包含的每一个所述执行条件的执行优先级;并根据所述规则中包含的每一个所述执行条件的执行优先级,确定针对所述规则的满足设定条件的运算路径。
具体地,确定所述规则中包含的每一个所述执行条件的执行优先级的方法包括但不限于:
第一种方法:
针对所述规则中包含的每一个执行条件,分别计算每一个执行条件的平均执行时间;
根据每一个执行条件的平均执行时间,分别确定各个所述执行条件的执行优先级。
其中,所述平均执行时间越少,对应的执行条件的优先级越高。
具体地,每一个执行条件的平均执行时间可以通过计数器记录该执行条件的历史执行时间,根据历史执行时间以及执行次数,得到该执行条件的平均执行时间。
在得到所述规则中包含的每一个执行条件的平均执行时间时,按照平均执行时间的长短,将所述规则中包含的执行条件进行排序,并根据排序结果确定各个所述执行条件的执行优先级。
第二种方法:
根据所述规则中包含的各个执行条件之间的逻辑关系,建立所述规则对应的规则表达树,其中,所述规则表达树的叶子节点为所述规则中包含的执行条件,两个所述叶子节点对应的非叶子节点为所述规则中包含的逻辑运算符;
遍历所述规则表达树,确定所述规则表达树中各个叶子节点的权重值;
根据所述权重值,确定各个叶子节点对应的执行条件的执行优先级。
需要说明的是,本申请实施例中可以设置权重值越大对应的运算优先级越高;也可以设置权重值越小对应的运算优先级越低,这里不做限定。
具体地,确定所述规则对应的规则表达式;对所述规则表达式进行语法分析,得到针对所述规则表达式生成的二叉分析树,即得到所述规则对应的规则表达树。
这里确定所述规则表达树中各个节点的权重值的方式包括但不限于以下几种方式:
第一种方式:
通过确定每一个节点对应的条件的平均执行时间,根据确定的平均执行时间,得到该条件对应的节点的权重值。
具体地,通过抽样方式确定目标条件,统计该目标条件每一次执行所使用的时间,利用统计到的目标条件每一次执行所使用的时间以及统计的次数,得到该目标条件的平均执行时间。
第二种方式:
通过常量值的方式确定每一个条件对应的节点的权重值。
第三种方式:
通过衡量衍生公式确定每一个条件对应的节点的权重值。
在确定所述规则中包含的每一个所述执行条件的执行优先级时,选择执行优先级大于设定级别的执行条件对应的运算路径作为针对所述规则的满足设定条件的运算路径。
例如:假设(((((1&2)&3)&4)&5)&(7|(3&(1&2))对应的规则表达树如图2所示。从图2中可以看出,每一个非叶子节点对应一个左子树和一个右子树,到达根节点的运算路径有多条,那么基于本申请实施例中所记载的方案,可以根据执行条件的执行优先级确定最优运算路径,快速计算得到根节点的运算结果。
图2中各个执行条件的执行优先级依次为:4大于5;7大于4;5大于1;5大于2;5大于3;那么对于图2中所示的规则表达式,那么确定的优选路径可以为(7|(3&(1&2)。
假设在图2中各个执行条件的执行优先级依次为:4大于5;4大于7;5大于1;5大于2;5大于3;那么对于图2中所示的规则表达式,那么确定的优选路径可以为((((1&2)&3)&4)&5)。
可选地,在确定所述规则中包含的每一个所述执行条件的执行优先级时,还可以预先对规则中包含的执行条件的执行时间进行预测,根据预测结果,确定所述规则中包含的每一个所述执行条件的执行优先级。
当规则处理业务量比较大时,为了减少对主流程的影响,运算优先级的确定可以由独立的一个线程来处理。通过分析业务规则中各个条件的性能参数(例如:平均执行时间、饱和计数器的数值、预测准确率),确定各个条件的运算优先级。
步骤103:根据所述运算路径和短路运算策略,对所述规则进行处理,得到所述规则的处理结果。
其中,所述处理结果用于处理与所述规则相匹配的业务事件。
在步骤103中,短路运算策略用于减少业务规则的逻辑运算次数。短路运算策略的原理是:假设求值A and B,如果A的值为false,那么B的值将无需再计算,同理如果先计算B且值为false,那么A的值将无需再计算,即可得知A and B的值为false;求值A or B,如果A的值为true,那么B的值将无需再计算,同理如果先计算B且值为true,那么A的值将无需再计算,即可得知A or B的值为true。
在本申请实施例中,在步骤102确定运算路径之后,可以基于该运算路径和短路运算策略,计算规则所对应的规则表达树的根节点的值。
仍以上述事例为例进行说明。假设对(((((1&2)&3)&4)&5)&(7|(3&(1&2))进行处理,在步骤102中确定的运算路径为((((1&2)&3)&4)&5),那么在对((((1&2)&3)&4)&5)计算的过程中可以使用短路运算策略,在得到((((1&2)&3)&4)&5)的运算结果之后,也可以使用短路运算策略,计算得到根节点的值。
可选地,在对所述规则进行计算之前,对该规则对应的业务规则表达式进行遍历,为每一个表示相同条件的叶子节点建立其关联的父节点列表。一旦父节点的布尔值确定,那么该父节点的所有叶子节点将会被短路,无需再进行计算,这样能够缩短规则处理时间,提高业务处理请求的处理效率。
通过本申请实施例中所记载的方案,获取待处理的规则,所述规则中包含至少一个执行条件;解析所述规则,确定针对所述规则的满足设定条件的运算路径;根据所述运算路径和短路运算策略,对所述规则进行处理,得到所述规则的处理结果,其中,所述处理结果用于处理与所述规则相匹配的业务事件。这样,对于待处理的规则,通过解析所述规则中各个执行条件之间的逻辑关系,确定满足设定条件的运算路径,并基于该运算路径和短路运算策略,快速得到规则的处理结果,有效简化规则中各个执行条件的逻辑执行次数,进而缩短规则处理时间,快速提升业务事件的处理效率。
图3为本申请实施例提供的一种规则处理设备的结构示意图,所述规则处理设备包括:获取单元31、确定单元32和处理单元33,其中:
获取单元31,用于获取待处理的规则,其中,所述规则中包含至少一个执行条件;
确定单元32,用于解析所述规则,确定针对所述规则的满足设定条件的运算路径;
处理单元33,用于根据所述运算路径和短路运算策略,对所述规则进行处理,得到所述规则的处理结果,其中,所述处理结果用于处理与所述规则相匹配的业务事件。
在本申请的另一个实施例中,所述确定单元32解析所述规则,确定针对所述规则的满足设定条件的运算路径,包括:
解析所述规则,确定所述规则中包含的每一个所述执行条件的执行优先级;并根据所述规则中包含的每一个所述执行条件的执行优先级,确定针对所述规则的满足设定条件的运算路径。
在本申请的另一个实施例中,所述确定单元32解析所述规则,确定所述规则中包含的每一个所述执行条件的执行优先级,包括:
针对所述规则中包含的每一个执行条件,分别计算每一个执行条件的平均执行时间;
根据每一个执行条件的平均执行时间,分别确定各个所述执行条件的执行优先级,其中,所述平均执行时间越少,对应的执行条件的优先级越高。
在本申请的另一个实施例中,所述确定单元32解析所述规则,确定所述规则中包含的每一个所述执行条件的执行优先级,包括:
根据所述规则中包含的各个执行条件之间的逻辑关系,建立所述规则对应的规则表达树,其中,所述规则表达树的叶子节点为所述规则中包含的执行条件,两个所述叶子节点对应的非叶子节点为所述规则中包含的逻辑运算符;
遍历所述规则表达树,确定所述规则表达树中各个叶子节点的权重值;
根据所述权重值,确定各个叶子节点对应的执行条件的执行优先级。
在本申请的另一个实施例中,所述确定单元32根据所述规则中包含的每一个所述执行条件的执行优先级,确定针对所述规则的满足设定条件的运算路径,包括:
在遍历所述规则表达树过程时,根据所述规则中包含的每一个所述执行条件的执行优先级,选择执行优先级大于设定级别的执行条件对应的运算路径作为针对所述规则的满足设定条件的运算路径。
需要说明的是,本申请实施例中所述的规则处理设备可以通过软件方式实现其功能,也可以通过硬件方式实现其功能,这里不做具体限定。
本申请实施例中所记载的规则处理设备对于待处理的规则,通过解析所述规则中各个执行条件之间的逻辑关系,确定满足设定条件的运算路径,并基于该运算路径和短路运算策略,快速得到规则的处理结果,有效简化规则中各个执行条件的逻辑执行次数,进而缩短规则处理时间,快速提升业务事件的处理效率。
本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。