我正在审计一个使用 规则引擎的项目。简而言之,它是将业务逻辑从应用程序代码外部化的一种方法。
这个概念对我来说是全新的,我对此持怀疑态度。在过去几年听到人们谈论 贫血领域模型之后,我开始质疑规则引擎方法。在我看来,它们似乎是削弱域模型的一个很好的方法。例如,假设我正在做一个与 Rules Engine 交互的 java Web 应用程序。然后我决定我想要一个基于同一个域名的 Android 应用程序。除非我希望 Android 应用程序也与规则引擎交互,否则我将不得不错过已经编写的任何业务逻辑。
由于我还没有任何使用规则引擎的经验,只是出于好奇,我有兴趣了解使用规则引擎的利弊?我能想到的唯一优点是,您不需要仅仅为了改变某些业务规则而重新构建整个应用程序(但实际上,有多少应用程序真的有那么多变化?).但是使用规则引擎来解决这个问题在我看来就像在猎枪伤口上贴创可贴一样。
更新——自从写下这篇文章以来,上帝马丁 · 福勒(Martin Fowler)就拥有了 关于使用 Rules 引擎的博客。