I'm new to drools and given a condition (Condition) and a boolean variable "a" , I would like to create the following rule with drools :
if (Condition)
{
a = true;
}
else
{
a = false;
}
What is the best way to do it ?
For the time being I have 2 options :
1.Create 2 rules with Condition and not contidition (If ... then ... , If not ... then ...)
rule "test"
where
$o: Object( Condition)
then
$o.a = true;
end
rule "test2"
where
$o: Object( not Condition)
then
$o.a = false
end
2.Set the variable a to false by default and then fire the rule
rule "test"
no loop
salience 100
where
$o: Object()
then
$o.a = false;
end
rule "test"
where
$o: Object( not Condition)
then
$o.a = true;
end
By nature the Rete engine looks for positive matches, so yes you will need multiple rules, one for each condition check in your if-then-else block. Your first example is cleaner and more intuitive, I would go with that.
As an alternative, if you are processing a simple logic negation (if-else) where your variables value matches the conditional, then you can use just one rule:
rule "test"
where
$o: Object()
then
$o.a = (! Condition);
end