一种Rete网络的建立方法及系统技术方案

技术编号:8489638 阅读:305 留言:0更新日期:2013-03-28 08:31
本发明专利技术公开了一种Rete网络建立方法及系统,该方法包括:构建当前规则的表达式树,确定该表达式树的根节点;将所述根节点作为当前节点,判断当前节点的两个孩子节点的属性状态;按照判断得到的属性状态对应构建当前节点所对应的Rete局部网络;创建Rete网络的最终节点,将最终节点作为当前节点所对应的Rete节点的孩子节点。该方法及系统能够基于本发明专利技术实施例新提出的规则语言进行Rete网络的建立。

【技术实现步骤摘要】

本专利技术涉及规则引擎技术,尤其涉及一种Rete网络的建立方法及系统
技术介绍
规则引擎技术已经具备了相当完备的理论基础,并发展出很多成熟的产品。众多 领域都以规则引擎作为实现关键业务的支撑技术,如电信、银行、保险,等等。规则引擎技术 所普遍采用的IF-THEN产生式规则语言是描述知识的一种最为简洁和直观的方法。而规则 引擎技术则将这种知识的表示转换为系统可解释和执行的逻辑,从而实现数据、信息和知 识的结合与统一。一般的,在规则引擎中,将规则存储于预设的规则库中,将要匹配的事实对象存储 于工作内存中,由模式匹配器调用规则库中指定规则集中的所有规则,将每个规则的产生 式模式提取出来建立Rete网络,将需要匹配的事实对象传入该Rete网络中进行规则匹配, 得到事实对象对应的规则。上述规则是通过规则语言来进行描述的。虽然目前主流的规则引擎产品在人性化 规则表示方面取得了不错的效果,但其内核都没有进行简化和改造。也就是说呈现给业务 人员的规则语言都需要映射成底层的更加复杂的规则语言才能被执行。虽然从表面上看降 低了开发和维护的复杂度,但增加了模式匹配器处理所述规则的复杂度,并且没有降低规 则存储和管理的复杂度。而且根据实际的经验,业务人员很难一次性写出正确的规则,往往 需要软件工程师对底层规则代码进行调试。为了尽量提升规则的易编写性和易用性,规则引擎产品都提供了针对业务人员的 规则编辑界面。这些界面可以在一定程度上引导用户编写出正确的规则,但仍然呈现出了 一种自然语言和规则语言混杂的现象,使业务人员产生困惑。造成这种局面的根本原因就 是没有从根本上对规则语言进行语法和语义层面的改造,且,规则引擎本身也没有对特定 的语言结构进行专门的优化,所以执行性能并没有提升;进一步地,现有的Rete网络建立 方法也是针对已有的规则语言建立对应的Rete网络。
技术实现思路
有鉴于此,本专利技术要解决的技术问题是,提供一种Rete网络建立方法及系统,基 于一种新提出的规则语言进行Rete网络的建立。为此,本专利技术实施例采用如下技术方案本专利技术实施例提供一种Rete网络建立方法,包括构建当前规则的表达式树,确定该表达式树的根节点;将所述根节点作为当前节点,判断当前节点的两个孩子节点的属性状态;如果两个孩子节点中至少有一个孩子节点既不是因素表达式节点也不是已处理 节点,则以所述既不是因素表达式节点也不是已处理节点的孩子节点作为当前节点,返回 所述判断步骤;如果两个孩子节点都是因素表达式节点,则根据两个因素表达式节点构建当前节 点所对应的Rete局部网络;如果两个孩子节点都是已处理节点,则根据两个已处理节点构 建当前节点所对应的Rete局部网络;如果两个孩子节点一个是因素表达式节点,一个是已 处理节点,则根据因素表示式节点以及已处理节点构建当前节点所对应的Rete局部网络;创建Rete网络的最终节点,将最终节点作为当前节点所对应的Rete节点的孩子 节点。所述根据两个因素表达式节点构建当前节点所对应的Rete局部网络包括确定两个孩子节点的条件因素所关联的模型;判断两个孩子节点的条件因素均分别关联一个相同的模型,且当前节点的运算类 型为AND运算时,以该相同的模型对应的模型节点作为入口节点构建I型局部网络,I型局 部网络中的两个Alpha节点分别为两个孩子节点所对应的Rete节点;记录两个孩子节点与 Rete节点之间的对应关系,将当前节点标记为已处理;判断两个孩子节点的条件因素分别关联一个不同的模型,且当前节点的运算类型 为AND运算时,以两个模型所对应的模型节点作为入口节点构建2型AND局部网络,2型 AND局部网络中的模型节点所对应的父节点为该模型节点关联的孩子节点所对应的Rete 节点,汇集节点为当前节点对应的Rete节点;记录当前节点以及两个孩子节点与Rete节点 之间的对应关系,将当前节点标记为已处理;判断两个孩子节点的条件因素均分别关联一个模型,且当前节点的运算类型为OR 运算时,以两个模型所对应的模型节点作为入口节点构建2型OR局部网络,2型OR局部网 络中的模型节点所对应的父节点为该模型节点关联的孩子节点所对应的Rete节点,汇集 节点为当前节点对应的Rete节点;记录当前节点以及两个孩子节点与Rete节点之间的对 应关系,将当前节点标记为已处理;判断两个孩子节点中一个孩子节点的条件因素关联一个模型,另一个孩子节点的 条件因素关联两个模型时,以所述两个模型所对应的模型节点为入口节点构建2型SF局部 网络,2型SF局部网络的汇集节点为关联两个模型的孩子节点所对应的Rete节点;根据当 前节点的运算类型构建相应的2型AND局部网络或2型OR局部网络,其中的一个父节点为 所述2型SF局部网络的汇集节点,另一个父节点为关联一个模型的孩子节点所对应的Rete 节点;记录当前节点以及两个孩子节点与Rete节点之间的对应关系,将当前节点标记为已 处理;判断两个孩子节点的条件因素都关联两个模型时,分别以两个模型所对应的模型 节点作为入口节点构建2型SF局部网络,构建的2型SF局部网络的汇集节点为相应孩子 节点所对应的Rete节点;根据当前节点的运算类型构建相应的2型AND局部网络或2型OR 局部网络,所述2型AND局部网络或2型OR局部网络的两个父节点分别为两个2型SF局 部网络的汇集节点;记录当前节点以及两个孩子节点与Rete节点之间的对应关系,将当前 节点标记为已处理。根据已处理节点构建当前节点所对应的Rete局部网络包括判断当前节点的运算类型为AND运算时,以当前节点的两个孩子节点所对应的 Rete节点作为父节点,构建2型AND局部网络,2型AND局部网络的汇集节点为当前节点所 对应的Rete节点;记录当前节点与Rete节点之间的对应关系;判断当前节点的运算类型为OR运算时,以当前节点的两个孩子节点所对应的 Rete节点作为父节点,构建2型OR局部网络,2型AND局部网络的汇集节点为当前节点所 对应的Rete节点;记录当前节点与Rete节点之间的对应关系。根据因素表示式节点以及已处理节点构建当前节点所对应的Rete局部网络包 括判断当前节点的运算类型为AND运算时,确定当前节点的两个孩子节点所关联的 模型;如果两个孩子节点所关联的模型相同,构建I型局部网络,I型局部网络中的一个 Alpha节点为孩子节点中已处理节点所对应的Rete节点,另一 Alpha节点为孩子节点中的 因素表达式节点所对应的Rete节点;记录孩子节点中的因素表达式节点与Rete节点之间 的对应关系,将当前节点标记为已处理;如果两个孩子节点所关联的模型不同,构建2型AND局部网络,2型AND局部网络 中的一个父节点为孩子节点中的已处理节点所对应的Rete节点,另一个父节点为孩子节 点中的所对应的Rete节点,汇集节点为当前节点所对应的Rete节点;记录当前节点以及属 性为因素表达式节点的孩子节点与Rete节点之间的对应关系,将当前节点标记为已处理;判断当前节点表示OR运算时,构建2型OR局部网络,2型OR局部网络中的一个父 节点为孩子节点中的已处理节点所对应的Rete节点,另一个父节点为孩子节点中的因素 表达式节点所对应的Rete节点,汇集节点为当前节点所对本文档来自技高网
...
一种Rete网络的建立方法及系统

【技术保护点】
一种Rete网络建立方法,其特征在于,包括:构建当前规则的表达式树,确定该表达式树的根节点;将所述根节点作为当前节点,判断当前节点的两个孩子节点的属性状态;如果两个孩子节点中至少有一个孩子节点既不是因素表达式节点也不是已处理节点,则以所述既不是因素表达式节点也不是已处理节点的孩子节点作为当前节点,返回所述判断步骤;如果两个孩子节点都是因素表达式节点,则根据两个因素表达式节点构建当前节点所对应的Rete局部网络;如果两个孩子节点都是已处理节点,则根据两个已处理节点构建当前节点所对应的Rete局部网络;如果两个孩子节点一个是因素表达式节点,一个是已处理节点,则根据因素表示式节点以及已处理节点构建当前节点所对应的Rete局部网络;创建Rete网络的最终节点,将最终节点作为当前节点所对应的Rete节点的孩子节点。

【技术特征摘要】

【专利技术属性】
技术研发人员:郑叔亮
申请(专利权)人:北京四达时代软件技术股份有限公司
类型:发明
国别省市:

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

1