分享好友 最新动态首页 最新动态分类 切换频道
规则引擎的原理与功能
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 关键词定义结果块。当其上部的条件满足时,该结果块的规则被执行。
最新文章
用尖端科技赋能低空城市起降场数智运行
转自:天津日报  “忽如一夜春风来,千树万树梨花开”。低空经济作为战略性新兴产业融合发展的新赛道,已成为推动社会经济创新发展的新引擎。城市起降场作为低空经济的主要基础设施之一,其数智运行程度直接影响了低空经济的整体运行水平
详解人工智能领域重大突破:GPT-3
英语原文:Exploring GPT-3: A New Breakthrough in Language Generation翻译:雷锋字幕组GPT-3是什么?我们讨论15亿参数的 Generative Pretrained Transformer-2(GPT-2)的延迟发布是否合理,似乎还是去年的事情。如果你觉得其实没过多久
,掌握这些技巧,让百度轻松收录你的网站内容
在当今数字化时代,拥有一个网站对于个人和企业来说至关重要,仅仅拥有一个网站是不够的,更重要的是让百度等搜索引擎收录你的网站内容,以便更多的人能够找到你的网站,怎样才能让百度收录网站内容显示呢?下面将为大家介绍一些实用的技巧
谷歌chrome浏览器2023安卓最新
谷歌chrome浏览器是一款快速、安全且功能丰富的网络浏览器,干净整洁的界面以及快速地浏览速度带给用户舒适的使用体验,多功能的特点使用户可以畅快的浏览互联网、享受便捷的上网体验。网页翻译 - 您可以轻松浏览任何语言的网页节省数据流
这些A股光存储概念股名单,你需要知道!(12月12日)
  据南方财富网概念查询工具数据显示,相关光存储概念股:  1、中电兴发002298:12月12日消息,中电兴发5日内股价上涨13.23%,该股最新报6.880元涨3.28%,成交7.58亿元,换手率16.78%。  公司于2020年2月19日晚间披露2019年度非公开
都江堰seo优化价格【百度都江堰】
文章都江堰seo优化价格【百度都江堰】由网友旧时月色投稿,希望给你工作学习带来帮助。在当今数字化时代,搜索引擎优化(SEO)对于企业和个人的在线存在至关重要,都江堰作为一个充满活力和发展潜力的城市,也有许多企业和个人希望通过 SEO
构建个人投资组合网站:从基础到进阶
在数字时代,个人投资组合网站成为展示工作成果、技能和专业身份的不可或缺的平台。构建这样的网站不仅可以增强职业形象,还能在求职和客户互动中发挥关键作用。本章将引导你从零开始,详细探讨构建个人投资组合网站的整
谷歌浏览器ipad版
谷歌浏览器ipad版是专门针对苹果ipad设备而开发的一款平板电脑浏览器,全新的外观融入了Material Design设计元素,图形更醒目、操作更流畅、触感更灵敏,能够带给用户流畅的上网体验。另外本款google chrome浏览器ipad版同时还具备网页翻译
连城网站排名优化费用是如何计算的?
连城目前的关键词排名方式有哪些?连城目前关键词排名主要分为竞价排名和自然排名。1、连城关键词自然排名,指的是通过各种搜索引擎优化(seo)方式,使您网站的关键词在搜索引擎自然排名中靠前。2、连城关键词竞价排名,通过对搜索引擎充
请问小红书如何设定推广目标以实现精准引流与品牌爆发?
小红书作为一个集社交、内容分享与电商于一体的平台,为品牌提供了广阔的营销空间。要实现精准引流与品牌爆发,设定明确的推广目标并制定相应的营销策略至关重要。以下是一份详细的小红书营销攻略:一、设定推广目标提升品牌知 名度:通过
相关文章
推荐文章
发表评论
0评