2013-08-13 2 views
0

Я получаю ошибкуDrools: Переменные не могут быть использованы в привязках

Переменные не могут быть использованы внутри привязок

на следующие Drools-Rule Кодекса

rule "minGapsBetweenAppointments" 
when 
    $leftAssignment : AppointmentRequest(feasibleAppointment != null) 
    $totalValue : Number() from accumulate(
      AppointmentRequest(feasibleAppointment != null, 
        $leftAssignment.requestId != requestId, 
        $quality : this.getOccupiedSurroundingsValue($leftAssignment)), 
      sum($quality) 
      ) // ERROR LINE 
then 
    scoreHolder.addSoftConstraintMatch(kcontext, $totalValue.intValue()); 
end 

Хотя Я нашел это post из другого вопроса, мне это не очень помогает, поскольку мне нужно вызвать функцию getOccupiedSurroundingsValue для всех других НазначенийРексов, поскольку они связаны.

Любая помощь приветствуется.

+0

Какая версия слюни? –

+0

Если вы добавите метод 'AppointmentRequest' под названием' getOccupiedSurroundingsValueFromLeftAssignement() 'и реорганизуете DRL на' $ quality: getOccupiedSurroundingsValueFromLeftAssignement() ', он работает? Ваш код должен работать, я думаю, просто интересно, является ли это изменение обходным путем или нет. –

+0

Версия с drools - одна упакована с optaplanner 6.0.0.0Beta5 – David

ответ

0

Этот код должен работать. Насколько я понимаю, в этом нет ничего плохого. Двойная проверка, если вы точно так же, как и код, который вы его выполняете. Я использую аналогичный код в своих примерах, и эти работы.

Если все в порядке, это может быть ошибка в Drools Expert. Есть 2 способа сделать это:

  • Самым простым способом: перепечатывать этот вопрос на the drools mailing list, может быть, Эдсон или Вольфганг видит что-то я делаю не так. Сообщение jira, если никто не видит ошибку пользователя.

  • Самый быстрый способ решить вашу проблему: создать новый тест в MiscTest, который докажет ваше дело и отправит его как запрос на тяну. Либо вы узнаете, что вы делаете неправильно, либо вы докажете без тени сомнения, что есть ошибка, которую мы должны исправить как можно скорее :)

Смежные вопросы