规则中的显着性值(drl)

时间:2014-02-12 05:18:50

标签: drools

我最近开始研究流氓。我想创建一个drl文件,我可以选择要触发的规则的优先级。 说: 规则1:如果超过1000的价格不买 规则2:如果700到1000之间的价格谈判

所以如果规则1中断(即价格大于1000);继续执行第2条规则毫无意义。

那么请你指导我如何处理这种情况

此外,任何关于Drools以及如何创建drool文件的好教程都会有很大的帮助。

提前致谢!

3 个答案:

答案 0 :(得分:1)

不要试图通过应用显着性来模拟生产系统中的程序行为。没有“继续[另一个]规则”这样的事情。考虑规则引擎同时评估所有条件,并编写约束,以便所有规则彼此独立。

对于书籍,谷歌会找到一些,你也可以在生产系统中搜索设计模式。

答案 1 :(得分:1)

以下两个规则定义可用于您的用例。

rule 1
when
   $item: Item (price > 1000)
then
   modify ($item) {
       doNotBuy = true
   }

rule 2
when
   $item: Item(price>1000, price<700)
then
   modify($item) {
       negotiate = true
   }

Drools的基本功能是,它评估规则的when部分,并决定是否要执行then部分规则。除了在when部分中编写有意义的条件外,您无需执行任何操作。

salience是一个完全不同的野兽,我建议你远离它,至少在你熟悉流口水之前。

答案 2 :(得分:1)

我想了解更多关于你可以从这两本书开始的流氓:

http://www.packtpub.com/drools-developers-using-jboss-cookbook/book

http://www.packtpub.com/jboss-rules-5-x-developers-guide/book

希望它有所帮助,