当前位置: 首页 > 面试题库 >

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

华俊弼
2023-03-14
问题内容

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

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

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

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

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

例如,

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

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

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


问题答案:

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

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

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

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

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



 类似资料:
  • 问题内容: 我正在探索用Java创建简单业务规则引擎的不同方法。我需要为客户提供一个简单的webapp,让他配置一堆规则。规则库示例可能如下所示: 例子如下: 规则引擎非常简单,最终动作可能只是发送给住院病人或门诊病人的两个动作之一。表达式中涉及的运算符可以为,而表达式之间的逻辑运算符为。 我想构建一个Web应用程序,其中用户将用编写一个小脚本,然后对表达式进行评估- 这样,业务规则用简单的英语进

  • 我正在从事这个项目,我的角色是开发使用标准健康保险xml的服务。服务必须在不同的xml字段上进行验证,这涉及将xml数据与数据库表中的数据进行比较。目前,我们假设所有保险公司的验证保持不变。但我怀疑它会保持不变,并且每家公司可能有不同的验证要求。在这种情况下,使用Drools规则引擎并为每家公司开发drl文件并使用规则引擎进行xml验证是个好主意吗

  • 我正在为我的项目评估一个规则引擎。该项目将基于hadoop。我用DROOLS做了一些POC。基本上,我使用DROOL在映射器一侧。基于此,以下是我的观察和质疑。 1) a)我使用DROOLS在300万对象上启动了规则(大约需要17秒)b)我使用简单的Java对象(大约需要17秒)为没有DROOLS的300万对象使用了与DRL文件中相同的if/else循环逻辑。b大约比a快100倍。这是正常行为吗?

  • 我正在向drools规则引擎插入数据,但我无法理解它是如何处理插入的数据的。插入数据的代码是:

  • 我一直在App Engine中阅读有关进入app.yaml的配置指令的参考资料,例如'DBG_ENABLE'。但我在我的Android Studio创建的GAE项目中找不到这个文件。此外,我发现这个文件中的一些指令(例如:缩放)也有等效的appengine-web.xml. 那么,这个yaml文件是怎么回事?我需要创建它吗?哪里

  • 我们已经使用Drools引擎几年了,但是我们的数据已经增长了,我们需要找到一个新的分布式解决方案来处理大量数据。我们有复杂的规则,可以查看几天的数据,这就是为什么Drools非常适合我们,因为我们的内存中只有数据。 你对类似于流口水但分布式/可扩展的东西有什么建议吗? 我确实对这件事进行了研究,但我找不到任何符合我们要求的东西。 谢谢