2017-10-04 1 views
0

Ich habe eine einfache Regel, die auf TaskPlanning Beispiel basiert. Es sieht so aus:Setzen Sie lokale Variable/Tatsache in Drools Regel-Engine

rule "It is better if user does not overexceeds its hours" 
    when 
     $emp : Employee() 
     $task : Task($taskType : taskType, employee == $emp)  
     accumulate(Task(employee == $emp); 
        $minutesOfEmplSpend : sum($taskType.getBaseDuration()); 
        $emp.getMinutesAvailable() < $minutesOfEmplSpend 
     ) 
    then 
     scoreHolder.addMediumConstraintMatch(kcontext, 
$emp.getMinutesAvailable()-$minutesOfEmplSpend);  
end 

Und OK, es funktioniert. Aber ich möchte dort auch zusätzliche Einschränkungen hinzufügen. $ task Variable hat isSerious Eigenschaft, die booleschen Wert hält. Ich möchte, dass es auch berücksichtigt wird, wenn Medium Constraint hinzugefügt wird.

Ich möchte so etwas wie dieses Ziel erreichen:

scoreHolder.addMediumConstraintMatch(kcontext, 
$emp.getMinutesAvailable()-$minutesOfEmplSpend - ($task.isSerious == true ? 100 : 10))); 

Aber ich bin immer Fehler Regeln. Ich denke, ich habe alles versucht - bitte zeige mir wenigstens die richtige Richtung.

Antwort

1

normale Java-Code sollte funktionieren, versuchen $task.isSerious() statt $task.isSerious

+1

, die den Trick tat! Ich habe geschworen, dass ich das hundert Mal probiert habe! – Chlebik