我有一个Optaplanner drools文件,当我运行下面的代码时:
// ############################################################################
// Hard constraints
// ############################################################################
rule "DevCanOnlyDoOneTask"
when
$T1:Task(assignedDev==$D)
$T2:Task(assignedDev==$D)
(($T2.getAllottedStartTime()<=$T1.getAllottedStartTime())&&($T1.getAllottedStartTime()<$T2.getAllottedStartTime()+$T2.getDuration()))||(($T1.getAllottedStartTime()<=$T2.getAllottedStartTime())&&($T2.getAllottedStartTime()<$T1.getAllottedStartTime()+$T1.getDuration())) //line 21
then
scoreHolder.addHardConstraintMatch(kcontext,-1000);
end
// ############################################################################
// Soft constraints
// ############################################################################
rule "MaximiseEarliestFinishTime"
when
$TA: TaskAssignment($EFT: getEFT())
then
scoreHolder.addSoftConstraintMatch(kcontext,+$TA.getEFT());
我收到以下错误消息(请注意我已经评论了相关内容在上面的代码中):
08:08:41.613 [main] ERROR o.d.c.k.b.impl.AbstractKieModule - Unable to build KieBaseModel:defaultKieBase
[21,36]: [ERR 102] Line 21:36 mismatched input '<=' in rule "DevCanOnlyDoOneTask"
[36,66]: [ERR 102] Line 36:66 mismatched input '<eof>' in rule "MaximiseEarliestFinishTime"
[0,0]: Parser returned a null Package
我认为我使用的语法存在根本性的错误,但我发现很难准确确定。
谢谢你们
答案 0 :(得分:0)
Line 36:66 mismatched input '<eof>' in rule "MaximiseEarliestFinishTime"
所有规则都必须以关键字end
结尾。
对于第21行,要么围绕它放置eval
(请参阅drools docs以获取更多信息)或者更好,请将这些限制作为$T2:Task
的一部分。此外,$D
中的$T1:Task
尚不存在,因此您可能希望定义它(绑定它)而不是==
来比较它。