我需要一些关于解决这个问题的最佳方法的建议。
我研究了 DROOLS、Java 规则引擎和其他一些引擎。所有这些都很强大,并且都有好处。我不知道哪一个(如果有的话)对我来说是最好的选择。
我有一个商业对象。 (为了演示而简化)
Person
firstName:String
lastName:String
departMent:String
hireDate:Date
我需要在 Web 应用程序中编写一个编辑器,允许围绕这些字段构建复杂的规则。我需要支持复杂的嵌套 AND/OR 逻辑。我只需要基本运算符,并且规则应该简单地评估为 true 或 false。如果规则评估为 true 或 false,则将分别发生一个操作。
例如,
名字包含“值”并且
(姓氏等于“输入”或部门
包含“输入”)
我曾想,也许我应该编写自己的解析器并评估自己代码中的逻辑。我不知道该怎么做,任何建议或阅读内容的链接将不胜感激。有我可以研究的特定设计模式吗?
你会如何解决这个问题?对规则引擎的一个保留意见是,对于一个简单的问题来说,它们可能太复杂了?
这不是一个是/否的问题,但我可以分享我的经验,希望它有所帮助。
我在一些项目中非常成功地使用了 DROOLS。除了某些情况(另一个团队在重负载下遇到 DROOLS 问题)之外,DROOLS 是一个非常有用的库。
我构建了一个应用程序:
1. 从源读取输入
2. 根据一组可用操作的输入选择下一个操作
尽管看起来很简单,但它需要非常灵活:
1. 输入是一组变量名称-值对,名称不是预先确定的。
2.值,某些名称/值的存在/不存在(基于事件的发生/不存在),触发不同的操作。
3. 业务规则可以在应用程序运行时发生变化。
也许有更好的解决方案,但无论好坏,我最终使用了 DROOLS。我开发了一个 BPEL,其中的决策是由 DROOLS 组件做出的。 DROOLS 组件在内部从 Microsoft Excel 电子表格读取决策规则。如果文件发生更改,它会重建规则。
现在,领域专家会在需要时更改此电子表格,并且我们不会经历痛苦的部署!
如果您想要复杂的 UI,DROOLS Guvnor 是一个随时可用的 Web 应用程序(具有丰富的 UI),它将帮助您的领域/主题专家构建规则并将其存储在数据库中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)