Reputation: 39
Assuming a drool rule is -
rule "Argus - Environmental Alert_Argus"
agenda-group "Argus"
when
ruletemplate:RuleTemplate(ParameterName=="Temperatur",ParameterValue > 2) ||
ruletemplate:RuleTemplate(ParameterName=="Humidity",ParameterValue > 2) ||
ruletemplate:RuleTemplate(ParameterName=="Wind",ParameterValue > 2) ||
ruletemplate:RuleTemplate(ParameterName=="Noise",ParameterValue > 60)
then
println("Rule is triggered");
//do something
end
From the above given Rule how to find which rule condition is triggered, is there any method which will return the triggered condition as well?
Upvotes: 0
Views: 48
Reputation: 25
You can have multiple rules like below :
rule "Argus - Environmental Alert_Argus1"
agenda-group "Argus"
when
ruletemplate:RuleTemplate(ParameterName=="Temperatur",ParameterValue > 2)
then
System.out.println("Rule 1 is triggered");
end
rule "Argus - Environmental Alert_Argus2"
agenda-group "Argus"
when
ruletemplate:RuleTemplate(ParameterName=="Humidity",ParameterValue > 2)
then
System.out.println("Rule 2 is triggered");
end
Or you can refer the values in then like below :
rule "Argus - Environmental Alert_Argus"
agenda-group "Argus"
when
ruletemplate:RuleTemplate(ParameterName=="Temperatur",ParameterValue > 2) ||
ruletemplate:RuleTemplate(ParameterName=="Humidity",ParameterValue > 2) ||
ruletemplate:RuleTemplate(ParameterName=="Wind",ParameterValue > 2) ||
ruletemplate:RuleTemplate(ParameterName=="Noise",ParameterValue > 60)
then
System.out.println("Rule is triggered, values : ParameterName :- " + ruletemplate.getParameterName() + ", ParameterValue :- " + ruletemplate.getParameterValue());
end
Upvotes: 0