导向决策表和导向规则具有相同的规则流组.哪条规则会首先执行?



我有一个指导规则文件,它为一些收敛因子设置了配置。后来我有了一个指导决策表,它具有相同的规则流组。即使我在这两个文件中没有提到任何显著性,也会首先执行Guided Rule并设置配置值,然后将相同的模型导入到Guided Decision表中,并且在Guided Rule中设置的这些默认值将在Guided Decision表中使用。

为什么引导规则先执行,而引导决策表后执行,尽管它们具有相同的规则流组

除非使用显著性,否则执行顺序是不确定的。不能保证规则A总是在规则b之前,它现在可能总是按照这个顺序(A -> B)进行,但这不能保证,明天或下次你改变规则或版本更新时,它可能以不同的顺序进行。它通常与规则加载到内存中的顺序有关,(这就是为什么单个DRL文件中的非显著性规则倾向于从文件顶部到文件底部执行,因为这是它们读取的顺序。)

如果你的规则需要以特定的顺序执行,你应该在它们上添加显著性,这样规则X就会在规则Y之前执行,因为它们上有显著性。或者,您可以将规则重写为而不是依赖于执行顺序(无论如何,这被认为是一种良好的实践)

Drools提供的唯一顺序保证是给定显著性的规则将同时执行,尽管不保证这些规则显著性中的顺序。没有显著性的规则都默认为显著性0,因此此保证成立。所有的规则都被执行,但是没有顺序得到保证,并且不能提前一致地确定(因此"非确定性")


所以,在一天结束的时候,当你的问题是"哪条规则首先执行?"答案是——除非你有显著性,否则这没什么关系。如果很重要,你需要修改你的规则。

最新更新