何时使用业务规则引擎
Posted
技术标签:
【中文标题】何时使用业务规则引擎【英文标题】:When is a Business Rules Engine used 【发布时间】:2010-10-21 03:37:24 【问题描述】:什么时候使用业务规则引擎?
业务规则引擎和脚本/配置/定制有什么区别
【问题讨论】:
【参考方案1】:当您尝试在代码中实施决策时,应使用业务规则引擎或业务规则管理系统。但不仅仅是任何决定。一项决定:
涉及很多规则 有经常变化的规则 具有复杂的规则或以复杂方式交互的规则(否则认为有很多嵌套的 IF) 具有只有具有领域知识的人才能理解/验证的规则 是商务人士真正希望能够在没有您帮助的情况下进行更改的一种方式 涉及使用预测分析/评分作为决策的一部分这些决策可以为使用业务规则管理系统带来回报。不要从规则开始,从决定开始。
业务规则很冗长(因此业务人员发现它们更易于阅读)、声明性而非程序性和原子性(因此它们可以像数据库中的数据一样存储、管理和重用)。
在这篇文章中详细了解为什么要使用业务规则,为什么I believe in business rules。
【讨论】:
【参考方案2】:业务规则引擎通常用于为应用程序提供可定制的“IF some-condtion THEN do-something”类型的逻辑。这些类型的业务规则可以触发某些工作流来执行或将事件知识冒泡到更高级别的规则,从而使它们被评估。
使用规则引擎还可以通过从代码中删除业务逻辑来更轻松地分离关注点。今天的规则引擎通常还提供一个前端,用户可以在其中添加新规则,而无需修改应用程序内的脚本。
规则引擎实现了诸如 Rete 之类的算法(根据 Drools 的经验),这些算法使评估规则的任务更快。规则引擎还提供规则的前向链接、后向链接、混合链接等。然而,这些也可以用脚本语言来实现。您可以使用这两种方法实现一些相同的目标,但我认为这取决于您应该选择哪种途径的规则的复杂性和数量。
看看 Jess 项目中的这个链接:http://www.jes-s-rules.com/guidelines.shtml
它提供了要问自己的问题的逐步演练,以确定规则引擎是否满足您的需求,或者是否过度。
【讨论】:
【参考方案3】:规则引擎可以进行正向和反向链接以及推理。查看 Fair Isaac Blaze、Drools 或 iLog 以了解实施情况。
【讨论】:
以上是关于何时使用业务规则引擎的主要内容,如果未能解决你的问题,请参考以下文章