分布式规则引擎系统、构造方法和执行规则处理的方法_2

文档序号:8361483阅读:来源:国知局
2),(规则3,规则4)}
[0044]组合2: {(规则I,规则3),(规则2,规则4)}
[0045]组合3: {(规则I,规则4),(规则2,规则3)}
[0046]组合4: {(规则I),(规则2,规则3,规则4)}
[0047]组合5: {(规则2),(规则I,规则3,规则4)}
[0048]组合6: {(规则3),(规则I,规则2,规则4)}
[0049]组合7: {(规则4),(规则I,规则2,规则3)}
[0050]如果分别按照以上几种不同的组合来构造分布式规则引擎,每一种组合所获得的规则引擎的执行效率将有显著差别。因为可以比较明显地看出组合4-7的情况不会比组合1-3的执行效率更好,下面只对组合1-3的情况进行比较。
[0051]图1是例示如组合I所示将规则I和规则2分配到同一规则引擎(规则引擎1),而将规则3和规则4分配到另一规则引擎(规则引擎2)的场景的Rete网络的示意图。图2是例示如组合2所示将规则I和规则3分配到同一规则引擎,而将规则2和规则4分配到另一规则引擎的场景的Rete网络的示意图。图3是例示如组合3所示将规则I和规则4分配到同一规则引擎,而将规则2和规则3分配到另一规则引擎的场景的Rete网络的示意图。
[0052]如图1所示,在组合I的Rete网络中,仅有模式Cl对应的alpha节点无法共享。而如图2所示,在组合2的Rete网络中,除了模式Cl对应的alpha节点,还有模式C2、C3、C6和C7的alpha节点无法共享。如图3所示,在组合3中,与组合2中情况相同,模式Cl、C2、C3、C6和C7的alpha节点都无法共享。因此,在组合1_3中的Rete网络中可以看出,组合I可以在每个规则引擎内最大程度上共享alpha和beta节点存储的部分匹配结果。
[0053]具体分析后发现,规则I和规则2具有相同的模式C1~C2~C3,而规则3和规则4具有相同的模式C6~C7。这两个模式是所有这四条规则中包含的最长的两条共同的模式。换句话说,规则I和规则2中的模式具有较高的相似度,而规则3和规则4中的模式具有较高的相似度。
[0054]基于以上发现,这样来构造根据本公开的分布式规则引擎系统,使得该系统包括至少一个这样的规则引擎:该规则引擎中部署有Rete网络,Rete网络与一个或多个规则集相关联;其中,包括在相同规则集中的规则的条件侧所包括的模式彼此相似。这里,Rete网络与规则集“相关联”的含义是:Rete网络中的alpha和beta节点与规则集中各规则条件侧的各模式或模式组合相对应。或者说,Rete网络根据该一个或多个规则集编译而成。
[0055]规则集中的规则的条件侧所包括的模式彼此相似,使得能够在规则引擎内共享alpha和beta节点存储的部分存储结果,从而提高规则引擎的效率。规则的条件侧所包括的模式的相似度越高,能够越充分地在规则引擎内共享alpha和beta节点存储的部分存储结果,因而,使得规则引擎的执行效率越高。
[0056]与根据本公开的分布式规则引擎系统相对应地,还公开了构造该分布式引擎系统的方法。图4是例示根据本公开实施例的分布式引擎构造方法的流程图。
[0057]在步骤S401中,将条件侧所包括的模式彼此相似的规则划分到相同的规则集。可以根据需要采用各种方式来比较规则的条件侧所包含的模式的相似度。下面,仅以一种方法为例进行说明。
[0058]例如,可以在进行划分之前对规则的条件侧所包含的模式进行预处理。具体地,可以首先从规则的条件侧提取出各模式。然后,根据提取的模式得到与该规则对应的二进制串,以根据得到的二进制串进行划分。可以使二进制串的每一位对应一个模式。其中,I表示相应模式存在于规则中,O表示相应模式不存在于规则中。可以使得二进制串的长度等于待划分的所有规则包含的所有模式的数量。
[0059]在经过以上预处理得到了每一位与模式相对应的二进制串之后,可以将条件侧所包含的模式之间的相似度最高的规则划分到相同集合中。图5中以上面提到的示例规则列表(规则1-4)为例,示出了对规则条件侧的模式进行特征抽取,以得到对应二进制串,然后进行划分的示例。
[0060]如图5所示,与规则I和2对应的二进制串与模式Cl至C3相对应的位的值都为1,而与规则3和4对应的二进制串与模式C6和C7相对应的位的值都为I。经过观察可知,规则I与规则2的条件侧模式彼此相似,因而划分到规则集合I ;而规则3与规则4的条件侧模式彼此相似,因而划分到规则集合2。
[0061]可以通过二进制串的对应位之间的逻辑运算来计算条件侧所包含的模式之间的相似度。然后,可以将模式的相似度较高的规则(即,模式彼此相似的规则)尽可能地划分到一个集合中。
[0062]然后,处理进行到步骤S402。在步骤S402中,将通过划分得到的每一个规则集关联到系统的规则引擎之一。
[0063]下面结合图6来描述依据模式相似度分配规则的方法的例子。图6是例示根据本公开实施例的根据模式的相似度为规则引擎分配规则的方法的流程图。
[0064]下面,假设规则的数量为N,规则引擎的数量为K,其中N大于K。在图6的步骤S601中,对所有规则对应的二进制串两两进行按位“异或”操作,找出使得“异或”操作结果中含I的个数最多的两条二进制串对应的规则作为两个初始的集合中心。换句话说,在步骤S601中,首先找出所有规则中规则的条件侧的模式的相似度最小的两个规则,作为两个初始规则集合的聚集基准。
[0065]当找到两个规则集合的中心后,在步骤S602中,确定引擎的数量K是否大于2。当确定为K大于2时,处理进入步骤S603。当确定为K不大于2,即K等于2时,处理进入到后面详细说明的步骤S605。
[0066]在步骤S603中,继续寻找另外的规则集合的中心。具体地,例如,可以依据对在步骤S602中找到的作为集合中心的规则之外的规则所对应的二进制串与已经在步骤S602中得到的两个集合中心对应的二进制串进行按位“异或”操作的结果,找出使得“异或”操作结果中含I的个数最多的二进制串对应的非集合中心的规则作为新的集合中心。然后,处理进行到步骤S604。
[0067]在步骤S604中,确定已找到的作为规则集合的中心的规则的个数是否等于K。
[0068]如果不等于K,则处理返回到步骤S603,依据对所有不是集合中心的规则对应的二进制串与已经得到的所有集合中心对应的二进制串进行按位“异或”操作的结果,找出使得“异或”操作结果中含I的个数最多的二进制串对应的非集合中心的规则作为新的集合中心。直到在步骤S604中确定已找到的作为规则集合的中心的规则的个数等于K。
[0069]步骤S603中对新的集合中心的确定可以不必再次进行“异或”操作,而是读取存储器中存储的在步骤S601中获得的“异或”操作的结果。
[0070]当在步骤S604中确定为作为集合中心的规则个数等于K时,处理进行到步骤S605。在步骤S605中,对每个不在任意组中的规则,将其对应的二进制串与每个集合中心对应的二进制串进行按位“与”操作,找出使得“与”操作结果中含I的个数最多的集合中心,将该规则加入到该集合中。然后,对该集合中包含的所有规则对应的二进制串进行按位“或”操作,将“或”操作得到的二进制串作为该集合中心新的对应的二进制串。然后,步骤进行至Ij S606。
[0071]在步骤S606中,确定是否所有规则都被划分到规则集合中。如果尚有规则未被划分到集合中,则处理返回到步骤S605,继续在K个集合之间分发规则。如果所有规则都应经被划分到规则集合中,则处理进入到步骤S607。
[0072]在步骤S607中,将划分所获得的相同集合中的规则关联到相同的规则引擎中。然后,处理结束。
[0073]现在返回图4,继续说明根据本公开实施例的分布式规则引擎构造方法在为规则引擎分配了适当的规则后的后续操作。在为规则引擎分配了适当的规则后,在步骤S403中,将与相同规则引擎关联的所有规则集中的规则编译成Rete网络并在规则引擎中进行部署。可以使用本领域已知的各种方法来编译Rete网络,并进行部署。
[0074]通过使用上面描述的分布式规则引擎构造方法构造的分布式规则引擎系统,由于其规则引擎关联的至少一个规则集中的规则的条件侧所包括的模式彼此相似,因而能够在规则引擎内部通过alpha或beta节点共享部分匹配结果。从而,提高了系统的效率。
[0075]在规则引擎内部,可以构造有用于将事实布置到适当的alpha节点的alpha网络,下文中称为内部alpha网络(“第二级alpha网络”的示例)。在分布式规则引擎系统中,还需要考虑如何将事实布置到适当的规则引擎。在根据本公开实施例的分布式规则引擎系统中,在单独的规则引擎之外,构造用于将事实布置到适当的规则引擎的外部alpha网络(“第一级alpha网络”的示例)。
[0076]此外,可以在规则引擎内部构造有用于解决规则引擎内的冲突的agenda,下文中称为内部agenda (“第一级agenda”的示例)。在单个规则引擎中同时激活了多个规则时,将该多个冲
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1