Я наслаждаюсь путешествием через Оптапланнер.Ява не мой "родной" язык, но к моему удивлению (крутая?) Кривая обучения Optaplanner & Drools не заставила меня сдаться!
То, что у меня так далеко: у меня естьсделал проект с необходимыми занятиями.Ради моего вопроса я упрощу: класс Employee
, класс Job
, класс Skills
и класс Schedule
, где я хотел бы получить свой идеальный оптапланированный график.
В классе моих сотрудников есть переменная List<Skill> skills
, содержащая как минимум 1 навык.Мой класс заданий содержит ту же переменную List<Skill> reqSkills
(req = обязательный).Он содержит как минимум 1 навык, необходимый для выполнения этой работы.
Я инициализировал некоторые фиктивные данные.Затем я запускаю следующее правило:
rule "requiredSkills"
when
Employee($skills : skills)
Job(reqskills not memberOf $skills)
then
scoreHolder.addHardConstraintMatch(kcontext, -1);
end
Я подумал (но здесь крутая кривая для Drools бьет меня) это казалось логичным: когда навык сотрудника не является членом навыка (ов), необходимых длятогда работа - это жесткое ограничение ..
Результат для моего "планирования" всегда таков: первый сотрудник, которого я ввел в качестве фиктивных данных, связан со всеми заданиями ...
Мне кажется, что использование memberOf
не работает для списков против списков.Но как мне это исправить, поскольку оба моих сотрудника, так же как и мои рабочие места, могут иметь / требовать нескольких навыков?