执行规则集的方法和系统技术方案

技术编号:4264711 阅读:209 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种对在规则引擎中处理的规则的优先级进行更新的方法和系统。在方法中,针对每个实例,根据与规则引擎的运行时间性能相关的因素,例如规则之间的被依赖关系、规则被执行的次数,来计算规则的优先级;以及使用所计算的优先级更新所述规则的优先级,使得具有较多执行次数和/或具有较多被依赖关系的规则具有更高的优先级。使用本发明专利技术对规则的优先级更新之后,根据更新后的优先级对规则进行排序,使得较高优先级的规则先运行,从而提高规则引擎的运行时间性能。

【技术实现步骤摘要】

本专利技术总体上涉及规则集的执行,更具体地,本专利技术涉及更新规则的优先级以对规则集执行进行排序的方法及相关系统和计算机程序产品。
技术介绍
在现代的生产活动中,管理者需要制定业务规则来对生产活动进行经营管理。此 处生产活动的含义很广泛,可以包含例如银行系统的储蓄服务、商场的销售策略、物流 公司的货物装载、网络安全策略、电子邮件中对垃圾邮件的过滤管理,等等。在各种不同的 领域中,管理者可以制定不同的业务规则。例如,在商场的销售策略中,业务规则可以包括 规则1 :铜牌客户并且当日消费满3000元,直接升为金牌客户;规则2 :银牌客户并且当日 消费满1000元,升为金牌客户;规则3 :金牌客户的优惠折扣是70%等。又如,在网络安全 策略中,可以建立防火墙规则来保护网络,这些防火墙规则例如可以是拒绝所有外面传入 的、向外的和转发的包;允许所有外传的TCP连接;允许外发的TCP连接的返回封包通过防 火墙,需检查封包的状态;等等。 将上面提到的这些业务规则采用逻辑上可执行的方式来表述,也即转换为处理器 可以执行的计算机语言,就可以通过业务规则管理器来使管理者方便地管理规则逻辑,从 而能够灵活地定制业务策略来满足随外部条件不断变化的业务需求。 现有技术中已经存在一些将业务规则转换为计算机语言的工具,例如IL0G公 司的IL0G Rules组件工具。IL0G Rules主要是让用户用软件语言来描述其业务逻 辑规则,从而自动生成业务规则并对其进行集中管理。还有一个工具是微软公司的基于 VisualStudio的Workflow Foundation (WF),图1中示出了 WF的规则集编辑器的屏幕截图。 不管采用哪种工具编写业务规则,通常规则主要由两部分构成条件过滤器和动 作。从计算机语言的角度来说,规则包括如果(IF)子句与那么(Then)子句,可选地 包括否则(Else)子句。条件过滤器描述了动作触发时所处的情景或者状态,而动作将会 在条件过滤器的值为真的情况下被执行。每条规则包括一个条件过滤器和多个动作,其中 条件过滤器又可以包含多个过滤条件,条件过滤器是布尔表达式的组合。每一种动作都应 当有其相应的条件。当不同的条件出现时,就会有不同的动作被触发。 以上面提到的商场销售策略中的业务规则为例,其中规则3的条件是客户是金牌 客户。在满足该条件时,该规则的动作是执行70%的优惠折扣。另一条规则2的条件是客户是银牌客户并且当日消费满iooo元,在满足该条件时相应的动作是升为金牌客户。 在图1所示的WF的规则集编辑器的屏幕截图中,示出了采用计算机语言描述的规 则。例如,对于屏幕截图中选中显示的名称为Business Discount的规则,其定义了条件 (如图中所标示的)订单价值> 10000并且客户类型是某一特定类型。该规则还定义了相 应的动作(如图中所标示的)折扣=10。在此示例中未定义否则(Else)子句。 通常对于一项生产活动,可以有多条规则,例如前面提到的商场销售策略中的多 条规则。这些相关规则的集合就构成了规则集。更确切地说,规则集是指一系列的按照一定顺序排列的规则的集合。最常见的形式是IF-THEN(如果-那么)规则集。在定义了各 种各样的规则及其规则集之后,通过规则引擎来实践这些规则。在实际的生产活动中会产 生各种各样的事件或事实。例如,在商场销售活动中,某银牌客户购物消费2000元,某金 牌客户购物消费1000元等。在网络安全方面,可能会有从外面传入的数据包、向外发送的 TCP连接等。在此文中,将这些事件或事实称为业务实例、实例或数据对象。规则引擎接收 这些要被规则集处理的实例的输入,加载或者更新相关的规则集,解释规则,以及执行规则 等。通过规则弓I擎的上述操作,可以有效地进行各类业务处理。 规则引擎对规则的处理通常包括测试规则集中的规则的条件;以及在满足条件 时执行相应的动作。在处理规则时,规则引擎根据规则的顺序依次测试规则的条件。每条 规则只执行一次或者从不执行,直到没有规则可执行。 图2示出了一种在规则引擎中顺序执行规则集的典型算法流程。如图2所示,首先 输入要被规则集处理的业务实例。接着在步骤S201中,测试规则集中的所有规则的条件。 在图2中,规则由条件和动作构成的链表示。如果该业务实例能够满足某条规则R的条件, 则称为该实例激活规则R。在测试完所有条件后,若同时存在多条被激活的规则,也即存在 冲突,则将所有被激活的规则放入冲突集中。然后,在步骤S202,从冲突集中随机选择一条 规则以执行其动作,并将该已执行的规则从规则集中删除。在步骤S203,判断是否已经执 行了一条规则,如果否,即无激活的规则可执行,则结束对该业务实例的处理,可以进入下 一实例;如果是,即已经执行了一条激活的规则,则由于规则的执行动作可能会改变业务实 例,从而会使某些规则因为条件改变而失效或激活,因此必须回到步骤S201。再次测试规则 集中的所有规则的条件,重复执行步骤S201到S202。注意,此时的规则集已经删除了已经 执行过的规则。 上述方案中规则执行的顺序是随机的,并且每次都对所有条件进行测试,从而运 行时间明显过长,是一种传统保守的方案。一种改进的解决方案是由专家用户为每个规则 指定优先级,然后按照优先级的顺序执行规则。此类规则例如参考图1中所示的WF的规则 集编辑器,其中在对规则进行编辑时,对规则的优先级进行了设定(参见图中圆圈所标示 的)。基于该预先设定的优先级,可以在规则引擎中更有效地执行规则,其算法流程如图3 所示。 图3的算法流程类似于图2,包括步骤S301,针对输入的业务实例,对规则集中的 规则逐个测试其条件,将所有被激活的规则放入冲突集中;步骤S302,从冲突集中选择一 条规则以执行其动作,并将该已执行的规则从规则集中删除;步骤S303,判断是否已执行 一条规则,如果否,则结束对该业务实例的处理,如果是,则重复执行步骤S301到S302,直 到冲突集中没有规则可执行。图3的算法流程相对于图2的改进在于其在规则条件测试 步骤S301以及选择规则执行步骤S302中考虑了规则的优先级。这些优先级是在规则设计 阶段由专家用户设定的,也即是固定的。当规则引擎执行规则时,由于规则的执行动作可能 会改变业务实例,从而会使冲突集中的某些规则因为条件改变而失效,必须从冲突集中撤 销。规则的执行动作也可能会激活原来不满足条件的规则,生成新的被激活规则进入冲突 集。因此,根据设定的优先级顺序来执行,能够在一定程度上改善该问题。 但是,在此改进方案中,规则的优先级需要专家用户预先指定。这对于不具有专家 知识的用户来说其运行时间性能的改善效果不明显。而且,即使是专家用户设定规则的优先级,所设定的优先级不一定准确地反映了实际状况。此外,当业务环境改变时,固定的优 先级不能适应该改变。
技术实现思路
现有技术中尚无进一步针对规则执行的顺序进行改进的方案。因此,需要一种对 规则集执行的顺序进行改进的方案,以提高规则引擎运行时间性能,縮短花费的时间。 为了克服现有技术中存在的上述一个或多个不足之处,本专利技术提供了一种在规则 引擎中更新规则的优先级的方法、系统以及相应的计算机程序产品。 根据本专利技术的一个方面,提供本文档来自技高网
...

