规则基于Java的规则引擎

规则引擎  时间:2021-02-25  阅读:()

基于Java的规则引擎

目录

1. 简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

1.1 业务规则. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

1.2 规则引擎产生背景. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2. 规则引擎. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2.1 业务规则. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2.2 规则引擎. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2.3 规则引擎的使用方式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2.4 规则引擎架构与推理. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

2.5 规则引擎的算法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3. Java规则引擎. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.1 Java规则引擎商业产品. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.2 规则引擎产品特点分析. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.2.1 IBMWebSphereILOGJRules. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.2.2 RedhatJBossDools. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.2.3 JESS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

4. Java规则引擎API JSR94. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

4.1 简介. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

4.2 简介Java规则引擎API体系结构. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.2.4 规则管理API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

3.2.5 运行时API. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

4.3 Java规则引擎API安全问题. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

4.4 异常与日志. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

4.5 JSR94小结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

5 规则语言. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .错误未定义书签。

1.简介

1.1业务规则

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

业务规则的理论基础是设置一个或多个条件当满足这些条件时会触发一个或多个操作。

1.2规则引擎产生背景

复杂企业级项目的开发以及其中随外部条件不断变化的业务规则business logic迫切需要分离商业决策者的商业决策逻辑和应用开发者的技术决策并把这些商业决策放在中心数据库或其他统一的地方让它们能在运行时即商务时间可以动态地管理和修改从而提供软件系统的柔性和适应性。规则引擎正是应用于上述动态环境中的一种解决方法。

企业管理者对企业级IT系统的开发有着如下的要求

1. 为提高效率管理流程必须自动化 即使现代商业规则异常复杂

2. 市场要求业务规则经常变化 IT系统必须依据业务规则的变化快速、低成本的更

新

3. 为了快速、低成本的更新业务人员应能直接管理IT系统中的规则不需要程序

开发人员参与。

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

4 程序=算法+数据结构有些复杂的商业规则很难推导出算法和抽象出数据模型5 软件工程要求从需求->设计->编码然而业务规则常常在需求阶段可能还没有明确

在设计和编码后还在变化业务规则往往嵌在系统各处代码中

6 对程序员来说系统已经维护、更新困难更不可能让业务人员来管理。

基于规则的专家系统的出现给开发人员以解决问题的契机。规则引擎由基于规则的专家系统中的推理引擎发展而来。

2.规则引擎

2.1业务规则

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

2.2规则引擎

什么是规则引擎规则引擎是如何执行规则的这可以称之为“什么”与“如何”的问题。到底规则引擎是什么还是目前业界一个比较有争议的问题在JSR-94种也几乎没有定义。可以这样认为充分定义和解决了“如何”的问题 “什么”问题本质上也迎刃而解。也许这又是一种“先有蛋还是先有鸡”哲学争论。今后标准规则语言的定义和推出及相关标准的制定应该可以给这样的问题和争论划上一个句号。本文中暂且这样述说什么是规则引擎规则引擎由推理引擎发展而来是一种嵌入在应用程序中的组件实现了将业务决策从应用程序代码中分离出来并使用预定义的语义模块编写业务决策。接受数据输入解释业务规则并根据规则做出业务决策。

2.3规则引擎的使用方式

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

 加载和卸载规则集的API

 数据操作的API

 引擎执行的API。

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

 创建规则引擎对象

 向引擎中加载规则集或更换规则集

 向引擎提交需要被规则集处理的数据对象集合

 命令引擎执行

 导出引擎执行结果从引擎中撤出处理过的数据。

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

2.4规则引擎架构与推理

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

规则引擎的推理步骤如下a.将初始数据fact输入至工作内存Working Memory。b.使用Pattern Matcher将规则库Rules repository中的规则rule和数据fact比较。c.如果执行规则存在冲突confl ict即同时激活了多个规则将冲突的规则放入冲突集合。d.解决冲突将激活的规则按顺序放入Agenda。

e.执行Agenda中的规则。重复步骤b至e直到执行完毕Agenda中的所有规则。

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

当引擎执行时会根据规则执行队列中的优先顺序逐条执行规则执行实例由于规则的执行部分可能会改变工作区的数据对象从而会使队列中的某些规则执行实例因为条件改变而失效必须从队列中撤销也可能会激活原来不满足条件的规则生成新的规则执行实例进入队列。于是就产生了一种“动态”的规则执行链形成规则的推理机制。这种规则的“链式”反应完全是由工作区中的数据驱动的。

规则条件匹配的效率决定了引擎的性能引擎需要迅速测试工作区中的数据对象从加载的规则集中发现符合条件的规则生成规则执行实例。 1982年美国卡耐基·梅隆大学的Charles L. Forgy发明了一种叫Rete的算法很好地解决了这方面的问题。 目前世界顶尖的商用业务规则引擎产品基本上都使用Rete算法。

2.5规则引擎的算法

大部分规则引擎产品的算法基本上都来自于Dr. Charles Forgy在1979年提出的RETE算法及其变体 Rete算法是目前效率最高的一个Forward-Chaining推理算法Drools项目是Rete算法的一个面向对象的Java实现 Rete算法其核心思想是将分离的匹配项根据内容动态构造匹配树 以达到显著降低计算量的效果。

