【问题标题】:Managing large number of rules - Drools管理大量规则 - Drools
【发布时间】:2018-02-12 06:13:21
【问题描述】:

我们正在规划一个业务规则系统,并且我们选择了 JBoss Drools 来开始测试我们的用例。我们计划按如下方式构建 DRL 文件:

Global.drl
     Company1.drl
          Company1/Team1.drl
          Company1/Team2.drl
          ...
          Company1/TeamN.drl             
     Company2.drl
     ...
     CompanyN.drl

这种结构将帮助我们确定为不同类别的业务对象运行哪些规则。

现在的问题是:

  1. 如何知道在包含大量规则的系统中是否已经存在类似/冲突的规则。当规则系统增长时,添加新规则是否需要开发人员在编写新规则之前手动扫描所有规则以验证冲突规则?
  2. 如何在如此庞大的规则系统中正确排序规则(使用显着性)?
  3. 有没有办法快速列出特定类别的规则,这将有助于我们在添加新规则之前了解现有的相似规则。

谢谢

【问题讨论】:

  • 规则表达了一个商业事实。流口水应该如何判断商业事实是否相互矛盾?

标签: java drools


【解决方案1】:

一些答案​​:

  1. 如何知道在包含大量规则的系统中是否已经存在类似/冲突的规则。当规则系统 增长,添加新规则是否需要开发人员扫描 在编写之前手动验证所有规则以验证冲突的规则 新规则?

没有开箱即用的方法可以做到这一点。我发现保持一致规则库的最佳方法是进行大量测试以验证尽可能多的场景。

  1. 如何在如此庞大的规则系统中正确排序规则(使用显着性)?

良好的实践告诉我们,在规则的执行中建立秩序通常不是一个好主意。规则本身应该以尽可能独立于其他规则执行的方式来完成。当然,在某些情况下,您需要设置特定的顺序。在这些情况下,Drools 提供了一些方法来实现这一点:

  • salience:它允许你指定规则的EXECUTION顺序。
  • agenda-group:它允许您将规则分组到逻辑组中,并且只执行特定组中的规则。您可以链接这些组的执行。
  1. 有没有办法快速列出特定类别的规则,这将有助于我们在添加新规则之前了解现有的相似规则。

不确定您所说的类别是什么意思,但我想答案是否定的。

希望对你有帮助,

【讨论】:

  • 我同意 Drools 中没有现成的方法来实现这一点。谢谢
猜你喜欢
  • 1970-01-01
  • 2013-11-26
  • 2017-04-16
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
相关资源
最近更新 更多