2009-02-20 2 views
16

Я нахожусь в стороне от попыток сгладить требования от клиента для механизма ценообразования в розничной среде. Мы определили механизм ценообразования как действующий по набору правил ценообразования, который устанавливает новые ценовые точки для купленных товаров на основе существующих товаров, уже находящихся в корзине покупок.Шаблоны проектирования и алгоритмы применения правил к фактам

Простой правило цены может быть ПОЛУЧИТЬ КРЫШКУ 40% OFF. Более сложное правило может быть ПОЛУЧИТЕ БЕСПЛАТНУЮ ШИРИНУ, КОГДА ВЫ ПОКУПАЕТЕ 2 ПАНТЕРА И ПОСЛЕДНЕЕ ПОСЛЕДНЕЕ $ 30.

Общая отраслевая практика применения этих правил, по-видимому, является конечной лучшей ценой для клиента, но оказалось, что, возможно, потребуется вариант ранжирования, а также вариант укладки.

Ранжирование позволит использовать правило, которое иначе проиграло бы, чтобы выиграть. Stacking позволит нескольким правилам выиграть.

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

Понятно, что это потенциально проблема NP, и количество предметов (фактов), с которыми я буду иметь дело, может превышать 100+ за транзакцию с переоценкой, требуемой при каждом добавлении нового элемента.

+1

Любопытный, какой метод вы в конечном итоге происходит с? Это был правильный выбор? –

+0

Мы создали собственный механизм правил, который в конечном итоге использовал множество методов для решения проблемы. У меня нет информации, чтобы поделиться с нами манжетой, поскольку это было решено и реализовано более 7 лет назад. В итоге мы использовали какой-то подход к локализации и применяли взвешивание к локализации. Затем мы использовали алгоритм маршрутизации с наименьшей стоимостью, чтобы определить наилучшую комбинацию ценовых сделок. Готовая работа оказалась одним из моих любимых проектов - мы написали ее как независимый модуль, который можно было использовать в других местах. Правила + набор входных данных -> набор выходных данных. – Bill

ответ

2

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

Если двигатель правил является лишь малой частью вашего приложения или даже хуже: это какой-то код, который не является тем же языком программирования, что и остальная часть вашего приложения ... тогда вы должны пересмотреть. Любая часть приложения, которая является внешней от вашего основного приложения (даже база данных является внешней для приложения Java), является риском.

Тогда есть две возможности: запрограммируйте простой механизм правил самостоятельно или используйте стратегию или государственный шаблон.

5

Существует хорошая статья Мартина Фаулера о механизме правил и где их использовать. Смотрите, если помогает

http://www.martinfowler.com/bliki/RulesEngine.html

+0

Я изучаю это. Я прочитал его объем работы, но недавно не перескакивал через его онлайн-материал. – Bill

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