管理大量规则 - Drools

时间:2018-02-12 06:13:22

标签: 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. 有没有办法快速列出特定类别的规则,这有助于我们在添加新规则之前了解相似的现有规则。
  4. 由于

1 个答案:

答案 0 :(得分:2)

一些答案​​:

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

没有开箱即用的方法来做到这一点。我发现保持连贯规则库的最佳方法是使用一组广泛的测试来验证尽可能多的场景。

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

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

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

不确定 category 的含义,但我猜答案是否定的。

希望它有所帮助,