2011-01-13 4 views
1
повторное использование

Я оценивая JBoss Drools в настоящее время, и хотел бы обратиться за помощью сообщества в отношении вопросов переиспользуемости я идентифицированных до сих пор:Drools вопросы

  1. Чтобы создать базу знаний, один должен импортировать .drl file/s, но если я только хочу использовать подмножество правил из файла .drl, кроме формирования групп правил (с использованием группы участников или RuleFlowGroup), существуют ли другие способы сделать это? Использование групп правил может легко сделать определение правила беспорядочным, представьте, что у вас есть 10 различных подмножеств правил с перекрытием, это 10 групп правил ...

  2. Есть ли способ динамически вставлять факты в интеллектуальное знание правила? Мне кажется, что все необходимые факты/данные необходимо вставить в сеанс, прежде чем запускать механизм правил, создавая узкие места производительности ... Например, если один из фактов находится в базе данных, двигатель не может быть запущен, если факт из базы данных нарисован. Было бы лучше, если движок может сначала обработать другие факты, а когда факт из базы данных будет готов, вставьте его динамически в сеанс.

ответ

1
  1. Хороший способ сделать это с помощью повестки-группы. Другой способ: отделите свой пакет правил.

  2. Как я под Вашим вопросом, вы можете использовать Fact Handles.

    Используйте StatefullKnowledgeSession здесь.

    FactHandle objHandle = ksession.insert (факт);

После того, как ваши факты будут готовы из базы данных, вы можете изменить факты в текущей текущей сессии.

ksession.update(objHandle, newFactObject(of same class)) 

Для получения более подробной информации перейдите к http://downloads.jboss.com/drools/docs/5.1.1.34858.FINAL/drools-expert/html_single/index.html глава 2.1.2. Состоятельная сессия знаний.

+0

Привет, спасибо за ваш быстрый ответ :) Для 1. Я надеюсь найти способ выбора правил для программного программирования - мне придется изменить файлы правил, если вы используете группу участников. Разделение пакета правил может быть неуклюжим, поскольку я должен изменить путь к классу (для загрузки правил) затронутых классов Java. Для 2. Благодарим вас за обмен информацией о фактуре. Но если факты из базы данных появились после того, как сеанс знаний завершил свой запуск? В этом смысле мне все равно придется ждать, пока все данные будут доступны до запуска механизма правил [исправьте меня, если я ошибаюсь]. – Style

+0

Привет, 1. отдельное правило по пакету не означает, что вы размещаете свои правила в разных пакетах. Пакет правил - это просто название группы, которая содержит несколько правил. Вы можете создавать различные базы правил для разных целей с помощью разных пакетов правил (один или несколько). 2. StateFullKnowledgeSession требует, чтобы утилизировать вручную. Поэтому, пока у вас нет данных из базы данных, вы можете продолжать сеанс. Затем удалите его вручную. Если для получения фактов из базы данных требуется больше времени, вам необходимо создать новый сеанс. – nIKUNJ

+0

Для 1. Yup Я понял пакет правил, хотя я предпочитаю более детальный контроль над запуском правил (например, используя код Java, загружать файл правил и запускать только это правило). Спасибо, я думаю, что у меня есть идея :) Для 2 я не обратил внимания на то, что StateFullKnowledgeSession требует, чтобы утилизировать вручную, также видел, что сеансы знаний могут сохраняться, вероятно, с дизайном сохраняющихся сеансов, пока факты из базы данных не будут затем возобновить сеансы. – Style

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