分享好友 最新动态首页 最新动态分类 切换频道
规则引擎的原理与功能
2024-12-27 10:18

企业级管理者可能会在系统生产过程中调整生产策略、物料采购策略等,因此对企业IT系统的开发有着如下的要求

规则引擎的原理与功能

  1. 为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。
  2. 市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。
  3. 为了快速、低成本的更新,业务人员应能直接管理IT系统中的规则,不需要程序开发人员参与。

而项目开发人员则碰到了以下问题:

  1. 程序=算法+数据结构,有些复杂的商业规则很难推导出算法和抽象出数据模型
  2. 软件工程要求从需求->设计->编码,然而业务规则常常在需求阶段可能还没有明确,在设计和编码后还在变化,业务规则往往嵌在系统各处代码中
  3. 对程序员来说,系统已经维护、更新困难,更不可能让业务人员来管理。

因此迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策。把这些商业决策放在中心数据库或其他统一的地方,让它们能在运行时(即商务时间)可以动态地管理和修改从而提供软件系统的柔性和适应性。

规则引擎正是应用于上述动态环境中的一种解决方法。

规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据规则做出业务决策。

规则引擎可以在系统工作时,将外部的业务规则加载到系统中,并使得系统按照该业务规则进行工作。接下来我们分别进行介绍。

一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑。业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技术人员使用面向对象的技术语言或脚本来定制。业务规则的理论基础是:设置一个或多个条件,当满足这些条件时会触发一个或多个操作。

由于规则引擎是软件组件,所以只有开发人员才能够通过程序接口的方式来使用和控制它,规则引擎的程序接口至少包含以下几种API

  • 加载和卸载规则集的API
  • 数据操作的API
  • 引擎执行的API。

开发人员在程序中使用规则引擎基本遵循以下5个典型的步骤

  1. 创建规则引擎对象
  2. 向引擎中加载规则集或更换规则集
  3. 向引擎提交需要被规则集处理的数据对象集合
  4. 命令引擎执行;
  5. 导出引擎执行结果,从引擎中撤出处理过的数据。

 

使用了规则引擎之后,许多涉及业务逻辑的程序代码基本被这五个典型步骤所取代。一个开放的业务规则引擎应该可以”嵌入”在应用程序的任何位置,不同位置的规则引擎可以使用不同的规则集,用于处理不同的数据对象。

此外,对使用引擎的数量没有限制。

规则引擎的架构如下图所示

规则引擎架构

 

