Создание живого правила в Drools Planner

Я заинтересован в создании правил для Drools Planner. Я хочу, чтобы пользователь мог создавать свои собственные правила в java-приложении перед запуском Drools Planner. Возможно, файл правил Drools может быть сгенерирован после того, как пользователь добавил свои правила. Возможно ли это или мне нужно создать файл правил при разработке всего Java-приложения?

Большое спасибо...


person Dan Iel    schedule 13.06.2012    source источник


Ответы (1)


Да, это возможно. Хитрость заключается в том, чтобы создать свой собственный RuleBase и установить его в конфигурации планировщика. См. раздел «5.3. 4.2.2. База правил (возможно, определенная Гувнором)" в руководстве.

Вы можете создать несколько RuleBase, в зависимости от того, как вы хотите, чтобы ваш пользователь редактировал свои правила:

  • Из файла DRL. Это предполагает, что пользователь знает DRL. См. руководство Drools Expert.
  • Из файла DSL. Это позволяет использовать естественный язык.
  • Из веб-приложения руководителя. Это позволяет вам использовать инструменты Guvnor, такие как управляемый редактор правил, электронные таблицы решений и т. д. Вы даже можете использовать набор изменений.
  • От guvnor в eclipse или отдельном приложении (в стадии разработки и эксперимента). В этой области есть работа, но она еще молода.
person Geoffrey De Smet    schedule 13.06.2012
comment
PS: в новом API знаний RuleBase заменено на KnowledgeBase. Вы можете преобразовать KnowledgeBase в RuleBase, как того требует Planner 5.4. - person Geoffrey De Smet; 13.06.2012
comment
Нельзя ли дать пользователю какие-то факты вроде времени, размера... и он сам выстраивает свои правила. И когда он будет готов, на основе выбранных фактов будет создан ДХО? Так что пользователь не должен знать DRL только программист. Так что у меня будет собственное веб-приложение Guvnor. :-) Таким образом, правило не является динамическим на 100%, но у пользователя есть диапазон для создания правила. - person Dan Iel; 14.06.2012
comment
Извините за мой плохой английский. Я хочу, чтобы пользователь предложил подмножество компонентов для создания собственного набора для правила. Например: он может выбрать имя учителя, день, временной интервал и предмет и, возможно, приоритет, чтобы различать мягкое и жесткое ограничение. - person Dan Iel; 14.06.2012
comment
@Dan Да, это было бы возможно, но вы, вероятно, можете сделать это еще проще, но определить свои правила с не жестко запрограммированными переменными, такими как время и размер. Например: предположим, вы хотите дать пользователю возможность указать, в какие дни медсестра хочет иметь выходной. Для каждого из этих дней для определенной медсестры создается запрос DayOffRequest, и если такие экземпляры существуют, правило оценки выходного дня проверяет, были ли они выполнены. Если они не используют DayOffRequests, правило оценки практически не влияет на производительность, поскольку ReteOO быстро определяет, что никакие факты не могут соответствовать этому правилу. - person Geoffrey De Smet; 15.06.2012
comment
очень хорошая идея! У вас есть ссылка на руководство или учебник, описывающий это поведение? - person Dan Iel; 15.06.2012
comment
@Dan Посмотрите пример списка медсестер (в zip или github) и найдите класс DayOffRequest (файлы Java + использование в DRL) - person Geoffrey De Smet; 16.06.2012
comment
Как привести к RuleBase: ((InternalKnowledgeBase) myKnowledgeBase).getRuleBase() - person Geoffrey De Smet; 20.06.2012