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

文档序号:8361483阅读:1031来源:国知局
分布式规则引擎系统、构造方法和执行规则处理的方法
【技术领域】
[0001]本公开一般地涉及分布式规则引擎,尤其涉及一种能够在单个规则引擎内最大程度地共享部分匹配结果的分布式规则引擎系统、其构造方法以及使用该分布式规则引擎系统执行规则处理的方法。
【背景技术】
[0002]当前,在生产等领域通过规则的形式来表示生产或业务逻辑。通过利用计算机技术,使用规则引擎来逐轮地对事实和条件进行模式匹配,以找出满足条件的规则,并在解决冲突之后选择满足条件的规则中的一条规则来执行。当前,Rete是规则引擎中最重要的模式匹配算法之一。
[0003]随着业务的发展,规则的规模将不可避免地增大。这时,单个规则引擎由于资源(例如内存、CPU处理能力等)的限制将无法处理这些大规模的规则。传统的分布式规则引擎将规则分发到多个规则引擎之上进行并行处理可以解决此问题。
[0004]然而,传统的分布式规则引擎,例如ViDRE (Vienna分布式规则引擎)仅仅通过SOA(面向服务架构,Service-Oriented Architecture)和 RuleML (规则标记语言,RuleMarkup Language)解决了规则引擎之间的互操作问题,而并没有考虑如何在各个规则引擎内部最大程度地通过alpha或beta节点共享部分匹配结果。因此,传统的分布式规则引擎系统及其构造和使用方法无法基于Rete算法提高执行效率。

【发明内容】

