Динамические бизнес-правила

Я создаю интерфейс, в котором пользователи могут создавать свои собственные бизнес-правила из определенных для домена объектов во время выполнения, сохранять эти правила в базе данных и затем использовать приложением. Некоторые из них являются сложными предикатами, а другие требуют комбинаций доменных объектов в том, что кажется довольно сложным отношением. До сих пор я изучал GoF, динамику с eval и CodeDom. У кого-нибудь есть предложения о том, что следует использовать?

4 ответа

Решение

На самом деле, вы можете просто разработать свое приложение с помощью API механизма правил WF без использования WF. http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/08/09/WF-Rules-Engine-without-Workflow.aspx Это избавит вас от большой работы.

Как часто меняются правила? Создание системы, которая позволяет бизнесу создавать (и версию) свои собственные правила, значительно сложнее, чем создание системы, которая позволяет программисту динамически обновлять правила.

Когда аналогичное требование возникло в прошлом проекте, бизнес признал, что, хотя да, правила изменятся; они не будут меняться так часто, что они должны делать обновления. В конечном итоге мы использовали IronPython для динамических частей и хранения кода в базе данных, и система будет загружать соответствующие правила при загрузке. Остальная часть приложения была написана на C#. Победа для нас и для бизнеса.

Кайдзен, в зависимости от объема и вида ваших динамических правил, вы можете в конечном итоге использовать механизм рабочего процесса, например, MS WF, для определения правил в качестве действий рабочего процесса... таким образом, вы изолируете логику и не нуждаетесь в полной перестройке приложение, когда вам нужно что-то изменить в рабочем процессе.

Это может быть не лучшим решением, но может быть альтернативой...

Потратив год на создание двигателя правил и борьбу на подходах, я могу сказать, что это нелегко. Особенно, когда вы сосредоточены на том, что ваша цель. Чтобы заставить пользователей писать правила для системы, вам действительно нужно сосредоточиться на этой области. То, что легко для разработчика, возможно, намного сложнее для большинства бизнес-пользователей. Мы создали платформу для разработки правил в Excel, которая была скомпилирована в C# и работала динамически... проблема была в том, что пользователи находили электронные таблицы и поток логики слишком сложными и нанимали подрядчиков ASp.NET для создания правил.

У BizTalk есть механизм, который, я считаю, может использоваться для приложений.NEt http://www.microsoft.com/biztalk/en/us/business-rule-framework.aspx

Повеселись!

Другие вопросы по тегам