【技术保护点】
一种对在规则引擎中处理的规则的优先级进行更新的方法,包括步骤:针对每个实例,根据与规则引擎的运行时间性能相关的因素计算规则的优先级;以及使用所计算的优先级更新所述规则的优先级。

【技术特征摘要】
一种对在规则引擎中处理的规则的优先级进行更新的方法,包括步骤针对每个实例,根据与规则引擎的运行时间性能相关的因素计算规则的优先级;以及使用所计算的优先级更新所述规则的优先级。2. 根据权利要求1所述的方法,其中与规则引擎的运行时间性能相关的因素包括规则 之间的被依赖关系以及规则被执行的次数中的至少一个。3. 根据权利要求2所述的方法,其中在计算规则的优先级时,使得具有较多执行次数 的规则具有更高的优先级。4. 根据权利要求2或3所述的方法,其中在计算规则的优先级时,使得具有较多被依赖 关系的规则具有更高的优先级。5. 根据权利要求l-4任一所述的方法,在对所述规则的优先级更新预定次数或所处理 的业务实例达到预定数目之后,将最后更新的优先级固定下来,不再进行更新。6. 根据权利要求4所述的方法,计算规则的优先级进一步包括将N条规则Rp…,Ri,…,Rw的优先级表示为优先级矢量P,P = (Pp…,Pi, *,PN) t,N为正整数,l《i《N;对于每个实例Sj,将优先级矢量P计算为P = dXP+(l-d) XH*(Sj),其中0《d《1, H*(Sj)表示更新矢量H(Sj)的归一化矢量,计算更新矢量H(Sj)为H(Sj) = 、*E+A2*D, 其中,E为执行次数矢量,D为被依赖关系矢量,A工和A 2是权重系数。7. 根据权利要求6所述的方法,其中执行次数矢量E = (ei,…,ei,…,e,)t,当规则Ri被执行时,ei = l,否则ei = 0 ; 被依赖关系矢量D = (dp…,di,…,dN)T,初始时& = 0,当发现存在被依赖关系& — Rk 时,& = di+l,其中1《k《N, k ^ i。8. 根据权利要求4所述的方法,计算规则的优先级进一步包括将N条规则Rp…,Ri,…,Rw的优先级表示为优先级矢量P,P = (Pp…,Pi, *,PN) t,N为正整数,l《i《N;将优先级矢量P定义为P = FfXP,其中Ff表示更新矢量F的列归一化矢量,更新矢量 F是NXN维的矢量;对于每个实例Sj,通过P = dXF*XP+ (l-d) K,迭代求解优先级矢量P,其中0《d《1 , K是NX1维的矢量,K = (1/N,…,1/N,…,1/N)t,P的初始值为P = (1/N,…,1/N,…,1/N)T;更新矢量F计算为F二F+F(Sj),F的初始值为0,F(Sj) = A工 E+A 2 D,其中,E为执行次数矢量,D为被依赖关系矢量,A工和A 2是权重系数。9. 根据权利要求8所述的方法,其中执行次数矢量<formula>formula see original document page 2</formula>当对于实例Sj,规则&和Rk都被激活并执行时,l,否则ei,k = 0 ;Z d …d …d 、被依赖关系矢量£>=<formula>formula see original document page 2</formula>,初始时du = 0,当发现存在被依赖关系<formula>formula see original document page 3</formula>Ri — Rk时,di,k = di,k+l,其中1《i《N,l《k《N。10. 根据权利要求1所述的方法,其中所述规则的优先级具有初始值,该初始值是随机 设定的或者根据事先分析的规则之间的被依赖关系设定。11. 根据权利要求1所述的方法,其中在更新所述规则的优先级之后,根据更新后的优 先级对规则进行排序,使得较高优先级的规则先运行。12. —种对在规则引擎中处理的规则的优先级进行更新的系统,包括 优先级计算组件,其配置为针对每个实例,根据与规则引擎的运行时间性能相关的因素计算规则的优先级;以及更新组件,使用所...

【专利技术属性】
技术研发人员:刘铁田春华张浩丁伟
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1