规则引擎的推理步骤如下

  1. 将初始数据(fact)输入至工作内存(Working Memory)。
  2. 使用Pattern Matcher将规则库(Rules repository)的规则(rule)和数据(fact)比较。
  3. 如果执行规则存在冲突(conflict,即同时激活了多个规则,将冲突的规则放入冲突集合。
  4. 解决冲突,将激活的规则按顺序放入Agenda。
  5. 执行Agenda中的规则。
  6. 重复步骤2至5,直到执行完毕Agenda中的所有规则。

任何一个规则引擎都需要很好地解决规则的推理机制和规则条件匹配的效率问题。

当引擎执行时,会根据规则执行队列中的优先顺序逐条执行规则执行实例,由于规则的执行部分可能会改变工作区的数据对象,从而会使队列中的某些规则执行实例因为条件改变而失效,必须从队列中撤销,也可能会激活原来不满足条件的规则,生成新的规则执行实例进入队列。

于是就产生了一种”动态”的规则执行链,形成规则的推理机制。这种规则的”链式”反应完全是由工作区中的数据驱动的。

规则条件匹配的效率决定了引擎的性能,引擎需要迅速测试工作区中的数据对象,从加载的规则集中发现符合条件的规则,生成规则执行实例。

1982年美国卡耐基·梅隆大学的Charles L. Forgy发明了一种叫Rete算法,很好地解决了这方面的问题。目前世界顶尖的商用业务规则引擎产品基本上都使用Rete算法。

对于Rete算法,网络上有很多资料,理解起来不是太复杂。本文以介绍框架为主,因此不再详述。其中接下来要介绍的Drools也使用了Rate算法。

Java规则引擎主要有JRules/Drools/JLisa/QuickRules等。我们以开源项目Drools进行介绍。

Drools是用Java语言编写的开放源码规则引擎,使用Rete算法对所编写的规则求值。Drools允许使用声明方式表达业务逻辑。可以使用非XML的本地语言编写规则,从而便于学习和理解。

并且,还可以将Java代码直接嵌入到规则文件中,这令Drools的学习更加吸引人。Drools有如下特点

  • 完整的实现了Rete算法
  • 提供了强大的Eclipse Plugin开发支持
  • 通过使用其中的DSL(Domain Specific Language),可以实现用自然语言方式来描述业务规则,使得业务分析人员也可以看懂业务规则代码
  • 提供了基于WEB的BRMS——Guvnor,Guvnor提供了规则管理的知识库,通过它可以实现规则的版本控制,及规则的在线修改与编译,使得开发人员和系统管理人员可以在线管理业务规则。

规则引擎的原理简图如下

规则引擎原理简图

 

Drools规则文件有一个或多个rule声明。每个rule声明由一个或多个conditional元素以及要执行的一个或多个consequences或actions组成。

一个规则文件还可以有多个(即0个或多个)import声明、多个global声明以及多个 function 声明。下面我们看一个规则文件的示例

 

其中

  • rule 声明有一个惟一标识它的 name
  • salience属性可以让规则执行引擎知道应该启动规则的结果语句的顺序。
  • when 关键词定义规则中的条件块
  • then 关键词定义结果块。当其上部的条件满足时,该结果块的规则被执行。
最新文章
新起点|红花岗少儿普通话训练培训班学费一年多少钱_十大top排行榜
新起点|红花岗少儿普通话训练培训班学费一年多少钱_十大top排行榜新起点红花岗少儿普通话班,培训优质,学费亲民,荣登排行榜。  红花岗少儿普通话训练培训班十大排名汇总?小主持人相较于舞蹈,美术,没有那么多,且花费也比较小些,同时
提供商城网站制作/怎么进行网站推广
 1、HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。 2、HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer&#x
遮天手游
遮天演绎手游,遮天前传手游,老铁们想知道有关这个问题的分析和解答吗,相信你通过以下的文章内容就会有更深入的了解,那么接下来就跟着我们的小编一起看看吧。 《遮天演绎手游,遮天前传手游》是一款基于同名网络小说《遮天》改编而来的
经典耐玩的端游排行榜前十名盘点,年度最佳的大型精品网络游戏
这期,将为大家带来年度最佳的经典端游,其中有:《英雄联盟》、《魔兽世界》、《原神》、《梦幻西游》、《地下城与勇士:创新世纪》、《穿越火线》、《永劫无间》、《炉石传说》、《剑网3》、《QQ飞车》在榜单之中,这些经典耐玩的能给玩家
百家姓排名
百家姓排名  每个人都有自己的姓氏,这些姓氏是怎么来排名排序的呢?下面是YJBYS小编为大家精心搜集的百家姓排名,欢迎大家参考借鉴,希望可以帮助到大家!  百家姓1-100名分别是:  赵、钱、孙、李、周、吴、郑、王、冯、陈、褚、卫、
唱出你的心声:K歌放松心情的说说,让音乐治愈你
音乐是心灵的良药,K歌则是释放压力的绝佳方式。无论是朋友聚会还是独自一人,拿起麦克风,随着旋律唱出你的心情,让所有的烦恼都随着歌声飘散。下面,就让我们一起看看这24句K歌放松心情的说说,或许它们能够触动你的心弦。1. “今天心情
浦发银行逾期十天左右有影响吗
小编导语在现代社会,信用已经成为个人及企业获取金融服务的关键因素之一。尤其是在银行借贷、信用卡使用等方面,逾期还款往往会对个人信用产生深远的影响。本站将探讨浦发银行逾期十天左右的影响,包括对个人信用、贷款申请、以及未来金融
优化关键词排名的工具【优化关键词排名软件】
在当今数字化的时代,网站的关键词排名对于其在搜索引擎中的曝光度和流量至关重要,为了提升关键词排名,各种优化工具应运而生,这些工具凭借其强大的功能和特性,为网站管理员和 SEO 从业者提供了有力的支持,帮助他们更好地优化网站,提
好用的外贸自建站有哪些平台?Wordpress建站找GoDaddy更放心
利用Wordpress搭建外贸自建站优势众多,得益于其丰富的插件和CMS属性,Wordpress建站可以通过插件实现和拓展电商网站的许多功能,对SEO搜索引擎的收录和排名也十分友好,是许多电商站长的首选建站方式。但是,面对市场上形形色色的Wordpres
【P6(电信版)WiFi万能钥匙下载】华为P6 电信版WiFi万能钥匙5.1.02免费下载
下载WiFi万能钥匙,认准官方正版!免费安全WiFi热点,无忧一键连接。日常任务随时做,轻松赚现金外快~【积分赚钱】完成简单日常任务,轻轻松松赚现金【安全免费】随时随地免费连接,畅享安全免费WiFi,节省流量快人一步!【权威认证】通过
相关文章
推荐文章
发表评论
0评