流口水的显着性

时间:2010-09-09 02:40:03

标签: drools

具有相同显着性的几条规则的结果是什么?他们的执行顺序是他们列出的顺序,还是未定义的行为 - 也就是说,他们是否以任意顺序检查?我似乎无法找到内部处理方式的文档。

3 个答案:

答案 0 :(得分:12)

简短的回答是,如果他们“处于冲突中”(即两者都有资格开除),你不应该依赖相同显着性的规则发射顺序。没有显着性的规则只是突出零,BTW。

当然它是确定性的 - 它只是算法在版本之间变化(尽管不太可能)。

这是在“冲突解决”的一般领域,并且已经写了很多。我找不到关于Drools策略的最新文章 - 但我相信大部分是“新近度” - 即最近修改/插入的事实“获胜” - 或者更确切地说,涉及最近事实的规则将获胜。如果它无法决定 - 它通常是它们加载规则的顺序(通常与它们在文件中的写入方式相关)。如果您必须订购 - 使用显着性,或使用规则流或类似的,最好不要再猜测它是如何工作的。

答案 1 :(得分:2)

Rete算法使用条件的新近度和特异性。

答案 2 :(得分:1)

我对Drools 5.1的体验是它的最后一次出局。也就是说,你的drl中最后定义的规则将首先执行。

但是,依靠这种行为不是最好的主意:)