Hi There
I’m new to drools. I’ve just set up the Drools-Server and it is (finally!) working and serving my test rule-set. The one thing that’s not working as I expect it is the rule ordering via salience. This is my simple test rule set:
rule "General brain eating advice"
when
p : Patient(eatsBrains == true)
then
p.setAdvice("Stop eating brains, or at least, try to cut down");
end
rule "Zombie exception to brain eating advice"
salience -50
when
p : Patient(eatsBrains == true, isZombie == true)
then
p.setAdvice("Evidence suggests that the undead cannot contract Kuru or that the effects are irellevant given the " +
"patient's current zombified state.\nSuggest euthenasing patient lest he/she eat your (or someone " +
"else's) brains");
end
The idea is that the first rule fires all the time unless the patient happens to be a zombie, in which case the exception rule (the second rule) kicks in. Now, as I have it here, with the exception at salience at -50 it actually works, which is the opposite of what I was expecting. I’d thought that I would have had to have the exception at a higher salience to fire first. That was what I tried first but that didn’t work – everyone got the general advice, zombies included.
What am I misunderstanding here?
Thanks!
Peter.
---
“It is very difficult to get a man to understand something when his tribal identity depends on his not understanding it” - Michael Bérubé on Republican climate change denial.