Jboss Rules

第一章 规则引擎

1.1 什么是规则引擎

1.1.1 背景介绍

A.I.(Artificial Intelligence)是一个关注于“使计算机像人类一样思考“的广泛的研究领域,包括Neural Networks(神经网络), Genetic Algorithms(遗传算法), Decision Trees(决策树), Frame Systems(框架系统) and Expert Systems(专家系统)。Knowledge representation(知识呈现)是A.I.的一部分,关注于如何呈现和操纵知识。专家系统使用知识表示把知识编码简化成一个可用于推理的知识库──比如,我们可以用知识库处理数据以推出结论。专家系统又叫基于知识的系统、基于知识的专家系统,并被认为是A.I.的一个应用。开发一个专家库系统的过程被称为知识工程。EMYCIN是最早的专家系统Shell(外壳)之一,它从医学诊断专家系统MYCIN发展而来。早期的专家系统有自己的logic hard coded "shells"(逻辑硬件编码外壳),把逻辑与系统相分离,为用户输入提供一个简单的使用环境。
Drools
是一个使用基于规则的方法实现的专家系统的规则引擎,更准确的说属于产生式规则系统。

术语“产生式规则”从形式语法中产生,形式语法——使用一种抽象结构来准确描述形式语言 (wikipedia)

商业规则管理系统在普通的规则引擎基础上通过提供—集中的商业用户,规则建立系统,管理,发布,协作,分析和终端用户工具等来达到更高的附加价值;使得企业能够以更顺利的方式引入规则引擎。

规则引擎这个术语是非常不明确的,因为任何以任意形式使用能够应用于数据生成结果的规则的系统都可以称为规则引擎。包括像表单验证和动态表达式引擎这样的简单系统都可以称之为规则引擎。作者Malcolm Chisholm 的著作《How to Build a Business Rules Engine (2004)》就例证了这种不明确性。该书实际是讲述如何为管理校验规则而建立和维护一个数据库计划。该书中接着展示了如何根据这些校验规则产生VB代码来校验输入—在某些情况下这是很有用的,作者十分惊讶于这种不明确性,在没有觉察到各种规则引擎间细微不同之处时,他希望能发现其中的奥秘以帮助增强Drools引擎。JBoss jBPM(业务流程管理工具)在它的判断节点上使用表达式和代理引用来控制工作流中的事务。通过在每个节点上求值以决定分支的流向—这同样是一个规则引擎。产生式规则系统既是一种规则引擎,又是一个专家系统,而之前提到的校验器和表达式求值规则引擎不是专家系统

产生式规则系统完全关注于精确表达propositional(命题)和first order logic(一阶逻辑)的知识表示,不存在含糊不清的定义。产生式规则系统的核心是一个能够处理大量规则和事实的推理引擎。推理引擎将事实、数据与产生式规则(也可以叫做产生式,或干脆叫规则)进行匹配,以推出结论。产生式规则是一个用一阶逻辑进行知识呈现的二元结构。

 

when

    <conditions>

then

    <actions>

 

 

 

 

 

将新的或已存在的事实与产生式规则进行匹配的过程被称为模式匹配,这个过程由推理机完成。推理机使用的用于模式匹配的算法有很多,包括:

  • Linear 线性的
  • Rete    网状
  • Treat 
  • Leaps  叶状

Drool实现了ReteLeaps算法;Leaps是试验性质的,因为它是个十分新的算法。Drools中的Rete算法被称为ReteOO,表示Drools为面向对象系统(Object Oriented systems)增强并优化了Rete算法。其它基于Rete算法的引擎也有他们对Rete算法进行独有增强后的市场术语,比如RetePlusReteIII。要知道象ReteIII这样的名字纯粹是市场性的,不像原始版本的Rete算法,它们没有公布实现细节,这一点很重要;因此,问类似于“Drools是用ReteIII实现的吗?”的问题是没有任何意义的。最寻常的对Rete算法的增强在下面这篇文章中有论述"Production Matching for Large Learning Systems (Rete/UL)" (1995) by Robert B. Doorenbos

规则存在Production Memory(规则库)中,推理机要匹配的facts(事实)存在Working Memory(工作内存)中。事实被插入到工作内存中后,可能被修改或删除。一个有大量规则和事实的系统可能会很多规则被满足,这些规则被称为具有冲突性。Agenda通过(冲突决策策略)管理这些冲突规则的执行顺序。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值