Создание независимых от базы данных правил в приложении C # - движок правил? - PullRequest
1 голос
/ 24 октября 2011

Я пишу приложение с использованием NHibernate, и одним из требований является создание правил для системы, которые будут эффективно генерировать запросы SQL для фильтрации данных.Эти правила поддерживаются пользователем приложения.

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

ForeignOrders , которое будет настроено на что-то вроде Заказ (бизнес-объект) DeliveryCountry (свойство бизнес-объекта) <> UK

или

ExорогоLondonAcmeOrders , который будет настроен как Заказ (Бизнес-объект) DeliveryCity (Свойство бизнес-объекта) = Лондон И Заказ TotalAmount (свойство бизнес-объекта) > 1000 И Заказ CompanyName = ACME

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

Имена BusinessСвойства объектов и бизнес-объектов близко отражают базовые данные / доменмодели, но как вы сможете определить и отобразить их в пользовательском интерфейсе во время выполнения, а затем создать по существу предложение where для SQL-запроса.Кроме того, после определения вам также нужно будет хранить значения в базе данных с независимостью от платформы базы данных.

В идеале, я не хочу писать эту функциональность - вы могли бы достичь чего-то подобного, используя механизм правил?Если это так, то какие и дорогие из них не вариант.Если нет, то какие ресурсы доступны, чтобы справиться с тем, как написать это.

Спасибо за любую помощь, это будет действительно полезно

Ответы [ 2 ]

1 голос
/ 24 октября 2011

Стоит прочитать «Эрик Эванс», управляемый предметной областью - в нем есть много того, о чем вы просите. В частности, Эванс предлагает шаблон спецификации (http://en.wikipedia.org/wiki/Specification_pattern)) - способ применения логической логики к объектам, не зная заранее, каковы критерии.

http://www.dimecasts.net/Content/WatchEpisode/139 есть прохождение, которое также может помочь ...

0 голосов
/ 24 октября 2011

Механизмы правил не сильно помогут ... они просто применяют правила в рабочем процессе ...

Оформить заказ Динамический Linq - другой вариант - PredicateBuilder .

...