2017-10-04 12 views
0

J'ai une règle simple basée sur l'exemple TaskPlanning. Cela ressemble à ceci:Définition d'une variable/d'un fait local dans le moteur de règles Drools

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 

Et OK, cela fonctionne. Mais je voudrais aussi ajouter une contrainte supplémentaire là-bas. $ tâche variable a isSerious propriété, qui contient une valeur booléenne. Je voudrais qu'il soit également pris en compte lors de l'ajout d'une contrainte moyenne.

Je voudrais réaliser quelque chose comme ceci:

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

Mais je reçois des erreurs de règles. Je pense que j'ai tout essayé - s'il vous plaît au moins me diriger vers la bonne direction.

Répondre

1

code Java normal devrait fonctionner, essayer $task.isSerious() au lieu de $task.isSerious

+1

qui a fait l'affaire! J'ai juré que j'ai essayé ça cent fois! – Chlebik