专利名称:一种实现基于规则引擎的规则匹配方法和装置的制作方法
技术领域:
本发明涉及数据匹配技术领域,具体涉及一种实现基于规则引擎的规则匹配方法和装置。
背景技术:
规则引擎是一种嵌入到应用程序中的组件,大多数规则引擎都支持简单脚本语言的规则实现,支持通用开发语言的嵌入开发。规则引擎实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策,应用程序通过向规则引擎提交数据或者对象来触发规则引擎,由规则引擎来调用相应的规则,进 而触发相应的操作。通常一个规则包含一组规则条件和在此规则条件下执行的操作,当且仅当该规则中的所有规则条件都匹配成功时,规则引擎将会触发此规则下的所有操作执行。因此,当规则数量较多时,使用现有技术进行规则匹配,对于每个规则的所有规则条件都需要匹配成功,才能匹配到所需规则。目前,在规则数量较多的情况下,通过匹配每个规则的所有规则条件来查找出需要匹配的规则的方法,使得在查找需要匹配的规则的过程中需要判断是否匹配的规则较多,一定程度上降低了规则引擎的性能,使得规则匹配的效率较低。
发明内容
为了解决规则匹配的效率低的问题,本发明提供了一种实现基于规则引擎的规则匹配方法和装置。本发明提供了一种实现基于规则引擎的规则匹配方法,所述方法包括,接收需要匹配的事件,所述事件包括至少一个属性值;判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;如果是,则确定匹配的索引项所对应的目标待匹配规则;对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。优选地,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配之前,还包括按照预设排序规则对任一所述规则预设的索引项集合进行排序;根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级。优选地,所述按照预设排序规则对任一所述规则预设的索引项集合进行排序,具体为;将任一相等关系的索引项设置为第一优先级;将所述索引项集合中除了设置为第一优先级的索引项的其他索引项,按照预设顺序规则进行排序;相应的,所述根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级,具体为
根据排序后的各个索引项的顺序,设置索引项集合中除了设置为第一优先级的索引项的其他索引项的优先级。优选地,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,具体为假设所述待匹配 规则的数量为N,则第η个待匹配规则的索引项数量为Mn,所述η为不大于N的自然数;如果第η个规则的索引项数量Mn等于1,则判断所述事件中是否存在一个属性值与所述第η个规则的一个索引项匹配。优选地,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,具体为假设所述待匹配规则数量为N,则第η个待匹配规则的索引项数量为Mn,所述η为不大于N的自然数;如果第η个规则的索引项数量Mn大于1,则判断所述事件中是否存在一个属性值与所述第η个规则的第一优先级索引项匹配;如果是,则根据第一优先级索引项与第二优先级索引项的对应关系,确定所述第η个规则的第二优先级索引项,并判断所述事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在所述事件中的一个属性值与所述第η个规则的第Mn优先级索引项匹配。本发明还提供一种实现基于规则引擎的规则匹配装置,所述装置包括接收模块,用于接收需要匹配的事件,所述事件包括至少一个属性值;判断模块,用于判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;第一确定模块,用于在所述判断模块的结果为是时,确定匹配的索引项所对应的目标待匹配规则;匹配模块,用于对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。 优选地,所述装置还包括排序模块,用于按照预设排序规则对任一所述规则预设的索引项集合进行排序;第一设置模块,用于根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级。优选地,所述排序模块包括第二设置模块,用于将任一相等关系的索引项设置为第一优先级;排序子模块,用于将所述索引项集合中除了设置为第一优先级的索引项的其他索引项,按照预设顺序规则进行排序;相应的,所述第一设置模块,具体用于根据所述排序子模块中排序后的各个索引项的顺序,设置索引项集合中除了设置为第一优先级的索引项的其他索引项的优先级。优选地,所述判断模块包括获取子模块,用于获取所述待匹配规则的数量为N,以及第η个待匹配规则的索引项数量为Mn,所述η为不大于N的自然数;第一判断子模块,用于在第η个规则的索引项数量Mn等于I的情况下,判断所述事件中是否存在一个属性值与所述第η个规则的一个索引项匹配。优选地,所述判断模块包括获取子模块,用于获取所述待匹配规则的数量为N,以及第η个待匹配规则的索引项数量为Mn,所述η为不大于N的自然数;第二判断模块,用于在第η个规则的索引项数量Mn大于I的情况下,判断所述事件中是否存在一个属性值与所述第η个规则的第一优先级索引项匹配;第三判断子模块,用于所述第二判断子模块的结果为是时,根据第一优先级索引 项与第二优先级索引项的对应关系,确定所述第η个规则的第二优先级索引项,并判断所述事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在所述事件中的一个属性值与所述第η个规则的第Mn优先级索引项匹配。与现有技术相比,本发明首先接收需要匹配的事件,所述事件包括至少一个属性值;判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;如果是,则确定匹配的索引项所对应的目标待匹配规则;对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。本发明利用索引来进行需要匹配的规则的筛选,使得在需要规则匹配时,减少了需要匹配的规则的数量,提高了规则引擎的性能以及规则匹配的效率。
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图I为本发明实施例一的实现基于规则引擎的规则匹配方法的流程图;图2为本发明实施例二的实现基于规则引擎的规则匹配方法的流程图;图3为本发明实施例三的实现基于规则引擎的规则匹配装置的结构图;图4为本发明实施例三的排序模块302的装置结构图;图5为本发明实施例三的在规则的索引项数量等于I时的判断模块304结构图;图6为本发明实施例三的在规则的索引项数量大于I时的判断模块304结构图。
具体实施例方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。实施例一、参考图1,图I为本发明提供的一种实现基于规则引擎的规则匹配方法实施例一的流程图,本实施例具体可以包括步骤101、接收需要匹配的事件,所述事件包括至少一个属性值。
本领域中,规则引擎通过接收事件被触发,进而根据接收的事件来调用相应的规则与事件进行匹配,如果匹配成功,则触发此匹配成功的规则所能够触发的所有操作。本实施例主要解决了如何根据接收到的事件,在存储所有规则的规则列表中匹配到与该事件对应的规则。本实施例中,首先接收需要匹配的事件,事件可以理解为“被控件识别的操作”,此处所说的事件可以包括一个属性值,也可以包括多个属性值,所述事件的任意一个属性值可以与规则的任一规则条件相匹配。例如,任一事件可以为“红色信号灯亮了”,此时“红色信号灯亮了”为该事件的一个属性值,可以与任一规则的规则条件相匹配;任一事件也可以为“红色信号灯亮了,同时绿色信号灯也亮了”,其中,“红色信号灯亮了” “绿色信号灯也亮了”分别为该事件的属性值,上述两个事件的属性值也可以与任一规则的两个规则条件相匹配。
实际操作中,接收需要匹配事件的方式很多,属于现有技术,所以在此不再赘述,同时接收需要匹配的事件的方式不影响本实施例的实施。步骤102、判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,如果是,则进入步骤103。本实施例中,每个待匹配的规则包括若干规则条件,例如,“如果红色信号灯亮了,同时绿色信号灯也亮了,则会触发A程序自动运行”为一条规则,其中,“红色信号灯亮了 ”和“绿色信号灯也亮了”分别为其中的规则条件,“触发A程序自动运行”为该规则的规则条件均被匹配成功时被触发的操作。首先预先将每个待匹配规则的符合索引项设置条件的规则条件设置为索引项,例如,可以将“红色信号灯亮了”设置为索引项。其次,将接收到的事件的属性值与设置的索引项相匹配,例如,如果接收的事件中的任一属性值为“红色信号灯亮了”,那么该属性值能够与被设置为索引项的“红色信号灯亮了”这一规则条件匹配成功,总之,如果事件中的属性值能与任意一个规则所设置的所有索引项匹配,则进入步骤103。具体的,索引项设置条件可以为“相等关系”的规则条件,例如,如果某个规则的一个规则条件为“年龄等于20”,则可以将“年龄等于20”这一规则条件设置为该规则的索引项。实际操作中,每个待匹配规则可以设置一个索引项,也可以设置多个索引项。具体的,根据“相等关系”的设置条件设置的索引项为“年龄等于20”时,如果接收的事件中的一个属性值也为“年龄等于20”,那么,作为事件属性值的“年龄等于20”可以与作为索引项的“年龄等于20”相匹配。值得注意的是,实际操作中,通常规则索引项的第一优先级索引项被设置为具有“相等关系”规则条件,除第一优先级以外的其他优先级索引项可以被设置为具有“相等关系”或者“不等关系”的规则条件。如果不存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,则说明没有与接收的事件相匹配的规则。步骤103、确定匹配的索引项所对应的目标待匹配规则。本实施例中,所有索引项都被匹配的待匹规则都被作为目标待匹配规则,例如,如果一个规则的索引项为“年龄大于18”,同时另一个规则的索引项为“年龄等于20”,并且接收的事件的一个属性值为“年龄大于18”,那么作为该事件的一个属性值的“年龄大于18”与分别作为两个规则的索引项的“年龄大于18”和“年龄等于20”均能匹配,说明被匹配了所有索引项的上述两个规则均被作为目标待匹配规则,用于后续步骤的规则条件的进一步匹配。步骤104、对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。本实施例中,将确定了的目标待匹配规则的规则条件与接收到的事件中的属性值进行匹配。实际操作中,本实施例可以将确定了的目标待匹配规则的所有规则条件 与接收到的事件中的所有属性值相匹配,如果完全匹配成功,说明该目标待匹配规则与接收到的事件匹配成功,否则,匹配失败。实际操作中,本实施例也可以将目标待匹配规则的除了已经匹配成功的索引项部分的其他规则条件与接收到的事件中的除匹配成功的属性值以外的其他属性值相匹配,如果匹配成功,则说明该目标待匹配规则与接收到的事件匹配成功,否则,匹配失败。例如,假设一个规则的规则条件为“红色信号灯亮了”和“绿色信号灯也亮了”,如果将上述的“红色信号灯亮了”这一规则条件作为索引项,在接收的事件的一个属性值也为“红色信号灯亮了 ”的情况下,可以确定上述规则的被作为索引项的“红色信号灯亮了 ”这一规则条件与接收的事件的一个属性值匹配成功,此时想要达到上述规则被匹配成功的目的,只需将除了“红色信号灯亮了”之外的未匹配成功的“绿色信号灯也亮了”索引规则与接收的事件的其他属性值匹配成功即可。本实施例首先接收需要匹配的事件,所述事件包括至少一个属性值,其次判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;如果是,则确定匹配的索引项所对应的目标待匹配规则,最后对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。与现有技术相比,本实施例利用索引来进行需要匹配的规则的筛选,使得在需要规则匹配时,减少了需要匹配的规则的数量,提高了规则引擎的性能以及规则匹配的效率。实施例二、参考图2,图2为本发明提供的一种实现基于规则引擎的规则匹配方法实施例二的流程图,由于实施例二中的步骤201和步骤205 206与实施例一中的步骤101、步骤103 104相同,所以在本实施例中不再对其赘述。本实施例具体可以包括步骤201、接收需要匹配的事件,所述事件包括至少一个属性值。步骤202、按照预设排序规则对任一所述规则预设的索引项集合进行排序。本实施例中,首先设置各个规则的索引项,将各个规则的索引项分别作为其对应的索引项集合,其次设置将索引项排序的排序规则,最后,按照预先设置的排序规则,将各个规则对应的索引项集合进行排序。具体的,预先设置的排序顺序可以是将“等于关系”的规则索引项设置为高优先级。例如,假设一个规则的规则条件为“年龄等于20”和“身高大于170”,则可以按照“等于关系”为高优先级的索引项设置条件,将“年龄等于20”这一 “等于关系”的规则条件设置为索引项。步骤203、根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级。本实施例中,根据预先设置的用于排序的排序规则对索引项集合进行排序,按照排序后的索引项顺序,对索引项进行优先级设置。具体的,位于索引项顺序中的前面位置的索引项可以设置为较高优先级。例如,一个规则的索引项集合包括A、B、C和D四个索引项,其根据预设的排序规则排序后为B、C、A、D的顺序,那么优先级顺序即为B > C > A > D。具体的,上述规则的索引项集合 中的B索引项为第一优先级索弓I项,第一优先级索引项可以为“相等关系”的规则条件,在实施例一中的步骤102中已详细介绍,在此不再赘述。同时该索引项集合中的C、A和D索引项分别为第二、三、四级索引项,它们可以为“相等关系”的规则条件,也可以为“不相等”关系的规则条件,例如,如果某条规则的一个规则条件为“年龄大于20”,则也可以将“年龄大于20”设置为该规则的第二、三或四级索引项。步骤204、判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,如果是,则进入步骤205。本实施例中,假设待匹配规则的数量为N,则第n个待匹配规则的索引项数量为Mn,此n为不大于N的自然数;如果第n个规则的索引项数量Mn等于1,则判断接收的事件中是否存在一个属性值与该第n个规则的一个索引项匹配,如果存在,则进入步骤205。如果第n个规则的索引项数量Mn大于1,则判断接收的事件中是否存在一个属性值与所述第n个规则的第一优先级索引项匹配,如果存在,则根据第一优先级索引项与第二优先级索引项的对应关系,确定该第n个规则的第二优先级索引项,并判断接收的事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在接收的事件中的一个属性值与所述第n个规则的第Mn优先级索引项匹配。值得注意的是,本实施例中的N、n和Mn均取自然数。下面以n = 5、Mn = 2的规则为例参考表I、表2,表I为第5个规则的第一优先级的索引项与第二优先级的索引项的对应表,表2为第5个规则的第二优先级的索引项与规则标识的对应表。假设规则引擎接收的事件的属性值为“年龄等于20” “身高大于170”以及“本科学历”。首先,通过规则引擎的处理,作为第一优先级的“年龄等于20”与作为接收的事件的一个属性值的“年龄等于20”能够相匹配。其次,参考表1,通过第一优先级索引项与第二优先级索引项的对应关系,确定与已匹配成功的第一优先级索引项对应的第二优先级索引项。再次,判断接收的事件中除了与第一优先级索引项匹配成功的属性值以外的其他属性值是否有与第二优先级索引相相匹配的,对于此时规则引擎接收的事件中的“身高大于170”属性值正好与该规则的第二优先级索引项“身高大于170”相匹配。最后,参考表2,通过第二优先级索引项与规则标识的对应关系,确定与已匹配成功的第二优先级索引项对应的规则标识,进而便于后续步骤中的完全被匹配的规则的确定。表I
权利要求
1.一种实现基于规则引擎的规则匹配方法,其特征在于,所述方法包括, 接收需要匹配的事件,所述事件包括至少一个属性值; 判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配; 如果是,则确定匹配的索引项所对应的目标待匹配规则; 对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。
2.根据权利要求I所述的方法,其特征在于,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配之前,还包括 按照预设排序规则对任一所述规则预设的索引项集合进行排序; 根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级。
3.根据权利要求2所述的方法,其特征在于,所述按照预设排序规则对任一所述规则预设的索引项集合进行排序,具体为; 将任一相等关系的索引项设置为第一优先级; 将所述索引项集合中除了设置为第一优先级的索引项的其他索引项,按照预设顺序规则进行排序; 相应的,所述根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级,具体为 根据排序后的各个索引项的顺序,设置索引项集合中除了设置为第一优先级的索引项的其他索引项的优先级。
4.根据权利要求3所述的方法,其特征在于,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,具体为 假设所述待匹配规则的数量为N,则第η个待匹配规则的索引项数量为Mn,所述η为不大于N的自然数; 如果第η个规则的索引项数量Mn等于1,则判断所述事件中是否存在一个属性值与所述第η个规则的一个索引项匹配。
5.根据权利要求3所述的方法,其特征在于,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,具体为 假设所述待匹配规则数量为N,则第η个待匹配规则的索引项数量为Mn,所述η为不大于N的自然数; 如果第η个规则的索引项数量Mn大于1,则判断所述事件中是否存在一个属性值与所述第η个规则的第一优先级索引项匹配; 如果是,则根据第一优先级索引项与第二优先级索引项的对应关系,确定所述第η个规则的第二优先级索引项,并判断所述事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在所述事件中的一个属性值与所述第η个规则的第Mn优先级索引项匹配。
6.一种实现基于规则引擎的规则匹配装置,其特征在于,所述装置包括 接收模块,用于接收需要匹配的事件,所述事件包括至少一个属性值; 判断模块,用于判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配; 第一确定模块,用于在所述判断模块的结果为是时,确定匹配的索引项所对应的目标待匹配规则; 匹配模块,用于对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括 排序模块,用于按照预设排序规则对任一所述规则预设的索引项集合进行排序; 第一设置模块,用于根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级。
8.根据权利要求7所述的装置,其特征在于,所述排序模块包括 第二设置模块,用于将任一相等关系的索引项设置为第一优先级; 排序子模块,用于将所述索引项集合中除了设置为第一优先级的索引项的其他索引项,按照预设顺序规则进行排序; 相应的,所述第一设置模块,具体用于 根据所述排序子模块中排序后的各个索引项的顺序,设置索引项集合中除了设置为第一优先级的索引项的其他索弓I项的优先级。
9.根据权利要求8所述的装置,其特征在于,所述判断模块包括 获取子模块,用于获取所述待匹配规则的数量为N,以及第η个待匹配规则的索引项数量为Mn,所述η为不大于N的自然数; 第一判断子模块,用于在第η个规则的索引项数量Mn等于I的情况下,判断所述事件中是否存在一个属性值与所述第η个规则的一个索引项匹配。
10.根据权利要求8所述的装置,其特征在于,所述判断模块包括 获取子模块,用于获取所述待匹配规则的数量为N,以及第η个待匹配规则的索引项数量为Mn,所述η为不大于N的自然数; 第二判断模块,用于在第η个规则的索引项数量Mn大于I的情况下,判断所述事件中是否存在一个属性值与所述第η个规则的第一优先级索引项匹配; 第三判断子模块,用于所述第二判断子模块的结果为是时,根据第一优先级索引项与第二优先级索引项的对应关系,确定所述第η个规则的第二优先级索引项,并判断所述事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在所述事件中的一个属性值与所述第η个规则的第Mn优先级索引项匹配。
全文摘要
本发明实施例公开了一种实现基于规则引擎的规则匹配方法和装置,该方法具体为,接收需要匹配的事件,所述事件包括至少一个属性值;判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;如果是,则确定匹配的索引项所对应的目标待匹配规则;对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。本发明利用索引来进行需要匹配的规则的筛选,使得在需要规则匹配时,减少了需要匹配的规则的数量,提高了规则引擎的性能以及规则匹配的效率。
文档编号G06F17/30GK102968309SQ20121050730
公开日2013年3月13日 申请日期2012年11月30日 优先权日2012年11月30日
发明者林强 申请人:亚信联创科技(中国)有限公司