CN102170360B - 一种规则引擎的模式匹配方法和rete网络 - Google Patents
一种规则引擎的模式匹配方法和rete网络 Download PDFInfo
- Publication number
- CN102170360B CN102170360B CN 201110098097 CN201110098097A CN102170360B CN 102170360 B CN102170360 B CN 102170360B CN 201110098097 CN201110098097 CN 201110098097 CN 201110098097 A CN201110098097 A CN 201110098097A CN 102170360 B CN102170360 B CN 102170360B
- Authority
- CN
- China
- Prior art keywords
- node
- rete
- rule
- fact
- rete network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种规则引擎模式匹配方法和RETE网络,所述方法包括:构建RETE网络,其中所述RETE网络中包含一RETE节点,所述RETE节点下只有一个对象类型节点(ObjectTypeNode),所述对象类型节点下有AlphaNode节点、EvalNode节点、LeftInputAdapterNode节点和TerminalNode节点;插入事实,并直接在所述RETE网络中进行条件匹配,不生成所述事实的事实句柄,不保存所述事实的信息;将所匹配的规则放入一优先级队列,并顺序执行。本发明一方面能够提高系统的灵活性,将原来固定在代码中的计费规则分离出来,用规则引擎的前台规则管理系统管理起来,增删查改都很方便,可以灵活配置;另一方面,应用规则引擎之后的内容计费系统性能,在话单处理效率和内存使用量方面优于原内容计费系统的话单处理效率。
Description
技术领域
本发明涉及电信行业中的内容计费过程,具体来说是一种用于内容计费的规则引擎模式匹配方法和RETE网络。
背景技术
复杂企业级项目的开发和维护面临着软件必须“随需而变”的问题。由于随外部条件和需求经常变动的商业决策和业务逻辑被固化在代码中,这使得软件的开发和维护变得异常困难,耗费大量的时间和成本,因此迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策,并把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时可以动态地管理和修改,从而提高软件系统的柔性和适应性。规则引擎正是应用于上述动态环境中的一种解决方法,它增加了软件的可维护性,为软件提供可供用户直接修改业务逻辑的功能,使得软件项目不会因为维护成本太高而最后亏本。
规则引擎(Rule Engine)由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。规则引擎接受数据输入,解释业务规则,并根据规则做出业务决策。
RETE算法是Charles Forgy博士于1979年提出的一种效率很高的模式匹配算法,广泛应用于各种规则引擎中,其核心思想是将分离的匹配项根据内容动态构造匹配树,以达到显著降低计算量的效果。
对于内容计费来说,实际上是针对“内容产品”展开的计费。内容计费业务种类多,而且计费规则经常变动,系统维护困难。因此需要将规则引擎应用在内容计费上,把计费规则从代码中分离,用规则引擎进行管理。
现有的RETE算法是这样的:规则引擎的RETE算法子系统根据编译子系统生成的规则包,构建RETE网络。当有事实插入(Insert)时,生成事实句柄FactHandle,然后在RETE网络中与各节点匹配,同时会在匹配成功的每个节点对应的内存中保存该事实信息;在匹配之后要撤销(Retract)每个事实句柄,来删除在RETE网络中进行匹配时记录的所有事实信息。这样,会占用很多内存来记录事实信息,匹配过程也的时间开销也很大,在匹配完执行规则之后,还要花费时间Retract事实来删除匹配过程中在RETE网络中留下的事实记录。这样必然导致使用规则引擎的运算过程要比把规则直接固化到代码中的系统运算速度慢得多。
因此,使用现有的规则引擎存在着性能上的问题。规则引擎的核心算法是RETE算法,由于该算法中,事实匹配规则的过程不一定独立,多个事实同时满足某个条件时才执行该条规则所对应的动作,原RETE算法在插入事实的过程中在RETE网络中保存了所有事实的信息,这样就使得该算法建网匹配过程复杂,并且占用大量的内存空间,使得应用规则引擎的系统性能大大低于将业务逻辑固定在代码中的系统,从而使得规则引擎无法在计费系统中进行广泛的应用。
发明内容
本发明所要解决的技术问题是提供一种改进的规则引擎模式匹配方法,使其在兼容现有RETE算法的同时,使应用改进后的规则引擎的内容计费系统的处理效率接近原内容计费系统。
本发明解决上述技术问题的技术方案如下:
一种用于规则引擎的模式匹配方法,包括以下步骤:
步骤1:构建RETE网络,所述RETE网络中包含一RETE节点,所述RETE节点下仅有一个对象类型节点(ObjectTypeNode节点),所述对象类型节点下有AlphaNode节点、EvalNode节点、LeftInputAdapterNode节点(左输入适配节点)和TerminalNode节点(终止节点);
步骤2:插入事实,并直接在所述RETE网络中进行条件匹配,不生成所述事实的事实句柄,不保存所述事实的信息;
步骤3:将所匹配的规则放入一优先级队列,并顺序执行。
其中,事实即为数据,是指用户插入的、符合规则引擎中用户定义的事实类的对象。比如,本发明中提到的应用规则引擎后的内容计费系统中,用户订购关系数据即是事实。
RETE节点为RETE网络的根节点,为整个RETE网络的入口。
对象类型节点的作用是提供对对象所属类进行筛选,根据内容计费的具体需要,本发明中只定义了一种对象类型节点。
AlphaNode节点用来提供对象属性值的筛选,即评估对象的字面条件(literal conditions),当一个对象有多个字面条件的话,逐条评估顺序进入相应AlphaNode节点。
LeftInputAdapterNode节点用于提供事实到元组的转换。
EvalNode节点为判断节点,会返回表达式的真值。其中可以使用任何有效的语言表达式,只要它最终能被求值为boolean数据类型(Boolean数据类型:变量存储为16位(2个字节)的数值形式,但其值只能是True(真)或者False(假))。
TerminalNode节点表示一条规则的完全匹配,即表明一条规则已经匹配了它的所有条件。
由于本发明提供的规则引擎模式匹配方法,其所构建的RETE网络只有一个对象类型节点,其下有AlphaNode节点、EvalNode节点、LeftInputAdapterNode节点和TerminalNode节点,从而不会出现传统RETE网络中的JoinNode,ExistNode,NotNode等其他节点,因此每个订购关系事实匹配规则的过程是独立的,不会出现两个或两个以上的事实同时满足某个条件时才执行该条规则所对应的动作,所以在匹配过程中在RETE网络中保存事实信息没有必要。在匹配过程中不记录事实信息,从而也就不用撤销事实,因此大大减少了内存的开销和时间开销。这种匹配模式适用于内容计费规则这种情况:没有JoinNode、ExistNode、NotNode等节点(JoinNode、ExistNode和NotNode节点用于比较两个或两个以上的事实对象,这些事实可能属于相同或不同的对象类型。本发明所提供的规则引擎每次只进行单个事实的匹配,不需要JoinNode、ExistNode和NotNode对两个对象进行比较),每个事实匹配规则的过程是独立的。
本发明改进后的规则引擎应用于内容计费系统,一方面能够提高系统的灵活性,将原来固定在代码中的计费规则分离出来,用规则引擎的前台规则管理系统管理起来,增删查改都很方便,可以灵活配置;另一方面,应用规则引擎之后的内容计费系统性能,在话单处理效率和内存使用量方面优于原内容计费系统的话单处理效率。
根据上述规则引擎模式匹配方法,本发明还提供了一种RETE网络,该RETE网络包含一RETE节点,所述RETE节点下仅包括一个对象类型节点,所述对象类型节点下有AlphaNode节点、EvalNode节点、LeftInputAdapterNode节点和TerminalNode节点。
附图说明
图1为本发明的方法中用于内容计费系统的RETE网络结构示意图;
图2为利用本发明方法的内容计费系统示意图;
图3为本发明中嵌入改进的规则引擎之后的内容计费系统的执行流程图。
具体实施方式
以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,本发明中的内容计费的规则有如下特点:内容计费的规则构建的新的RETE网络中包含一RETE节点,该RETE节点下只有一个对象类型节点(ObjectTypeNode节点),该对象类节点下有AlphaNode节点、EvalNode节点、LeftInputAdapterNode节点和TerminalNode节点。不会出现现有的RETE网络中的JoinNode,ExistNode,NotNode等节点,因此每个订购关系事实匹配规则的过程均是独立的,不会出现两个或者两个以上的事实同时满足某个条件时才执行该条规则所对应的动作。所以在匹配过程中在RETE网络中保存事实信息没有必要。
根据上述内容计费规则的这个特点,本发明提出了如下RETE算法的改进方案:
在规则引擎的推理引擎部分设计了一种新的规则引擎匹配模式(simple_match),对于插入的事实不再生成handle(事实句柄FactHandle),而是事实直接在RETE网络中进行条件匹配,也不保存事实的任何信息,最后匹配的规则全部放到一个优先级队列,顺序执行。因为在匹配过程中没有记录事实信息,也就不用Retract事实了,大大减少了内存开销和时间开销。这种匹配模式适用于像内容计费规则这种情况:没有JoinNode,ExistNode,NotNode等节点,每个事实匹配规则的过程是独立的。具体的方法步骤包括:
步骤1:构建RETE网络,其中所述RETE网络中只有一个对象类节点(ObjectTypeNode),该对象类节点下有AlphaNode节点、EvalNode节点和TerminalNode节点;
步骤2:插入事实(fact),并直接在所述RETE网络中进行条件匹配,不生成所述事实的事实句柄,不保存所述事实的信息;
步骤3:将所匹配的规则放入一优先级队列,并顺序执行。
本发明中所提到的事实即为数据,是指用户插入的、符合规则引擎中用户定义的事实类的对象。比如,在本发明中提到的应用规则引擎后的内容计费系统中,用户订购关系数据即是事实。
如图2所示,把改进后的规则引擎,作为中间件嵌入内容计费系统中,用规则引擎的规则管理子系统来管理内容计费规则,用后台的推理引擎来完成订购关系事实和计费规则的匹配,从而得出计费结果。运行时,规则引擎选择simple_match匹配模式。
嵌入上述规则引擎之后的内容计费系统的执行流程,如图3所示,包括:
1)编译内容计费的计费规则,生成规则包;
2)加载规则包,构建RETE网络;
3)创建workingMemory;
4)读数据库增量表的一条数据,构造订购关系事实;
5)插入事实到workingMemory,在RETE网络中匹配规则,返回计费结果;
6)根据计费结果写话单,写数据库;
7)循环执行步骤5)、6),直至收到退出信号。
其中,内容计费的计费规则是由规则引擎的规则管理子系统提供。数据库增量表是订购关系同步程序从CRM系统(Customer Relationship Management System)同步过来的内容计费订购关系的增量表。最后输出的话单文件将会传给综合账务系统。
本发明将改进后的规则引擎应用于内容计费系统,一方面提高了系统的灵活性,将原来固定在代码中的计费规则分离出来,用规则引擎的前台规则管理系统管理起来,增删查改都很方便,可以灵活配置;另一方面,应用规则引擎之后的内容计费系统性能,在话单处理效率和内存使用量方面优于原内容计费系统的话单处理效率。
本发明的方法应用于吉林移动内容计费系统,将原来固定在代码中的计费规则分离出来,用规则引擎的前台规则管理系统管理起来,增删查改都很方便,可以灵活配置。内容计费系统的后台应用了规则引擎的推理引擎来处理用户订购关系事实,匹配计费规则,得出正确的计费结果。同时,新内容计费系统的性能优于原内容计费系统:使用了规则引擎的内容计费程序在处理速度和CPU使用量方面略高于原内容计费系统,但内存使用量是原内容计费系统的1/90,能够满足生产系统对内容计费系统的需求。
内容计费规则样例1
rule "1_INC_1"
salience 20
no-loop true
when
f:MonthBillingData(billing_type==3)
eval( f->order_stat.compare("05")==0&&
f->first_order_time_cur.compare("00000000000000")==0&&
f->first_order_time_his.compare(f->month_begin)<0&&
f->change_time.compare(f->month_begin)>=0)
then
//cout<<"1_INC_1"<<endl;
f->state=11;
f->deduct_type=0;
end
内容计费规则样例2
rule "1_MONTH_1"
salience 20
no-loop true
when
f:MonthBillingData( )
eval( f->billing_type==1&&
f->first_order_time_his.compare(f->month_begin)<0&&
f->first_order_time_cur.compare("00000000000000")==0&&
(f->order_stat.compare("05")==0||f->order_stat.compare("06")==0))
then
//cout<<"1_MONTH_1"<<endl;
f->state=11;
f->deduct_type=0;
end
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种规则引擎的模式匹配方法,其特征在于,所述方法包括以下步骤:
步骤1:构建RETE网络,所述RETE网络中包含一RETE节点,所述RETE节点下仅有一个对象类型节点,所述对象类型节点下有AlphaNode节点、EvalNode节点、LeftInputAdapterNode节点和TerminalNode节点;
对象类型节点的作用是提供对对象所属类进行筛选,AlphaNode节点用来提供对象属性值的筛选,LeftInputAdapterNode节点用于提供事实到元组的转换,EvalNode节点为判断节点,会返回表达式的真值,其中可以使用任何有效的语言表达式,只要它最终能被求值为boolean数据类型,TerminalNode节点表示一条规则的完全匹配,即表明一条规则已经匹配了它的所有条件;
步骤2:插入事实,并直接在所述RETE网络中进行条件匹配,不生成所述事实的事实句柄,不保存所述事实的信息;
步骤3:将所匹配的规则放入一优先级队列,并顺序执行。
2.一种RETE网络,其特征在于:所述网络包含一RETE节点,所述RETE节点下仅包括一个对象类型节点,所述对象类型节点下有AlphaNode节点、EvalNode节点、LeftInputAdapterNode节点和TerminalNode节点;
对象类型节点的作用是提供对对象所属类进行筛选,AlphaNode节点用来提供对象属性值的筛选,LeftInputAdapterNode节点用于提供事实到元组的转换,EvalNode节点为判断节点,会返回表达式的真值,其中可以使用任何有效的语言表达式,只要它最终能被求值为boolean数据类型,TerminalNode节点表示一条规则的完全匹配,即表明一条规则已经匹配了它的所有条件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110098097 CN102170360B (zh) | 2011-04-19 | 2011-04-19 | 一种规则引擎的模式匹配方法和rete网络 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110098097 CN102170360B (zh) | 2011-04-19 | 2011-04-19 | 一种规则引擎的模式匹配方法和rete网络 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102170360A CN102170360A (zh) | 2011-08-31 |
CN102170360B true CN102170360B (zh) | 2013-08-28 |
Family
ID=44491345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110098097 Active CN102170360B (zh) | 2011-04-19 | 2011-04-19 | 一种规则引擎的模式匹配方法和rete网络 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102170360B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102999324B (zh) * | 2011-09-19 | 2018-05-18 | 北京四达时代软件技术股份有限公司 | 一种Rete网络的建立方法及系统 |
CN103164400A (zh) * | 2011-12-08 | 2013-06-19 | 中国移动通信集团浙江有限公司 | 关联分析方法、装置及系统 |
US10379873B2 (en) * | 2014-02-28 | 2019-08-13 | Tyco Fire & Security Gmbh | Distributed processing system |
US9513364B2 (en) | 2014-04-02 | 2016-12-06 | Tyco Fire & Security Gmbh | Personnel authentication and tracking system |
CN104268816A (zh) * | 2014-09-22 | 2015-01-07 | 北京首钢自动化信息技术有限公司 | 一种用于计算物业业务不同费用的收费系统及方法 |
CN105096033B (zh) * | 2015-07-01 | 2019-07-30 | 北京京东尚科信息技术有限公司 | 一种提供决策信息的方法和装置 |
CN106127306A (zh) * | 2016-06-17 | 2016-11-16 | 北京理工大学 | 一种高共享性Rete网络构建方法 |
CN107133741B (zh) * | 2017-05-05 | 2020-12-25 | 东软集团股份有限公司 | 待办任务处理方法、装置、可读存储介质及电子设备 |
CN110135586B (zh) * | 2019-04-16 | 2024-05-10 | 平安科技(深圳)有限公司 | Rete网络的构建方法、装置、计算机设备和存储介质 |
CN110175675A (zh) * | 2019-04-22 | 2019-08-27 | 平安科技(深圳)有限公司 | 自动调整rete网络的方法、装置、计算机设备和存储介质 |
CN112433774A (zh) * | 2019-08-07 | 2021-03-02 | 中移信息技术有限公司 | 业务信息匹配方法、装置、设备及存储介质 |
CN110705978A (zh) * | 2019-08-30 | 2020-01-17 | 深圳壹账通智能科技有限公司 | 接口服务方法及装置 |
CN112286507A (zh) * | 2020-11-09 | 2021-01-29 | 无锡新思联信息技术有限公司 | 一种针对物联资源自治的rete算法规则引擎设计方法 |
CN113468239A (zh) * | 2021-06-23 | 2021-10-01 | 苏州琅润达检测科技有限公司 | 基于规则引擎实现物联网行业用量统计的方法和系统 |
CN116050956B (zh) * | 2022-06-17 | 2023-09-26 | 南京云次方信息技术有限公司 | 一种跨境电商物流计算运费系统 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488864A (zh) * | 2008-01-14 | 2009-07-22 | 朗讯科技公司 | 用于通信网络的计费系统和计费方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100142409A1 (en) * | 2006-12-21 | 2010-06-10 | Liam Fallon | Self-Forming Network Management Topologies |
-
2011
- 2011-04-19 CN CN 201110098097 patent/CN102170360B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101488864A (zh) * | 2008-01-14 | 2009-07-22 | 朗讯科技公司 | 用于通信网络的计费系统和计费方法 |
Non-Patent Citations (2)
Title |
---|
规则引擎技术在企业应用服务中的研究与实现;陶晓俊;《中国优秀硕士学位论文全文数据库》;20071231;正文2.2节,3.2节,4.3节 * |
陶晓俊.规则引擎技术在企业应用服务中的研究与实现.《中国优秀硕士学位论文全文数据库》.2007, |
Also Published As
Publication number | Publication date |
---|---|
CN102170360A (zh) | 2011-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102170360B (zh) | 一种规则引擎的模式匹配方法和rete网络 | |
US20230214723A1 (en) | Method and system for implementing machine learning analysis of documents | |
Becker et al. | A comparative survey of business process similarity measures | |
Arifuzzaman et al. | Patric: a parallel algorithm for counting triangles in massive networks | |
Bouveret et al. | Efficiency and envy-freeness in fair division of indivisible goods: Logical representation and complexity | |
CN107885499A (zh) | 一种接口文档生成方法及终端设备 | |
CN110418200A (zh) | 一种视频推荐方法、装置及终端设备 | |
EP3029581B1 (en) | Processing program, processing system, and processing method | |
CN102870116B (zh) | 内容匹配方法和装置 | |
WO2011032077A2 (en) | System and method for data management in large data networks | |
CN102708130A (zh) | 计算用户微细分以用于要约匹配的可扩展引擎 | |
US20130006996A1 (en) | Clustering E-Mails Using Collaborative Information | |
CN103150163A (zh) | 一种基于MapReduce模型的并行关联方法 | |
CN105096033A (zh) | 一种提供决策信息的方法和装置 | |
CN114356712B (zh) | 数据处理方法、装置、设备、可读存储介质及程序产品 | |
CN105630797A (zh) | 数据处理方法及系统 | |
CN105446952A (zh) | 用于处理语义片段的方法和系统 | |
CN103455476A (zh) | 网络信息的处理方法和抽象语法树的建立方法及其装置 | |
CN112287111B (zh) | 一种文本处理方法和相关装置 | |
CN101894317B (zh) | 数据变化驱动业务逻辑的方法和系统 | |
KR20160081231A (ko) | 이미지 기반 검색을 위한 맵리듀스 기반의 이미지 특징 추출 방법 및 시스템 | |
CN110489667A (zh) | 基于用户画像的智能公文流转技术 | |
CN102110151A (zh) | 出帐系统的Petri网模型的分析方法 | |
CN114969392A (zh) | 一种多源异构数据标签生成方法及生成系统 | |
KR20200083751A (ko) | 다차원 임베딩을 이용한 시퀀스 데이터 태깅 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C53 | Correction of patent for invention or patent application | ||
CB02 | Change of applicant information |
Address after: 100085 Haidian District, Zhongguancun, South Street, No. 6,, building information, floor, No. 16 Applicant after: SI-TECH Information Technology Ltd. Address before: 100085, Beijing, Haidian District on the nine Street 9 digital science and Technology Plaza, two floor Applicant before: Beijing Digital China SI-TECH Information Technology Co., Ltd. |
|
COR | Change of bibliographic data |
Free format text: CORRECT: APPLICANT; FROM: BEIJING DIGITAL CHINA SI-TECH INFORMATION TECHNOLOGY LTD. TO: BEIJING SI-TECH INFORMATION TECHNOLOGY LTD. |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |