zainab
zainab

Reputation: 39

how to find which drool rule's condition was triggered when a rule is fired?

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

Answers (1)

Dilan Madurapperuma
Dilan Madurapperuma

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

Related Questions