你是否应该使用规则引擎

5 篇文章 0 订阅
3 篇文章 0 订阅
“规则引擎由推理引擎发展而来,是一种嵌入在应用程序中的组件,实现了将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策。接受数据输入,解释业务规则,并根据业务规则做出业务决策。” -- 摘自百度百科。
上面的解释可能过于晦涩了。我们来看看Martin的文章,就觉得这是很简单的东西了。

Martin Fowler关于规则引擎的介绍:
  • 根据 Fowler 的描述,规则引擎很简单, 可以自己设计一个,只需要condition和action,并这两者装入collection即可。
               所以,根据 Fowler 讲的,有个老外自己实现的简单引擎, 确实只需要Condition和Action:
  • 我们是否应该使用规则引擎? 想象下, 当我们把可定义的规则后台开放给业务运营使用后,总会有一些程序难以把控的边界情况被业务使用后造成问题。并且,通常这种情况是程序猿意想不到的。特别的,当它还是一个定义复杂的规则的时候,通常非常难以调试。这是可以想象的, 因为有些规则没有经过程序逻辑的严谨设计。基于此,Martin 有点厌倦rule engine这类产品,甚至建议大家在没太大必要的情况下, 不要使用rule engine。
  • 基于上面的情况下, 非常有必要限制过多的condition, 特别关注有嵌套逻辑的情况。
  • 在关注性能的情况下, 请关注你使用的规则引擎是否apply了 Rete算法。
Rule engine适用场景, 个人觉得在其适用在企业自动化办公系统(OA)、内部ERP部分场景; 一般有工作流引擎需要的系统, 规则引擎也有应用的需要。但切记 不要开放过于复杂的规则逻辑给业务方使用,除非你确实能控制并fully tested。
对于电商系统, 营销功能部分, 可以使用规则引擎来实现,但不建议开放给业务侧。

如果一定要使用规则引擎,推荐使用开源的规则引擎产品 Drools, 以下附上相关资料供学习之:

官方文档:
http://www.jboss.org/drools/documentation.html

There are two books from PackIt publishing that aren't bad:
https://www.packtpub.com/drools-jboss-rules-5-0-developers-guide/book
https://www.packtpub.com/jboss-drools-business-rules/book

InfoQ上面的一遍好文章:
http://www.infoq.com/articles/Rule-Engines

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值