我最近开始研究流氓。我想创建一个drl文件,我可以选择要触发的规则的优先级。 说: 规则1:如果超过1000的价格不买 规则2:如果700到1000之间的价格谈判
所以如果规则1中断(即价格大于1000);继续执行第2条规则毫无意义。
那么请你指导我如何处理这种情况
此外,任何关于Drools以及如何创建drool文件的好教程都会有很大的帮助。
提前致谢!
答案 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
希望它有所帮助,