Guided Decision Table 和 Guided Rule 具有相同的规则流组。哪个规则会先被执行?

Guided Decision Table and Guided Rule has same ruleflow group. Which rule would get executed first?

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

是否有特定原因“为什么引导规则先执行而引导决策 tables 稍后执行,即使它们具有相同的规则流组”

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

如果您的规则要求它们按特定顺序执行,您应该在它们上放置显着性,以便规则 X 始终在规则 Y 之前执行,因为它们具有显着性。或者,您可以将规则重写为 not rely on execution order(无论如何这被认为是好的做法。)

Drools 提供的唯一顺序保证是给定显着性的规则将同时执行,尽管这些规则的顺序 显着性内无法保证。没有显着性的规则都默认显着性为 0,所以这个保证成立。所有规则都执行,但不能保证顺序,也不一定能提前一致确定(因此“非确定性”。)


真的,归根结底,当您的问题是“先执行哪个规则?”答案是——除非你有显着性,否则这无关紧要。如果确实重要,您需要修改规则。