输入<eof>与drools不匹配</eof>

时间:2014-04-16 07:12:23

标签: drools eof optaplanner

我有一个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

我认为我使用的语法存在根本性的错误,但我发现很难准确确定。

谢谢你们

1 个答案:

答案 0 :(得分:0)

Line 36:66 mismatched input '<eof>' in rule "MaximiseEarliestFinishTime"

所有规则都必须以关键字end结尾。

对于第21行,要么围绕它放置eval(请参阅drools docs以获取更多信息)或者更好,请将这些限制作为$T2:Task的一部分。此外,$D中的$T1:Task尚不存在,因此您可能希望定义它(绑定它)而不是==来比较它。