drools - 如何扩展规则以覆盖现有规则
问题描述
我需要设计一个解决方案,其中一组规则可以用另一组规则扩展,而无需修改原始集。
问题:简单地组合来自不同规则集的规则时可能会发生冲突,因为可以匹配多个规则。当与基本规则冲突时,系统应仅触发扩展规则。
例子:
用于确定加班的时间跟踪系统具有一个阈值来决定何时将额外时间计入加班。
- 基本规则将加班时间计为超过分钟的时间。30分钟。
- 扩展规则将超时计算为超过分钟的时间。60 分钟。
所以扩展规则更加严格,因为你必须工作至少 60 分钟才能算作额外时间(否则你得到 0),但原始规则计算超过 30 分钟的任何时间。
因此,这两个规则都存在,并且您在工作中花费了 +45 分钟,基本规则将触发并计算它。但我们不希望这样,因为扩展规则具有更高的阈值。
解决方案
您可以将每个规则放在不同的agenda-group
. 当您想对包含它的 30 分钟规则使用focus
时agenda-group
。当您想对包含该内容的内容使用 60 分钟规则focus
时agenda-group
。
或者focus
两者兼而有之agenda-groups
。我们匹配的规则在最近关注的agenda-group
第一。
推荐阅读
- sql - 对重复行求和而不使用 group by
- javascript - 鉴于这种情况,在 JavaScript 中使用 async/await 的正确方法是什么
- java - 添加 spring-boot-starter-parent 删除 javax.validation.*
- javascript - React Dropzone FileReader - 无法读取为文件:{}
- javascript - 将树枝模板中的 JS 脚本转换为简单的 js 文件
- oop - MVP 或 MVC 模式中的代表性数据放在哪里?
- php - AWS Elastic Beanstalk - Laravel Artisan 命令
- javascript - 滚动条上的产品照片滑块
- python - python for循环中的性能优化
- protractor - 如何在不知道弹出窗口代码的情况下将登录名/密码输入浏览器?