Drools регулирует написание лучших практик

Я читал статью о производительности Drools ( JBoss Drools — Performance and Memory Internals), в нем объясняется, как создаются деревья и узлы Rete, как Drools их индексирует и почему увеличение количества объектов в Drools почти не влияет на общее время, необходимое для их выполнения. Интеллектуально написанные правила могут резко сократить количество узлов в дереве Rete, тем самым еще больше повысив производительность.

Я хотел бы знать, есть ли передовой опыт написания правил Drools, чтобы я мог написать их так, чтобы они выполнялись как можно быстрее.

Спасибо.


person Luciano    schedule 07.11.2012    source источник
comment
Я бы порекомендовал прочитать технический документ Вольфганга Лауна «Шаблоны проектирования в производственных системах». Это единственное, что я видел, чтобы сделать достойную попытку задокументировать лучшие практики разработки правил в Drools. Вы можете загрузить его с Red Hat в обмен на несколько контактных данных: engage.redhat.com /forms/rule-design-patterns   -  person Steve    schedule 13.02.2014


Ответы (2)


Могу перечислить несколько...

  • Поместите самое ограничивающее условие вверху
  • используйте один и тот же порядок условий в ваших правилах
  • не используйте eval без необходимости.
  • поместите evals в нижней части ваших условий
  • не используйте операторы if внутри последствий
  • использование ярлыков для логических значений вызывает ошибки JIT в Drools 5.4, поэтому используйте их как House ( windowOpen == true ), а не House ( windowOpen )
  • не используйте salience, в большинстве случаев это приводит к аду обслуживания.

Это, конечно, не полное, просто мои 2 цента...

person ali köksal    schedule 08.11.2012

Я совсем недавно начал работать над тем же, так что, возможно, я не идеальный человек, чтобы ответить на этот вопрос, но все же,

  • Условия, которые, по вашему мнению, должны иметь наивысший приоритет, ставят их на первое место.
  • Тогда условия, которые вы используете, должны быть очень старательно подготовлены.
  • Планируйте использование пользовательского интерфейса Eclipse-Drool для создания правильных правил.
  • Никогда не пытайтесь использовать if-statements внутри части then
  • Используйте ярлыки для логических значений, потому что они часто вызывают ошибки
  • всегда следуйте схеме RWTE, т. е. 1. ПРАВИЛО 2. КОГДА 3. ЗАТЕМ 4. КОНЕЦ
  • Избегайте использования заметности, в большинстве случаев это вызывает проблемы.
  • Попробуйте интегрировать правила с пользовательскими классами, а не с предопределенным набором, который будет использоваться для ваших операций.
  • Условие, которое вы используете, когда часть должна быть взаимосвязана, а не нуль (т. е. условие должно быть связано с некоторыми существующими значениями).
  • Правильно используйте операторы импорта...
  • Абсолютно список этого бесконечен, так что продолжайте обновлять себя .... :)
person D3X    schedule 13.02.2014