Движок динамических бизнес-правил для Ruby on Rails

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

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

С уважением,

Рубем


person razenha    schedule 05.11.2010    source источник
comment
Кто будет определять возможные правила процедуры? Вы или пользователи? Можете ли вы написать их как методы какого-либо объекта, а затем добавить имя метода как атрибут объекта учетной записи? Rules.send(self.rule_name, self.rule_params)?   -  person Arsen7    schedule 05.11.2010
comment
Пользователи. Невозможно заранее запрограммировать все возможные варианты правил.   -  person razenha    schedule 05.11.2010


Ответы (1)


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

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

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

person spaaarky21    schedule 22.11.2010
comment
Тогда смело примите это как ответ. ;) Мне было бы любопытно узнать, какой движок правил вы в итоге использовали. Я только изучал Ruby / Rails, когда решил, что движки правил вполне могут стать необходимостью в будущем. Итак, я вернулся к Java и Drools. Существуют ли хорошие, ухоженные движки правил Ruby? - person spaaarky21; 28.12.2010
comment
Вы также можете использовать другие продукты, которые позволяют вам иметь сервер REST API и ваше приложение для взаимодействия на уровне сервиса. Так что вам не нужно беспокоиться о стеке технологий, и тогда у вас будет гораздо больше возможностей. Например, у вас может быть клиентская библиотека JavaScript. связаться со службой для выполнения ваших бизнес-правил в интерфейсе REST API. - person Arash Aghlara; 26.05.2015