Динамический движок бизнес-правил для ruby ​​на рельсах - PullRequest
3 голосов
/ 05 ноября 2010

У меня есть приложение, для которого требуется механизм «динамических бизнес-правил». Некоторые бизнес-правила меняются очень часто. Некоторые из них применяются для ограниченного набора бизнес-счетов. Например: у моего клиента есть процесс, при котором он квалифицирует магазины в зависимости от их размера, количества продавцов, количества продуктов, местоположения и т. Д. Но он управляет своей учетной записью, и каждая учетная запись присваивает разные «веса» каждому атрибуту.

Как мне реализовать этот движок, используя Ruby? Я знаю, что у Java есть слюни, но я нахожу слюни раздражающими и сложными. И я предпочитаю не использовать JRuby ...

С уважением,

Rubem

1 Ответ

6 голосов
/ 22 ноября 2010

Если вы уверены, что механизм правил - это то, что вам нужно, вам нужно будет найти тот, который вы можете использовать в Ruby. Быстрый поиск в Google вывел Rools (http://rools.rubyforge.org/) и Ruby Rules (http://xircles.codehaus.org/projects/ruby-rules).), хотя я не уверен в статусе любого из проектов, хотя. Использование JRuby с Drools может быть вашим лучшим выбором, но опять же, я Java-разработчик и большой адвокат Drools.:)

Не зная всех деталей, сложно сказать, как это должно быть реализовано. Это также зависит от того, как вы хотите, чтобы правила были обновлены. Один из подходов состоит в том, чтобы написать набор правил, подобный следующему: «если магазин существует с более чем 50 продавцами, и его вес не обновлен, чтобы отразить это, то обновите вес магазина». Однако, каким-то образом вы можете сравнить это с жестким кодированием.

Лучшим подходом может быть создание объектов Weight с критериями, которые должны соблюдаться для применения веса. Затем вы могли бы написать одно правило, которое соответствует и весам, и магазинам: «если существует магазин, который соответствует критериям веса, и у магазина еще нет этого веса, то добавьте вес в магазин». Тогда деловые люди могли бы просто создавать и обновлять весовые коэффициенты, возможно, в веб-интерфейсе базы данных, вместо того, чтобы поддерживать правила.

...