转载自:
http://thinkinside.tk/2012/03/20/rule_engine_1.html
什么是规则
在现实生活中,规则无处不在。我们最长接触的是法律、法规和各种制度;对于企业级应用来说,第一步的业务调研中很重要的内容就是了解业务规则。在企业流程再造中,可能还会接触到流程规则。
在IT技术领域,很多地方也应用了规则,比如路由表,防火墙策略,乃至角色权限控制(RBAC),或者Web框架中的URL匹配。
不管是那种规则,都规定了一组确定的条件和此条件所产生的结果。
举一个例子,是纷繁复杂的保险费率计算中的一条规则:
IF
汽车是红色
车是运动型的
驾驶员是男性
驾驶员在16-25岁之间
THEN
保险费用增加20%
从这个例子可以看出:
每条规则都是一组条件决定的一系列结果
一条规则可能与其他规则共同决定最终结果。比如例子中的规则只产生了增量,还需要与确定基数的规则共同作用才能决定最终的费率
可能存在条件互相交叉的规则,此时有必要规定规则的优先级
推理机与规则引擎
规则作为一种知识,其典型运用就是通过实际情况,根据给定的一组规则,得出结论。这个结论可能是某种静态的结果,也可能是需要进行的一组操作。
这种规则的运用过程叫做推理。如果由程序来处理推理过程,那么这个程序就叫做推理机/推理引擎(Inference Engine)。推理机是专家系统(专家系统是人工智能的一个分支)的核心模块。
推理引擎根据知识表示的不同采取的控制策略也是不同的,常见的类型包括基于神经网络、基于案例和基于规则的推理机。其中,基于规则的推理机易于理解、易于获取、易于管理,被广泛采用。这种推理引擎被称为“规则引擎”。
在规则引擎中,将知识表达为规则(rules),要分析的情况定义为事实(facts)。二者在内存中的存储分别称为Production Memory和Working Memory,如下图:
rules和facts是规则引擎接受的输入参数,而规则引擎本身包括两个组成部分:Pattern Matcher和Agenda。Pattern Matcher根据facts找到匹配的rules,Agenda管理PatternMatcher挑选出来的规则的执行次序。在外围,还会有一个执行引擎(Execution Engine)负责根据Agenda输出的rules执行具体的操作。
其中Pattern Matcher是规则引擎负责推理的核心。和人类的思维相对应,规则引擎中也存在两种推理方式:正向推理(Forward-Chaining)和反向推理(Backward-Chaining)。
正向推理也叫演绎法,由事实驱动,从 一个初始的事实出发,不断地应用规则得出结论。首先在候选队列中选择一条规则作为启用规则进行推理,记录其结论作为下一步推理时的证据。如此重复这个过程,直到再无可用规则可被选用或者求得了所要求的解为止。
反向推理也叫归纳法,由目标驱动,首先提出某个假设,然后寻找支持该假设的证据,若所需的证据都能找到,说明原假设是正确的;若无论如何都找不到所需要的证据,则说明原假设不成立,此时需要另做新的假设。
规则引擎的作用
规则引擎可以将规则的定义从代码中分离出来,将推理过程封装到规则引擎内部进行处理,这带来几个好处:
规则外部化,即有利于规则知识的复用,也可避免改变规则时带来的代码变更问题
由规则引擎使用某种算法进行推理过程,不需要编写复杂晦涩的逻辑判断代码
开发人员的不需要过多关注逻辑判断,可以专注于逻辑处理
- 大小: 69.5 KB
- 大小: 47.5 KB
分享到:
相关推荐
规则引擎的主要思想是将应用程序中的业务决策部分分离出来,并使用预定义的语义模块编写业务决策(业务规则),由用户或开发者在需要时进行配置、管理。 使用规则引擎的优势如下: 1、业务规则与系统代码分离,实现...
URule Pro整个产品由两部分构成:一个是设计器部分,另一个是规则执行引擎部分。设计器部分主要是由库文件 设计器以及具体的规则文件设计器两... 本文档是面向规则引擎配置人员(运营人员),详细地讲述如何在线配置规则。
规则引擎的定义及体系结构.doc
规则引擎的定义与体系结构.doc
您的规则引擎 定义访问控制规则 合并规则以构建新规则 安装 将此行添加到您的应用程序的Gemfile中: gem 'piece' 然后执行: $ bundle 或将其自己安装为: $ gem install piece 用法 您可以找到运行Rails应用...
规则引擎(RuleEngine)是一个有限状态机,通过入参实现状态转移,在Java中定义为JSR94规范。规则引擎目前的开源实现主要是JBoss家族的Drools,采用友好的Apache协议(意味着可以作为商业产品)。以及据说非常贵的ILOG...
Drools5规则引擎开发文档 1. 学习前的准备 1 1.1. 开发环境搭建 1 1.1.1. 下载开发工具 1 1.1.2. 安装Drools IDE 2 1.2. 编写第一个规则 4 1.3. 规则的编译与运行 4 1.3.1. KnowledgeBuilder 5 1.3.2. Knowledge...
定义: 规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。 ...
规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据规则做出业务决策
Python规则引擎 这是在Python中实现通用规则引擎的第一步。 它是一个可行的解决方案,但尚未准备好用于大规模甚至小规模的生产。 使用风险自负。 欢迎捐款。 你可以用它做什么 有关完整的示例,请参见sample.py 。 ...
软件名称:CKRule规则引擎V1.0.9 *注意:请填写软件名称+ 有无插件:无插件 界面语言:多国语言 软件类型:国产软件 授权方式:免费版 软件等级: 软件大小:980 K 官方网址:...
一环-脚本规则引擎服务 一个环与其他“规则引擎”不同,它被用作多个应用程序的Web服务,以访问对任意参数的脚本处理。 它集中处理需要访问同一规则的多个应用程序的通用规则(或业务规则)。 规则是使用领域专家...
rule-engine 为rule-designer定义的规则后端引擎.zip
URule是一款纯Java规则引擎,它以RETE算法为基础,提供了向导式规则集、脚本式规则集、决策表、交叉决策表(PRO版提供)、决策树、评分卡及决策流共六种类型的规则定义方式,配合基于WEB的设计器,可快速实现规则的...
Java规则引擎将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。Java规则引擎接受数据输入,解释业务规则,并根据规则作出业务决策。从这个意义上来说,它是软件方法学在"关注点分离"上的...
业务规则引擎无非是一个比较好的解决方案。它把复杂、冗余的业务规则同整个支撑系统分离开,做到架构的可复用移植,这个就是我们的终极目标。那规则引擎又是什么东西?严格来说,它是一种嵌入到应用程序中的一个组件...
规则引擎 项目fork自 - 。 规则引擎是。 NET C#项目,它通过为数据类定义一堆规则来验证业务逻辑。 规则是使用Fluent接口(fluent验证)帮助程序类定义的,而不是通过用属性修饰现有对象来定义的,因此,将验证...
URule是一种纯Java规则引擎,它以RETE算法为基础,提供向导式规则集,脚本式规则集,决策表,交叉决策表(PRO版提供),决策树,评分卡及决策流共六种类型的规则定义方式,配合基于WEB的设计器,可快速实现规则的...
以JSON表示的规则引擎 概要 json-rules-engine是功能强大的轻量级规则引擎。 规则由简单的json结构组成,使其易于阅读且易于持久。 产品特点 以简单易读的JSON表示的规则 完全支持ALL和ANY布尔运算符,包括递归嵌套 ...
适合学习/练手、毕业设计、课程设计、期末/期中/大作业、工程实训、相关项目/竞赛学习等。 项目具有较高的学习借鉴价值,也可直接拿来修改复现。可以在这些基础上学习借鉴进行修改和扩展,实现其它功能。...