我们正在规划一个业务规则系统,并选择 JBoss Drools 来开始测试我们的用例。我们计划按如下方式构建 DRL 文件:
Global.drl
Company1.drl
Company1/Team1.drl
Company1/Team2.drl
...
Company1/TeamN.drl
Company2.drl
...
CompanyN.drl
这种结构将帮助我们确定针对不同类别的业务对象运行哪些规则。
现在的问题是:
- 如何知道在大量规则的系统中是否已经存在相似/冲突的规则。当规则系统不断增长时,添加新规则是否需要开发人员在编写新规则之前手动扫描所有规则以验证冲突规则?
- 如何在如此庞大的规则系统中正确排序规则(使用显着性)?
- 有没有一种方法可以快速列出特定类别的规则,这有助于我们在添加新规则之前了解现有的相似规则。
谢谢
最佳答案
一些答案:
- 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?
没有现成的方法可以做到这一点。我发现保持规则库一致的最佳方法是进行一组广泛的测试来验证尽可能多的场景。
- How to correctly order the rules (using salience) in such a large rules system?
良好的实践告诉我们,在规则的执行中建立顺序通常不是一个好主意。规则本身应该尽可能独立于其他规则的执行。当然,在某些情况下您需要设置特定的顺序。在这些情况下,Drools 提供了一些方法来实现这一目标:
- salience :它允许您指定规则的执行顺序。
- agenda-group :它允许您将规则分组为逻辑组,并且仅执行特定组中的规则。您可以链接这些组的执行。
- 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/