java—将多个drools drl文件添加到kiebase中,这对规则的执行顺序有何影响?

q8l4jmvw  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(584)

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

4xy9mtcn

4xy9mtcn1#

你不应该依赖于执行命令,除非你分配了显著性。在匹配阶段,drools将按显著性排序规则(默认值为零)。在显著性中没有保证的执行命令,尽管它通常是写的命令。对于多个文件,这是写入文件系统的顺序——因此它将按顺序加载每个文件,并按顺序加载每个文件中的每个规则。
虽然您可以保证具有显著性100的规则将在具有显著性10的规则之前触发,但无法保证在显著性100中规则的顺序。此外,如果你的规则与显着100扩展规则与显着-1,该规则与显着-1将必然火之前显着10。
您不应该编写依赖于加载顺序之类的规则。如果您的规则需要按特定顺序执行,请使用saliences。否则写更好的规则,有相互排斥的左手边。

相关问题