我想,我需要一个简单的规则引擎?

And*_*ndy 20 java rule-engine business-logic rules

我需要一些关于解决这个问题的最佳方法的建议.

我研究了DROOLS,Java Rule Engine和其他一些.所有这些都是强大的,并且对它们有好处.我不知道哪个(如果有的话)对我来说是最好的选择.

我有一个业务对象.(简化演示)

Person
     firstName:String
     lastName:String
     departMent:String
     hireDate:Date
Run Code Online (Sandbox Code Playgroud)

我需要在Web应用程序中编写一个编辑器,以便围绕这些字段构建复杂的规则.我需要支持复杂的嵌套AND/OR逻辑.我只需要基本的运算符,规则应该简单地评估为真或假.如果规则评估为true或false,则将分别执行一个操作.

例如,

firstName CONTAINS"value"AND(lastName EQUALS"input"OR department CONTAINS"input")

我曾想过,也许我应该编写自己的解析器并在我自己的代码中评估逻辑.我不知道该怎么做,任何建议或链接到阅读的东西将不胜感激.我可以研究一种特定的设计模式吗?

你会如何解决这个问题?关于规则引擎的一个保留意见是,它们可能过于复杂而不仅仅是一个简单的问题?

CMR*_*CMR 5

这不是一个是/否的问题,但我可以分享我的经验,并希望它有所帮助.我在一些项目中非常成功地使用了DROOLS.除了一些情况(另一个团队在重载下遇到DROOLS问题),DROOLS是一个非常有用的库.

我构建了一个应用程序:
1.从源读取输入
2.根据一组可用操作的输入选择下一个操作

尽管看起来微不足道,但它需要非常灵活:
1.输入是一组可变的名称 - 值对,名称未预先确定.
2.值,某些名称/值的存在/不存在(基于事件的发生/不存在),触发不同的动作.
3.应用程序运行时,业务规则可能会发生变化.

也许有更好的解决方案,但是是好还是坏,我结束了使用Drools的.我公司开发的BPEL其中决定由滴料成分制成.DROOLS组件在内部从Microsoft Excel电子表格中读取决策制定规则.如果文件发生更改,它会重建规则.现在领域专家会在需要时更改此电子表格,我们不会经历痛苦的​​部署!

如果你想有一个复杂的UI,流口水的Guvnor是一个现成的网络应用程序(具有丰富的用户界面),这将有助于您的域/主题专家建立的规则,并将它们存储在数据库中.