将多个Drools DRL文件添加到KieBase中,这会如何影响规则的执行顺序



我想将不同的drl文件加载到kiebase中,如果规则没有附加显著性属性,那么默认执行顺序会与它们在kmodule中指定的顺序对齐吗?我的意思是,Drools在幕后,只是从多个drl文件中自动创建一个大的drl文件,然后执行。我的理解是,如果规则文件中的规则没有显著性,那么在编写时就会执行这些规则,除非对现有事实进行任何修改/插入,否则可能会重新触发规则。

谢谢。

除非分配了显著性,否则不应该依赖执行顺序。在匹配阶段,Drools将按显著性(默认值为零(对规则进行排序。在显著性中,没有保证的执行顺序,尽管它通常是编写的顺序。对于多个文件,这是写入文件系统的顺序——所以它将依次加载每个文件和每个文件中的每个规则。

虽然你可以保证显著性为100的规则会在显著性为10的规则之前启动,但不能保证显著性100内规则的顺序。此外,如果你的显著性为100的规则扩展了显著性为-1的规则,那么显著性为1的规则将在显著性为10之前触发。

您不应该编写依赖于加载顺序或类似内容的规则。如果您的规则需要按特定顺序执行,请使用显著性。否则,编写具有互斥左侧的更好的规则。

最新更新