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.
, die den Trick tat! Ich habe geschworen, dass ich das hundert Mal probiert habe! – Chlebik