Java规则引擎的优缺点[关闭]

2024-03-20

采用 Java 规则引擎的优点和缺点是什么JESS http://www.jessrules.com/ and Drools http://www.jboss.org/drools/?还有其他玩家吗?

我知道 Drools 是开源的,而 JESS 不是,但是它们在其他方面(例如易用性、性能、与代码的集成程度)方面如何比较?


采用 Java 规则引擎 JESS 和 Drools 有何优缺点?

如果需要将业务规则与应用程序逻辑分开,请使用规则引擎。这您的项目需要规则引擎吗 http://web.archive.org/web/20190717073452/http://java.sys-con.com:80/node/45082文章有一个很好的例子:

例如,一个典型的店面 系统可能涉及计算代码 折扣:

if (product.quantity > 100 && product.quantity < 500) {
  product.discount = 2;
} else if (product.quantity >= 500 && product.quantity < 2000) {
  product.discount = 5;
} else if (product.quantity >= 2000) {
  product.discount = 10;
}

规则引擎将上面的内容替换为 代码如下所示:

ruleEngine.applyRules(product);

由您决定将规则管理控制台交给非技术人员是否是一件好事:)

更多详情请参阅我应该使用规则引擎吗? http://martinfowler.com/bliki/RulesEngine.html, 为什么要使用规则引擎? http://www.jbug.jp/trans/jboss-rules3.0.2/ja/html/ch01s02.html, 决定是否使用规则引擎的一些准则 http://www.jessrules.com/guidelines.shtml and on Google http://www.google.com/search?q=when+to+use+a+rule+engine.

还有其他玩家吗?

其他播放器包括 JRules、Corticon(JRules 是 IMO 中最著名的 - 这并不意味着最好的)。

它们在其他方面(例如易用性、性能、与代码的集成程度)方面如何比较?

