Drools DRL:更少的大规则与更多的小规则
Drools DRL: Fewer larger rules vs many smaller rules
我有很多规则约束,可以按 "or" 逻辑组合在一起。例如:3 条规则 "r1"、"r2" 和 "r3"。我可以构造一个 LHS 为:
(r1 || r2 || r3)
或者我可以让他们每个人成为一个单独的规则。无论哪种方式,我都没有关键的功能要求,因为我可以在 Drools 之外独立检测它们的分组。
我想知道从运行时执行的角度(性能、内存等)来看,一种方式是否比另一种方式更有优势。
在 模式级别 的分离处理非常像两个不同的规则,因此无论哪种方式都没有太大的收获或损失。
但是从维护和开发的角度来看,两个单独的规则需要右侧的两个副本,因此在单个规则中使用析取似乎更可取。
建立绑定变量过去有点棘手,但我认为 Drools 的最新版本 (6.x) 可以令人满意地处理这个问题。
请注意,约束级别的析取绝对不应拆分为单独的规则。
我有很多规则约束,可以按 "or" 逻辑组合在一起。例如:3 条规则 "r1"、"r2" 和 "r3"。我可以构造一个 LHS 为:
(r1 || r2 || r3)
或者我可以让他们每个人成为一个单独的规则。无论哪种方式,我都没有关键的功能要求,因为我可以在 Drools 之外独立检测它们的分组。
我想知道从运行时执行的角度(性能、内存等)来看,一种方式是否比另一种方式更有优势。
在 模式级别 的分离处理非常像两个不同的规则,因此无论哪种方式都没有太大的收获或损失。
但是从维护和开发的角度来看,两个单独的规则需要右侧的两个副本,因此在单个规则中使用析取似乎更可取。
建立绑定变量过去有点棘手,但我认为 Drools 的最新版本 (6.x) 可以令人满意地处理这个问题。
请注意,约束级别的析取绝对不应拆分为单独的规则。