java - 管理大量规则 - Drools

标签 java drools

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

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

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

现在的问题是:

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

谢谢

最佳答案

一些答案​​:

  1. How to know whether there is a similar/conflicting rule already present in a system of large number of rules. When the rules system grows, does adding the new rule requires the developer to scan through all the rules manually to verify the conflicting rules, before writing new rule?

没有现成的方法可以做到这一点。我发现保持规则库一致的最佳方法是进行一组广泛的测试来验证尽可能多的场景。

  1. How to correctly order the rules (using salience) in such a large rules system?

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

  • salience :它允许您指定规则的执行顺序。
  • agenda-group :它允许您将规则分组为逻辑组,并且仅执行特定组中的规则。您可以链接这些组的执行。
  1. Is there a way to quickly list rules of a particular category, which will help us to know the existing rules that are similar before adding new rule.

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

希望对你有帮助

关于java - 管理大量规则 - Drools,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48740506/

相关文章:

java - 查询包含集合(集合)的大行时,Cassandra 出现内存不足错误

java - Alfresco Share : java.net.SocketException:没有可用的缓冲区空间

java - Spring AMQP @RabbitListener 自定义业务错误重试最佳实践

java - 比较重度嵌套的 Json 并打印出结构和值的差异

java - Drools 决策表对象比较给出了相反的结果

java - 我可以在不知道子类是哪个子类的情况下创建子类的列表吗?

java - 使用滑动窗口时事实无法自动删除

java - 错误的类格式将包从 Java 7 构建到 Java 8

java - http ://anonsvn. jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd 返回 301

java - 非常基本的 drools 5 运行,基本设置和快速入门