著录项信息
专利名称 | 一种实现基于规则引擎的规则匹配方法和装置 |
申请号 | CN201210507303.3 | 申请日期 | 2012-11-30 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2013-03-13 | 公开/公告号 | CN102968309A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/44 | IPC分类号 | G;0;6;F;9;/;4;4;;;G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 亚信联创科技(中国)有限公司 | 申请人地址 | 北京市海淀区西北旺东路10号院东区亚信联创全球总部研发中心大楼
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 亚信科技(中国)有限公司 | 当前权利人 | 亚信科技(中国)有限公司 |
发明人 | 林强 |
代理机构 | 北京集佳知识产权代理有限公司 | 代理人 | 王宝筠 |
摘要
本发明实施例公开了一种实现基于规则引擎的规则匹配方法和装置,该方法具体为,接收需要匹配的事件,所述事件包括至少一个属性值;判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;如果是,则确定匹配的索引项所对应的目标待匹配规则;对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。本发明利用索引来进行需要匹配的规则的筛选,使得在需要规则匹配时,减少了需要匹配的规则的数量,提高了规则引擎的性能以及规则匹配的效率。
1.一种实现基于规则引擎的规则匹配方法,其特征在于,所述方法包括,接收需要匹配的事件,所述事件包括至少一个属性值;
判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;
如果是,则确定匹配的索引项所对应的目标待匹配规则;
对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配;
所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配之前,还包括:
按照预设排序规则对任一所述规则预设的索引项集合进行排序;
根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级;
所述按照预设排序规则对任一所述规则预设的索引项集合进行排序,具体为:
将任一相等关系的索引项设置为第一优先级;
将所述索引项集合中除了设置为第一优先级的索引项的其他索引项,按照预设顺序规则进行排序;
相应的,所述根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级,具体为:
根据排序后的各个索引项的顺序,设置索引项集合中除了设置为第一优先级的索引项的其他索引项的优先级。
2.根据权利要求1所述的方法,其特征在于,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,具体为:
所述待匹配规则的数量为N,则第n个待匹配规则的索引项数量为Mn,所述n为不大于N的自然数;
如果第n个规则的索引项数量Mn等于1,则判断所述事件中是否存在一个属性值与所述第n个规则的一个索引项匹配。
3.根据权利要求1所述的方法,其特征在于,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,具体为:
所述待匹配规则数量为N,则第n个待匹配规则的索引项数量为Mn,所述n为不大于N的自然数;
如果第n个规则的索引项数量Mn大于1,则判断所述事件中是否存在一个属性值与所述第n个规则的第一优先级索引项匹配;
如果是,则根据第一优先级索引项与第二优先级索引项的对应关系,确定所述第n个规则的第二优先级索引项,并判断所述事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在所述事件中的一个属性值与所述第n个规则的第Mn优先级索引项匹配。
4.一种实现基于规则引擎的规则匹配装置,其特征在于,所述装置包括:
接收模块,用于接收需要匹配的事件,所述事件包括至少一个属性值;
判断模块,用于判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;
第一确定模块,用于在所述判断模块的结果为是时,确定匹配的索引项所对应的目标待匹配规则;
匹配模块,用于对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配;
所述装置还包括:
排序模块,用于按照预设排序规则对任一所述规则预设的索引项集合进行排序;
第一设置模块,用于根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级;
所述排序模块包括:
第二设置模块,用于将任一相等关系的索引项设置为第一优先级;
排序子模块,用于将所述索引项集合中除了设置为第一优先级的索引项的其他索引项,按照预设顺序规则进行排序;
相应的,所述第一设置模块,具体用于:
根据所述排序子模块中排序后的各个索引项的顺序,设置索引项集合中除了设置为第一优先级的索引项的其他索引项的优先级。
5.根据权利要求4所述的装置,其特征在于,所述判断模块包括:
获取子模块,用于获取所述待匹配规则的数量为N,以及第n个待匹配规则的索引项数量为Mn,所述n为不大于N的自然数;
第一判断子模块,用于在第n个规则的索引项数量Mn等于1的情况下,判断所述事件中是否存在一个属性值与所述第n个规则的一个索引项匹配。
6.根据权利要求4所述的装置,其特征在于,所述判断模块包括:
获取子模块,用于获取所述待匹配规则的数量为N,以及第n个待匹配规则的索引项数量为Mn,所述n为不大于N的自然数;
第二判断模块,用于在第n个规则的索引项数量Mn大于1的情况下,判断所述事件中是否存在一个属性值与所述第n个规则的第一优先级索引项匹配;
第三判断子模块,用于所述第二判断子模块的结果为是时,根据第一优先级索引项与第二优先级索引项的对应关系,确定所述第n个规则的第二优先级索引项,并判断所述事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在所述事件中的一个属性值与所述第n个规则的第Mn优先级索引项匹配。
一种实现基于规则引擎的规则匹配方法和装置\n技术领域\n[0001] 本发明涉及数据匹配技术领域,具体涉及一种实现基于规则引擎的规则匹配方法和装置。\n背景技术\n[0002] 规则引擎是一种嵌入到应用程序中的组件,大多数规则引擎都支持简单脚本语言的规则实现,支持通用开发语言的嵌入开发。规则引擎实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策,应用程序通过向规则引擎提交数据或者对象来触发规则引擎,由规则引擎来调用相应的规则,进而触发相应的操作。通常一个规则包含一组规则条件和在此规则条件下执行的操作,当且仅当该规则中的所有规则条件都匹配成功时,规则引擎将会触发此规则下的所有操作执行。\n[0003] 因此,当规则数量较多时,使用现有技术进行规则匹配,对于每个规则的所有规则条件都需要匹配成功,才能匹配到所需规则。\n[0004] 目前,在规则数量较多的情况下,通过匹配每个规则的所有规则条件来查找出需要匹配的规则的方法,使得在查找需要匹配的规则的过程中需要判断是否匹配的规则较多,一定程度上降低了规则引擎的性能,使得规则匹配的效率较低。\n发明内容\n[0005] 为了解决规则匹配的效率低的问题,本发明提供了一种实现基于规则引擎的规则匹配方法和装置。\n[0006] 本发明提供了一种实现基于规则引擎的规则匹配方法,所述方法包括,[0007] 接收需要匹配的事件,所述事件包括至少一个属性值;\n[0008] 判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;\n[0009] 如果是,则确定匹配的索引项所对应的目标待匹配规则;\n[0010] 对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。\n[0011] 优选地,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配之前,还包括:\n[0012] 按照预设排序规则对任一所述规则预设的索引项集合进行排序;\n[0013] 根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级。\n[0014] 优选地,所述按照预设排序规则对任一所述规则预设的索引项集合进行排序,具体为;\n[0015] 将任一相等关系的索引项设置为第一优先级;\n[0016] 将所述索引项集合中除了设置为第一优先级的索引项的其他索引项,按照预设顺序规则进行排序;\n[0017] 相应的,所述根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级,具体为:\n[0018] 根据排序后的各个索引项的顺序,设置索引项集合中除了设置为第一优先级的索引项的其他索引项的优先级。\n[0019] 优选地,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,具体为:\n[0020] 假设所述待匹配规则的数量为N,则第n个待匹配规则的索引项数量为Mn,所述n为不大于N的自然数;\n[0021] 如果第n个规则的索引项数量Mn等于1,则判断所述事件中是否存在一个属性值与所述第n个规则的一个索引项匹配。\n[0022] 优选地,所述判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,具体为:\n[0023] 假设所述待匹配规则数量为N,则第n个待匹配规则的索引项数量为Mn,所述n为不大于N的自然数;\n[0024] 如果第n个规则的索引项数量Mn大于1,则判断所述事件中是否存在一个属性值与所述第n个规则的第一优先级索引项匹配;\n[0025] 如果是,则根据第一优先级索引项与第二优先级索引项的对应关系,确定所述第n个规则的第二优先级索引项,并判断所述事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在所述事件中的一个属性值与所述第n个规则的第Mn优先级索引项匹配。\n[0026] 本发明还提供一种实现基于规则引擎的规则匹配装置,所述装置包括:\n[0027] 接收模块,用于接收需要匹配的事件,所述事件包括至少一个属性值;\n[0028] 判断模块,用于判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;\n[0029] 第一确定模块,用于在所述判断模块的结果为是时,确定匹配的索引项所对应的目标待匹配规则;\n[0030] 匹配模块,用于对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。\n[0031] 优选地,所述装置还包括:\n[0032] 排序模块,用于按照预设排序规则对任一所述规则预设的索引项集合进行排序;\n[0033] 第一设置模块,用于根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级。\n[0034] 优选地,所述排序模块包括:\n[0035] 第二设置模块,用于将任一相等关系的索引项设置为第一优先级;\n[0036] 排序子模块,用于将所述索引项集合中除了设置为第一优先级的索引项的其他索引项,按照预设顺序规则进行排序;\n[0037] 相应的,所述第一设置模块,具体用于:\n[0038] 根据所述排序子模块中排序后的各个索引项的顺序,设置索引项集合中除了设置为第一优先级的索引项的其他索引项的优先级。\n[0039] 优选地,所述判断模块包括:\n[0040] 获取子模块,用于获取所述待匹配规则的数量为N,以及第n个待匹配规则的索引项数量为Mn,所述n为不大于N的自然数;\n[0041] 第一判断子模块,用于在第n个规则的索引项数量Mn等于1的情况下,判断所述事件中是否存在一个属性值与所述第n个规则的一个索引项匹配。\n[0042] 优选地,所述判断模块包括:\n[0043] 获取子模块,用于获取所述待匹配规则的数量为N,以及第n个待匹配规则的索引项数量为Mn,所述n为不大于N的自然数;\n[0044] 第二判断模块,用于在第n个规则的索引项数量Mn大于1的情况下,判断所述事件中是否存在一个属性值与所述第n个规则的第一优先级索引项匹配;\n[0045] 第三判断子模块,用于所述第二判断子模块的结果为是时,根据第一优先级索引项与第二优先级索引项的对应关系,确定所述第n个规则的第二优先级索引项,并判断所述事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在所述事件中的一个属性值与所述第n个规则的第Mn优先级索引项匹配。\n[0046] 与现有技术相比,本发明首先接收需要匹配的事件,所述事件包括至少一个属性值;判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;如果是,则确定匹配的索引项所对应的目标待匹配规则;对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。本发明利用索引来进行需要匹配的规则的筛选,使得在需要规则匹配时,减少了需要匹配的规则的数量,提高了规则引擎的性能以及规则匹配的效率。\n附图说明\n[0047] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。\n[0048] 图1为本发明实施例一的实现基于规则引擎的规则匹配方法的流程图;\n[0049] 图2为本发明实施例二的实现基于规则引擎的规则匹配方法的流程图;\n[0050] 图3为本发明实施例三的实现基于规则引擎的规则匹配装置的结构图;\n[0051] 图4为本发明实施例三的排序模块302的装置结构图;\n[0052] 图5为本发明实施例三的在规则的索引项数量等于1时的判断模块304结构图;\n[0053] 图6为本发明实施例三的在规则的索引项数量大于1时的判断模块304结构图。\n具体实施方式\n[0054] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。\n[0055] 实施例一、\n[0056] 参考图1,图1为本发明提供的一种实现基于规则引擎的规则匹配方法实施例一的流程图,本实施例具体可以包括:\n[0057] 步骤101、接收需要匹配的事件,所述事件包括至少一个属性值。\n[0058] 本领域中,规则引擎通过接收事件被触发,进而根据接收的事件来调用相应的规则与事件进行匹配,如果匹配成功,则触发此匹配成功的规则所能够触发的所有操作。本实施例主要解决了如何根据接收到的事件,在存储所有规则的规则列表中匹配到与该事件对应的规则。\n[0059] 本实施例中,首先接收需要匹配的事件,事件可以理解为“被控件识别的操作”,此处所说的事件可以包括一个属性值,也可以包括多个属性值,所述事件的任意一个属性值可以与规则的任一规则条件相匹配。例如,任一事件可以为“红色信号灯亮了”,此时“红色信号灯亮了”为该事件的一个属性值,可以与任一规则的规则条件相匹配;任一事件也可以为“红色信号灯亮了,同时绿色信号灯也亮了”,其中,“红色信号灯亮了”“绿色信号灯也亮了”分别为该事件的属性值,上述两个事件的属性值也可以与任一规则的两个规则条件相匹配。\n[0060] 实际操作中,接收需要匹配事件的方式很多,属于现有技术,所以在此不再赘述,同时接收需要匹配的事件的方式不影响本实施例的实施。\n[0061] 步骤102、判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,如果是,则进入步骤103。\n[0062] 本实施例中,每个待匹配的规则包括若干规则条件,例如,“如果红色信号灯亮了,同时绿色信号灯也亮了,则会触发A程序自动运行”为一条规则,其中,“红色信号灯亮了”和“绿色信号灯也亮了”分别为其中的规则条件,“触发A程序自动运行”为该规则的规则条件均被匹配成功时被触发的操作。首先预先将每个待匹配规则的符合索引项设置条件的规则条件设置为索引项,例如,可以将“红色信号灯亮了”设置为索引项。其次,将接收到的事件的属性值与设置的索引项相匹配,例如,如果接收的事件中的任一属性值为“红色信号灯亮了”,那么该属性值能够与被设置为索引项的“红色信号灯亮了”这一规则条件匹配成功,总之,如果事件中的属性值能与任意一个规则所设置的所有索引项匹配,则进入步骤103。\n[0063] 具体的,索引项设置条件可以为“相等关系”的规则条件,例如,如果某个规则的一个规则条件为“年龄等于20”,则可以将“年龄等于20”这一规则条件设置为该规则的索引项。\n[0064] 实际操作中,每个待匹配规则可以设置一个索引项,也可以设置多个索引项。\n[0065] 具体的,根据“相等关系”的设置条件设置的索引项为“年龄等于20”时,如果接收的事件中的一个属性值也为“年龄等于20”,那么,作为事件属性值的“年龄等于20”可以与作为索引项的“年龄等于20”相匹配。\n[0066] 值得注意的是,实际操作中,通常规则索引项的第一优先级索引项被设置为具有“相等关系”规则条件,除第一优先级以外的其他优先级索引项可以被设置为具有“相等关系”或者“不等关系”的规则条件。\n[0067] 如果不存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,则说明没有与接收的事件相匹配的规则。\n[0068] 步骤103、确定匹配的索引项所对应的目标待匹配规则。\n[0069] 本实施例中,所有索引项都被匹配的待匹规则都被作为目标待匹配规则,例如,如果一个规则的索引项为“年龄大于18”,同时另一个规则的索引项为“年龄等于20”,并且接收的事件的一个属性值为“年龄大于18”,那么作为该事件的一个属性值的“年龄大于18”与分别作为两个规则的索引项的“年龄大于18”和“年龄等于20”均能匹配,说明被匹配了所有索引项的上述两个规则均被作为目标待匹配规则,用于后续步骤的规则条件的进一步匹配。\n[0070] 步骤104、对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。\n[0071] 本实施例中,将确定了的目标待匹配规则的规则条件与接收到的事件中的属性值进行匹配。\n[0072] 实际操作中,本实施例可以将确定了的目标待匹配规则的所有规则条件与接收到的事件中的所有属性值相匹配,如果完全匹配成功,说明该目标待匹配规则与接收到的事件匹配成功,否则,匹配失败。\n[0073] 实际操作中,本实施例也可以将目标待匹配规则的除了已经匹配成功的索引项部分的其他规则条件与接收到的事件中的除匹配成功的属性值以外的其他属性值相匹配,如果匹配成功,则说明该目标待匹配规则与接收到的事件匹配成功,否则,匹配失败。例如,假设一个规则的规则条件为“红色信号灯亮了”和“绿色信号灯也亮了”,如果将上述的“红色信号灯亮了”这一规则条件作为索引项,在接收的事件的一个属性值也为“红色信号灯亮了”的情况下,可以确定上述规则的被作为索引项的“红色信号灯亮了”这一规则条件与接收的事件的一个属性值匹配成功,此时想要达到上述规则被匹配成功的目的,只需将除了“红色信号灯亮了”之外的未匹配成功的“绿色信号灯也亮了”索引规则与接收的事件的其他属性值匹配成功即可。\n[0074] 本实施例首先接收需要匹配的事件,所述事件包括至少一个属性值,其次判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;如果是,则确定匹配的索引项所对应的目标待匹配规则,最后对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。与现有技术相比,本实施例利用索引来进行需要匹配的规则的筛选,使得在需要规则匹配时,减少了需要匹配的规则的数量,提高了规则引擎的性能以及规则匹配的效率。\n[0075] 实施例二、\n[0076] 参考图2,图2为本发明提供的一种实现基于规则引擎的规则匹配方法实施例二的流程图,由于实施例二中的步骤201和步骤205~206与实施例一中的步骤101、步骤\n103~104相同,所以在本实施例中不再对其赘述。\n[0077] 本实施例具体可以包括:\n[0078] 步骤201、接收需要匹配的事件,所述事件包括至少一个属性值。\n[0079] 步骤202、按照预设排序规则对任一所述规则预设的索引项集合进行排序。\n[0080] 本实施例中,首先设置各个规则的索引项,将各个规则的索引项分别作为其对应的索引项集合,其次设置将索引项排序的排序规则,最后,按照预先设置的排序规则,将各个规则对应的索引项集合进行排序。\n[0081] 具体的,预先设置的排序顺序可以是将“等于关系”的规则索引项设置为高优先级。例如,假设一个规则的规则条件为“年龄等于20”和“身高大于170”,则可以按照“等于关系”为高优先级的索引项设置条件,将“年龄等于20”这一“等于关系”的规则条件设置为索引项。\n[0082] 步骤203、根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级。\n[0083] 本实施例中,根据预先设置的用于排序的排序规则对索引项集合进行排序,按照排序后的索引项顺序,对索引项进行优先级设置。\n[0084] 具体的,位于索引项顺序中的前面位置的索引项可以设置为较高优先级。例如,一个规则的索引项集合包括A、B、C和D四个索引项,其根据预设的排序规则排序后为B、C、A、D的顺序,那么优先级顺序即为B>C>A>D。\n[0085] 具体的,上述规则的索引项集合中的B索引项为第一优先级索引项,第一优先级索引项可以为“相等关系”的规则条件,在实施例一中的步骤102中已详细介绍,在此不再赘述。同时该索引项集合中的C、A和D索引项分别为第二、三、四级索引项,它们可以为“相等关系”的规则条件,也可以为“不相等”关系的规则条件,例如,如果某条规则的一个规则条件为“年龄大于20”,则也可以将“年龄大于20”设置为该规则的第二、三或四级索引项。\n[0086] 步骤204、判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配,如果是,则进入步骤205。\n[0087] 本实施例中,假设待匹配规则的数量为N,则第n个待匹配规则的索引项数量为Mn,此n为不大于N的自然数;\n[0088] 如果第n个规则的索引项数量Mn等于1,则判断接收的事件中是否存在一个属性值与该第n个规则的一个索引项匹配,如果存在,则进入步骤205。\n[0089] 如果第n个规则的索引项数量Mn大于1,则判断接收的事件中是否存在一个属性值与所述第n个规则的第一优先级索引项匹配,如果存在,则根据第一优先级索引项与第二优先级索引项的对应关系,确定该第n个规则的第二优先级索引项,并判断接收的事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在接收的事件中的一个属性值与所述第n个规则的第Mn优先级索引项匹配。\n[0090] 值得注意的是,本实施例中的N、n和Mn均取自然数。\n[0091] 下面以n=5、Mn=2的规则为例:\n[0092] 参考表1、表2,表1为第5个规则的第一优先级的索引项与第二优先级的索引项的对应表,表2为第5个规则的第二优先级的索引项与规则标识的对应表。\n[0093] 假设规则引擎接收的事件的属性值为“年龄等于20”“身高大于170”以及“本科学历”。首先,通过规则引擎的处理,作为第一优先级的“年龄等于20”与作为接收的事件的一个属性值的“年龄等于20”能够相匹配。其次,参考表1,通过第一优先级索引项与第二优先级索引项的对应关系,确定与已匹配成功的第一优先级索引项对应的第二优先级索引项。再次,判断接收的事件中除了与第一优先级索引项匹配成功的属性值以外的其他属性值是否有与第二优先级索引相相匹配的,对于此时规则引擎接收的事件中的“身高大于\n170”属性值正好与该规则的第二优先级索引项“身高大于170”相匹配。最后,参考表2,通过第二优先级索引项与规则标识的对应关系,确定与已匹配成功的第二优先级索引项对应的规则标识,进而便于后续步骤中的完全被匹配的规则的确定。\n[0094] 表1\n[0095] \n第一优先级索引项 第二优先级索引项\n年龄等于20 身高大于170\n[0096] 表2\n[0097] \n第二优先级索引项 规则标识\n身高大于170 第5个规则\n[0098] 其中,表1和表2中为了方便起见,只列出了能体现本发明的思想且能实现本发明的最少的数据,在实际应用中,本领域技术人员可以依据表1和表2的结构形式对数据进行扩展。\n[0099] 还需要说明的是,本发明实施例中涉及具体数据的例子,都是为了方便本领域技术人员理解本发明而设置的,这些数据并不能被认为对是本发明的限制。\n[0100] 步骤205、确定匹配的索引项所对应的目标待匹配规则。\n[0101] 步骤206、对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。\n[0102] 本实施例将索引项排序,利用排序后的索引来进行需要匹配的规则的筛选,使得在需要规则匹配时,减少了需要匹配的规则的数量,提高了规则引擎的性能以及规则匹配的效率。\n[0103] 实施例三、\n[0104] 参考图3,图3为本发明提供的一种实现基于规则引擎的规则匹配装置实施例三的装置结构图,本实施例具体可以包括:\n[0105] 接收模块301,用于接收需要匹配的事件,所述事件包括至少一个属性值;\n[0106] 排序模块302,用于按照预设排序规则对任一所述规则预设的索引项集合进行排序;\n[0107] 参考图4,图4为排序模块302的结构图,排序模块302具体包括:\n[0108] 第二设置模块401,用于将任一相等关系的索引项设置为第一优先级;\n[0109] 排序子模块402,用于将所述索引项集合中除了设置为第一优先级的索引项的其他索引项,按照预设顺序规则进行排序;\n[0110] 第一设置模块303,用于根据排序后的各个索引项的顺序,设置索引项集合中各个索引项的优先级。\n[0111] 在所述排序模块302采用图4的结构实现时,所述第一设置模块303用于根据所述排序子模块402中排序后的各个索引项的顺序,设置索引项集合中除了设置为第一优先级的索引项的其他索引项的优先级。\n[0112] 判断模块304,用于判断是否存在任一待匹配规则预设的索引项与所述事件中的属性值匹配;\n[0113] 参考图5,图5为规则的索引项数量等于1时的判断模块304结构图,所述判断模块304具体包括:\n[0114] 获取子模块501,用于获取所述待匹配规则的数量为N,以及第n个待匹配规则的索引项数量为Mn;\n[0115] 第一判断子模块502,用于在第n个规则的索引项数量Mn等于1的情况下,判断所述事件中是否存在一个属性值与所述第n个规则的一个索引项匹配。\n[0116] 参考图6,图6为规则的索引项数量大于1时的判断模块304结构图,所述判断模块304具体包括:\n[0117] 获取子模块501,用于获取所述待匹配规则的数量为N,以及第n个待匹配规则的索引项数量为Mn;\n[0118] 第二判断模块601,用于在第n个规则的索引项数量Mn大于1的情况下,判断所述事件中是否存在一个属性值与所述第n个规则的第一优先级索引项匹配;\n[0119] 第三判断子模块602,用于所述第二判断子模块的结果为是时,根据第一优先级索引项与第二优先级索引项的对应关系,确定所述第n个规则的第二优先级索引项,并判断所述事件中是否存在一个属性值与所述第二优先级索引项匹配,依此类推,直到判断是否存在所述事件中的一个属性值与所述第n个规则的第Mn优先级索引项匹配。\n[0120] 第一确定模块305,用于在所述判断模块的结果为是时,确定匹配的索引项所对应的目标待匹配规则;\n[0121] 匹配模块306,用于对所述目标待匹配规则的规则条件与所述事件中的属性值进行匹配。\n[0122] 本实施例利用排序后的索引来进行需要匹配的规则的筛选,使得在需要规则匹配时,减少了需要匹配的规则的数量,提高了规则引擎的性能以及规则匹配的效率。\n[0123] 对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。\n[0124] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。\n[0125] 以上对本发明实施例所提供的实现基于规则引擎的规则匹配方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
法律信息
- 2016-01-20
- 2014-11-19
著录事项变更
申请人由亚信科技(中国)有限公司变更为亚信科技(中国)有限公司
地址由100086 北京市海淀区中关村南大街6号中电信息大厦三、四层变更为100193 北京市海淀区西北旺东路10号院东区亚信联创全球总部研发中心大楼
- 2014-10-15
著录事项变更
申请人由亚信联创科技(中国)有限公司变更为亚信科技(中国)有限公司
地址由100086 北京市海淀区中关村南大街6号中电信息大厦三、四层变更为100086 北京市海淀区中关村南大街6号中电信息大厦三、四层
- 2013-04-10
实质审查的生效
IPC(主分类): G06F 9/44
专利申请号: 201210507303.3
申请日: 2012.11.30
- 2013-03-13
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-01-10
|
2004-08-27
| | |
2
| |
2012-10-10
|
2012-05-17
| | |
3
| |
2012-03-14
|
2010-08-24
| | |
4
| |
2012-04-25
|
2010-12-17
| | |
5
| |
2011-07-27
|
2010-08-06
| | |
6
| |
2011-08-10
|
2010-02-05
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2016-12-05 | 2016-12-05 | | |
2 | | 2016-12-05 | 2016-12-05 | | |