不能准确地告诉你,我对 Drools 只有一点(积极的)经验。但您会从博客文章中得到一些反馈,例如JBoss Drools 与 ILog JRules - 轶事故事 http://blog.athico.com/2007/08/jboss-drools-vs-ilog-jrules.html(请务必阅读)或从 JRules 角度使用 Drools http://randomconsultant.blogspot.com/2008/07/working-with-drools-from-jrules.html。我相信你可以在 Google 上找到更多(但我会尝试 Drools)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java规则引擎的优缺点[关闭] 的相关文章

  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • 如何通过 javaconfig 使用 SchedulerFactoryBean.schedulerContextAsMap

    我使用 Spring 4 0 并将项目从 xml 移至 java config 除了访问 Service scheduleService 带注释的类来自QuartzJobBean executeInternal 我必须让它工作的 xml 位
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 在我的 Spring Boot 示例中无法打开版本 3 中的 Swagger UI

    我在 Spring Boot 示例中打开 swagger ui 时遇到问题 当我访问 localhost 8080 swagger ui 或 localhost 8080 root api name swagger ui 时出现这种错误 S
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • 为 cocoapod 依赖项指定预处理器宏,而不分叉它

    我有一个 Xcode 工作区 由Cocoapod对外部库有一些依赖 其中之一 MTDates https github com mysterioustrousers MTDates 延伸NSDate and NSDateComponents
  • Gravatar:如何知道用户是否拥有真实图片

    我已经在我的网站上使用了头像服务 但我想知道用户是否上传了他们的照片 有办法知道这一点吗 构造URL时 使用参数d 404 如果用户未设置图片 这将导致 Gravatar 返回 404 错误而不是图像 如果您使用从 gravitar 站点链
  • 将整数转换为单词

    为了设计数据可视化样式 我希望能够使用单词显示整数 例如 两千一十七 而不是数字 例如2017 作为我正在寻找的示例 这里有一个适用于小标量整数的快速函数 int to words lt function x index lt as int
  • AppFabric 缓存 - 对象的序列化和反序列化要求是什么?

    问题 当缓存类的实例并立即将其从缓存中取出时 我取回了对象 它不为空 但其所有属性 字段均为空或默认值 cacheHelper PutInCache testModuleControlInfoOne mci mci has populate
  • 在 JavaScript 中解析 ISO 8601 日期

    我需要有关将具有以下结构的 ISO 8601 日期转换为 JavaScript 的帮助 提示 CCYY MM DDThh mm ssTZD 我想像这样设置日期格式 January 28 2011 7 30PM EST 我想让这个解决方案尽可
  • Jquery UI 自动完成图像

    我在这段代码中遇到错误 有谁能够帮助我 h4 search h4
  • 使用平均成本基础法计算成本

    我有这个 pandas 数据框 我按 股票代码 升序排列 然后按 日期 和 类型 排序 它表示相对于 股票代码 列中股票的交易 Type Ticker Qty Price Amount TotalQty Date 2020 03 01 Bu
  • 操作员之间的气流和数据传输

    我是 Airflow 新手 对 Airflow 及其处理器有疑问 当处理器产生输出时 如何将该输出作为输入移动到下一个处理器 有一个名为 nifi 的软件 它将中间输出存储到流文件中 据我所知 airflow 中没有这样的软件 那么这是怎么
  • 如何在自己的自定义解串器中使用一些 Jackson 解串器?

    我正在努力解决问题中提到的问题 我需要创建一些自定义反序列化器 它或多或少是从标准反序列化器进行类型转换的 原因是ZonedDateTime正在为我的输入工作 但我不想将类型更改为ZonedDateTime 但保留LocalDateTime
  • keras 指标在训练期间不同

    我已经实现了一个基于 SIM 的自定义指标 当我尝试代码时它可以工作 我已经使用张量和 np 数组实现了它 并且都给出了相同的结果 然而 当我开始拟合模型时 返回的值比加载训练生成的权重并应用相同函数时得到的值要高得多 我的职能是 def
  • 通过 SSH 隧道的 PostgreSQL

    我想使用 RazorSQL 连接到在远程服务器上运行的数据库 我使用以下命令在本地主机上创建 SSH 隧道 ssh L 1111 remote server com 5432 email protected cdn cgi l email
  • 是否可以将目录从 Google Compute Engine 实例复制到我的本地计算机?

    使用 scp 我可以添加 r标志通过 ssh 将目录下载到我的本地计算机 使用时 gcloud compute scp r 它说 r 不是可用的选项 如果没有 r 我会收到一条错误消息 指出我的源路径是一个目录 这意味着我只能下载单个文件
  • 如何通过按钮选择或不选择剑道网格

    我有一个网格 在网格定义中启用了选择模式 selectable true 我需要通过按钮使网格不可选择 我尝试了这个 但它不起作用 disableKendoGrid click function var grid myGrid data k
  • 带有 VB6/asp 错误的 C# COM 对象

    我正在尝试通过 COM 公开 C 类库 以便我可以在经典的 ASP 网站中使用它 我用过 sn k regasm 和 gacutil 我现在能做的就是回显字符串 以类变量作为输入的方法对我不起作用 即我的测试方法 EchoPerson Pe
  • 如何编写一个单元测试,其中每个测试用例都有不同的输入但执行相同的操作?

    我需要为一些 python 类创建一个单元测试 我有一个输入和预期结果的数据库 这些输入和预期结果应该由 UUT 为这些输入生成 这是我想要做的伪代码 for i 1 to NUM TEST CASES Load input for tes
  • PowerShell模块,从另一个NestedModule调用NestedModule中的函数

    我有一个 Powershell 模块 在清单中我声明了主模块和两个嵌套模块 模块结构如下 dir Pivot DockerAdmin manifest Pivot DockerAdmin psd1 main module file Pivo
  • 在 Eclipse 中进行 ProGuard 混淆后,Google 地图未加载

    我正在开发一个使用谷歌地图的应用程序 该应用程序工作正常 直到我导出签名的应用程序包 代码被混淆后 地图不再加载 我对 ProGuard 还很陌生 我尝试过修改 proguard cfg 但到目前为止没有任何效果 以下是我尝试过的一些不同的
  • React JS:在 onChange 下拉菜单中传递事件(Ant Design)

    我的表格中有一个下拉菜单 https ant design components select https ant design components select 在此选择下拉列表中 我有 onChange 来调用函数 在 onChang
  • Instagram Graph API,获取关注者的关注者

    我正在尝试想办法 由于大多数 旧 API 已被关闭 我查看了 Graph API 我想检索特定用户的关注者列表 我一辈子都想不通 这真的不可能了吗 Business Discovery API 仅限于企业帐户 目前整个 Graph API
  • Java规则引擎的优缺点[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 采用 Java 规则引擎的优点和缺点是什么JESS http www jessrules com and Drools http www jbo