流口水的显着性

JBi*_*rch 3 drools

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

Mic*_*ale 12

简短的回答是,你不应该依赖相同突出性的规则 - 如果它们"处于冲突中"(即两者都有资格射击).没有显着性的规则只是突出零,BTW.

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

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

  • 根据官方JBOSS文档,具有默认显着性(或相等但非默认)的规则将以任意顺序执行.如果行动的顺序很重要,就不应该依赖它.(http://docs.redhat.com/docs/en-US/JBoss_Enterprise_BRMS_Platform/5/html-single/JBoss_Rules_5_Reference_Guide/index.html#sect-Activations_Agenda_Conflict_Sets) (2认同)