Поддержка Drools Fusion для постоянных, длительных событий - PullRequest
5 голосов
/ 14 декабря 2011

Я рассматривал возможность использования Drools Fusion для реализации следующих примерных правил:

  • , если покупатель купил два одинаковых продукта в течение года, он получает третий бесплатно
  • для расходов более чем на 200 долларов США не более чем в трех последовательных транзакциях, клиент получает скидку
  • , когда клиент неактивен в течение более года, генерируется напоминание
  • , когда руководитель уведомляется, когдаОдиночный ордер больше среднего значения ордера в течение последних шести месяцев
  • ... и так далее, это всего лишь примеры из головы

Все эти правила могут бытьлегко выражается с помощью Drools Fusion.Однако после создания прототипа и просмотра документации кажется, что этот продукт лучше подходит для краткосрочных, кратковременных событий (фондовый рынок, принятие решений в режиме реального времени).

Вопрос в том: так ли этоТребуется хранить все события в памяти? (возможно, миллионы очень старых покупок).Кроме того, может ли Drools Fusion сохранять события, чтобы они выдерживали перезапуск сервера? (в идеале в базе данных).

Я знаю, что события Drools Fusion - это просто факты в Drools Expert , возможно вопрос может быть расширен до: Может ли Drools Expert настойчиво и лениво загружать факты?

1 Ответ

3 голосов
/ 15 декабря 2011

Что вы можете сделать, это загружать историческую информацию для каждого клиента каждый раз, когда вы получаете новую транзакцию для этого клиента.Или периодически загружайте информацию для проверки неактивных клиентов.Все приведенные вами примеры для меня выглядят как факты.Очевидно, что вы можете моделировать все как события, но, как вы упомянули, это приведет к тому, что вам нужно будет иметь все в памяти.Чтобы ответить на ваш вопрос о хранении / обработке миллиона событий, сначала нужно ответить на вопрос, поддерживает ли JVM все эти объекты в памяти.

Приветствия

...