一尘不染

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

java

我需要一些有关解决此问题的最佳方法的建议。

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

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

Person
     firstName:String
     lastName:String
     departMent:String
     hireDate:Date

我需要在Web应用程序中编写一个编辑器,以允许围绕这些字段构建复杂的规则。我需要支持复杂的嵌套AND /
OR逻辑。我只需要基本运算符,规则应该简单地评估为是或否。如果规则评估为是或否,则将分别发生一项操作。

例如,

firstName包含“值”和(lastName等于“输入”或部门包含“输入”)

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

您将如何解决这个问题?关于规则引擎的一个保留意见是,也许对于一个简单的问题来说它们太复杂了?


阅读 195

收藏
2020-12-03

共1个答案

一尘不染

这不是一个是/不是问题,但是我可以分享我的经验,并希望能对您有所帮助。在一些项目中,我已经非常成功地使用了DROOLS。除了某些情况(另一个团队在重负载下存在DROOLS问题)之外,DROOLS是一个非常有用的库。

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

看起来很琐碎,它需要非常灵活:
1.输入是一组名称-值对变量集,名称不是预先确定的。
2.值,某些名称/值的存在/不存在(基于事件的发生/不存在),触发不同的动作。
3.在运行应用程序时,业务规则可以更改。

也许有更好的解决方案,但无论好坏,我最终都使用了DROOLS。我开发了BPEL,由DROOLS组件做出决策。DROOLS组件在内部从Microsoft
Excel电子表格中读取决策规则。如果文件有更改,它将重建规则。现在,领域专家会在需要时更改此电子表格,我们不会经历痛苦的​​部署!

如果您需要复杂的UI,DROOLS Guvnor是一个易于使用的Web应用程序(具有丰富的UI),它将帮助您的域/主题专家构建规则并将其存储在数据库中。

2020-12-03