详情请见CIS587The RETEAlgorithmThe ReteAlgorithm RETE演算法 《专家系统原理与编程》中第11章等。

3.Java规则引擎

目前主流的规则引擎组件多是基于Java和C++程序语言环境已经有多种Java规则引擎商业产品与开源项目的实现其中有的已经支持JSR94有的正朝这个方向做出努力列出如下

3.1 Java规则引擎商业产品

Java规则引擎商业产品主要有Jess不是开源项目它可以免费用于学术研究但用于商业用途则要收费

3.2规则引擎产品特点分析

这里对目前市场上几个比较重要的基于Java的商业规则引擎产品进行特点分析。

3.2.1 IBM WebSphere ILOGJRules

作为企业IT基础设施的关键部分业务流程管理越来越重要了。在B P M产品套件平台上可以建模、部署、执行和监视企业的业务流程业务流程可以包含业务规则。例如在银行的账户验证过程中评估客户资格或确定价格的业务策略很复杂而且在快速发展的市场中常常会变动。把这些策略硬编码在过程中是不合适的因为很难在运行时管理和维护业务规则。通过把业务规则和业务流程分隔开单独地执行和管理它们可以提高整个业务流程的敏捷性和扩展性。

ILOG的JRules在融入到IBM的WebSphere套件体系后在架构层面和技术层面充分体现了这种业务流程与业务规则分离的思想如下图所示

ILOG JRules是先进的业务规则管理系统Business Rule Management SystemBRMS提供编写、部署和管理业务规则等业务功能支持高效地修改策略和快速部署策

略。

ILOG JRules提供一种建模、实现和部署业务规则的系统化方法。它支持以有秩序的高效的方式进行协作。它包含的工具针对不同用户的技能和知识优化过因此策略经理、业务分析师和开发人员都可以获得所需的支持可以尽可能发挥BRMS的价值。

下图是JRules的架构

下面简要介绍ILOG JRules架构的每个部分

ILOG Rule Studio用于开发规则应用程序的基于Ecl ipse的开发环境。它允许合作编辑和调试Java™代码和规则。特性包括

 Ecl ipse集成

 编辑规则时的自动纠正

 代码生成向导

 单一接口存储库

 源代码控制集成

建站选择网站域名和IP主机地址之间关系和注意要点

今天中午的时候有网友联系到在选择网站域名建站和主机的时候问到域名和IP地址有没有关联,或者需要注意的问题。毕竟我们在需要建站的时候,我们需要选择网站域名和主机,而主机有虚拟主机,包括共享和独立IP,同时还有云服务器、独立服务器、站群服务器等形式。通过这篇文章,简单的梳理关于网站域名和IP之间的关系。第一、什么是域名所谓网站域名,就是我们看到的类似"www.laozuo.org",我们可以通过直接记...

俄罗斯vps主机推荐,怎么样俄罗斯vps俄罗斯vps速度怎么样?

俄罗斯vps速度怎么样?俄罗斯vps云主机节点是欧洲十大节点之一,地处俄罗斯首都莫斯科,网络带宽辐射周边欧洲大陆,10G专线连通德国法兰克福、法国巴黎、意大利米兰等,向外连接全球。俄罗斯vps云主机速度快吗、延迟多少?由于俄罗斯数据中心出口带宽充足,俄罗斯vps云主机到全球各地的延迟、速度相对来说都不错。今天,云服务器网(yuntue.com)小编介绍一下俄罗斯vps速度及俄罗斯vps主机推荐!俄...

LOCVPS:美国XEN架构VPS七折,全场八折,日本/新加坡XEN架构月付29.6元起

LOCVPS发来了针对XEN架构VPS的促销方案,其中美国洛杉矶机房7折,其余日本/新加坡/中国香港等机房全部8折,优惠后日本/新加坡机房XEN VPS月付仅29.6元起。这是成立较久的一家国人VPS服务商,目前提供美国洛杉矶(MC/C3)、和中国香港(邦联、沙田电信、大埔)、日本(东京、大阪)、新加坡、德国和荷兰等机房VPS主机,基于XEN或者KVM虚拟架构,均选择国内访问线路不错的机房,适合建...

规则引擎为你推荐
快速美白好方法快速美白方法百度抢票浏览器现在火车票越来越难买了,新版百度手机浏览器,除了抢票外,还有什么其他功能吗?自助建站自助建站哪个平台最好?数码资源网手机练习打字的软件唱吧电脑版官方下载电脑怎么安装唱吧,要能用的,请教教程,谢谢蘑菇街美丽说蘑菇街、美丽说这类网站前期是怎么推广的?godaddygodaddy域名怎样使用神雕侠侣礼包大全神雕侠侣手游每天送的元宝买什么合适ios系统ios系统有哪些版本?srv记录如何验证是否为域控制器创建了 SRV DNS 记录
老域名全部失效请记好新域名 diahosting cve-2014-6271 老左博客 mobaxterm debian源 500m空间 dux 阿里云浏览器 流量计费 可外链相册 南通服务器 免费网页空间 如何注册阿里云邮箱 常州联通宽带 河南移动梦网 linode支付宝 vul 免费asp空间申请 windowssever2008 更多