[0005]鉴于存在的问题,本公开的目的是提供一种新型并改进的,能够使各个规则引擎内部最大程度地通过alpha或beta节点共享模式匹配结果的分布式规则引擎系统、分布式规则引擎构造方法以及规则处理方法。
[0006]根据本公开的一个方面,提供一种分布式规则引擎系统。该系统包括至少一个这样的规则引擎:该规则引擎中部署有Rete网络,Rete网络与一个或多个规则集相关联;其中,包括在相同规则集中的规则的条件侧所包括的模式彼此相似。
[0007]该分布式规则引擎系统中的每一个规则引擎被分配的规则中至少一部分的条件侧所包含的模式可以具有较高的相似度。换句话说,在本公开中,使得同一规则引擎中的至少一部分规则的条件部分的模式尽可能相同。使用Rete算法,这些相同的模式将被用于构件共享的节点,以在规则执行之时共享部分匹配结果。因此,能有效地提高分布式规则引擎的执行效率。
[0008]在根据本公开的实施例中,分布式规则引擎系统可以包括:第一级alpha网络,其构造在单独的规则引擎之外,用于将事实布置到适当的规则引擎;以及第二级alpha网络,其构造在单独的规则引擎之内,用于将事实布置到适当的alpha节点。
[0009]双层alpha网络的建立不仅保证能够将事实布置到正确的alpha节点,而且使得能够将事实布置到正确的规则引擎中。
[0010]在根据本公开的实施例中,第一级和/或第二级alpha网络可以使用哈希方法来布置事实。
[0011]在根据本公开的实施例中,第一级和/或第二级alpha网络可以根据事实的属性名称来布置事实。
[0012]在根据本公开的实施例中,第一级和/或第二级alpha网络可以根据事实的属性的值来布置事实。
[0013]在根据本公开的实施例中,分布式规则引擎系统还可以包括:第一级agenda,其构造在单独的规则引擎之内,用于解决每一规则引擎内的冲突;以及第二级agenda,其构造在单独的规则弓I擎之外,用于解决各规则弓I擎之间的冲突。
[0014]双层agenda的建立,使得不但能够在每一个规则引擎内部解决匹配结果中的冲突,而且能够解决各规则引擎之间的匹配结果中的冲突。
[0015]在根据本公开的实施例中,双层agenda或其中的任一层可以利用归并排序来解决冲突。
[0016]根据本公开的另一方面,提供一种分布式规则引擎构造方法。该方法包括:将条件侧所包括的模式彼此相似的规则划分到相同的规则集;将通过划分得到的每一个规则集关联到系统的规则引擎之一;以及将与相同规则引擎关联的所有规则集中的规则编译成Rete网络并在规则引擎中进行部署。
[0017]在根据本公开的实施例中,划分的步骤可以包括:从规则的条件侧提取各模式;以及根据提取的模式得到规则对应的二进制串,并根据二进制串进行划分;其中,二进制串的每一位对应一个模式,I表不相应模式存在于规则中,O表不相应模式不存在于规则中;并且,其中,二进制串的长度等于待划分的所有规则中包含的所有模式的数量。
[0018]在根据本公开的实施例中,在规则的数量为N,规则引擎的数量为K,其中N大于K的情况下,划分还可以包括:a操作:对所有规则对应的二进制串两两进行按位“异或”操作,找出使得“异或”操作结果中含I的个数最多的两条二进制串对应的规则作为两个初始的集合中心;b操作:依据对所有不是集合中心的规则对应的二进制串与已经得到的所有集合中心对应的二进制串进行按位“异或”操作的结果,找出使得“异或”操作结果中含I的个数最多的二进制串对应的非集合中心的规则作为新的集合中心;c操作:重复b操作,直至集合中心的个数等于K ;d操作:对每个不在任意集合中的规则,将其对应的二进制串与每个集合中心对应的二进制串进行按位“与”操作,找出使得“与”操作结果中含I的个数最多的集合中心,将该规则加入到该集合中,然后,对该集合中包含的所有规则对应的二进制串进行按位“或”操作,将“或”操作得到的二进制串作为该集合中心新的对应的二进制串;以及e操作:重复d操作,直到所有规则都在集合中。
[0019]在根据本公开的实施例中,在b操作中,可以通过查询所保存的a操作的计算结果来获得“异或”操作的结果。
[0020]根据本公开的另一方面,提供一种利用分布式规则引擎系统执行规则处理的方法。该分布式规则引擎是根据上面的分布式规则引擎构造方法进行构造的规则引擎。该执行规则处理的方法包括:经由构造于单个规则引擎之外的alpha网络,将事实布置到适当的规则引擎。
[0021]根据本公开的分布式规则引擎系统、分布式规则引擎构造方法以及规则处理执行方法有效地提高了分布式规则引擎系统的执行效率。
【附图说明】
[0022]参照下面结合附图对本公开的实施例的说明,会更加容易地理解本公开的以上和其它目的、特点和优点。在附图中,相同的或对应的技术特征或部件将采用相同或对应的附图标记来表示。在附图中不必依照比例绘制出单元的尺寸和相对位置。
[0023]图1是例示将不同的规则组合分配到两个规则引擎的场景的Rete网络的示意图。
[0024]图2是例示将不同的规则组合分配到两个规则引擎的另一个场景的Rete网络的示意图。
[0025]图3是例示将不同的规则组合分配到两个规则引擎的另一个场景的Rete网络的示意图。
[0026]图4是例示根据本公开实施例的分布式引擎构造方法的流程图。
[0027]图5是例示根据本公开实施例的对规则条件侧的模式进行特征抽取,以得到对应二进制串,然后进行划分的示意图。
[0028]图6是例示根据本公开实施例的根据模式的相似度为规则引擎分配规则的方法的流程图。
[0029]图7是例示根据本公开实施例的分布式规则引擎系统的结构图。
[0030]图8是例示根据本公开实施例的执行规则处理的方法的流程图。
[0031]图9是例示根据本公开实施例的经由外部和内部alpha网络使用哈希方法来布置事实的示意图。
[0032]图10是例示根据本公开实施例的经由内部和外部agenda解决冲突的示意图。
[0033]图11是示出实现本发明的计算机的示例性结构的框图。
【具体实施方式】
[0034]下面参照附图来说明本公开的实施例。应当注意,为了清楚的目的,附图和说明中省略了与本公开无关的、本领域技术人员已知的部件和处理的表示和描述。
[0035]在使用Rete的规则引擎中,期望能有效提高分布式规则引擎的执行效率。本公开尝试通过在执行规则之时由alpha或beta节点共享尽可能多的匹配结果来实现执行效率的提高。本公开通过为分布式规则引擎系统中的各规则引擎分配适当的规则,并将分配的规则编译为Rete网络以进行部署,来实现通过alpha或beta节点共享部分匹配结果。
[0036]下面将以如下规则列表中列出的规则为例,说明如何将各条规则适当地分配给各个规则引擎。示例规则列表为:
[0037]规则1:如果 C1~C2~C3~C4,则 Pl
[0038]规则2:如果 C1~C2~C3~C5,则 P2
[0039]规则3:如果 C6~C7,则 P3
[0040]规则4:如果 C1~C6~C7,则 P4
[0041]其中,Cl至C7为各规则条件侧所包含的模式,Pl至P4为满足各规则的条件所对应执行的操作。
[0042]为了便于描述,假设待构造的规则引擎系统利用两个规则引擎来进行分布式处理。则,可以按上面的规则列表得到7个规则集的组合:
[0043]组合1: {(规则I,规则
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1