Индивидуальные бизнес-правила для каждого клиента ... (asp.net mvc) - PullRequest
3 голосов
/ 23 октября 2009

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

Как определить эти правила? Я думал о dll по правилу (и подключал их либо к MEF, либо к событиям), но в одном приложении могло быть 200-300 клиентов, каждое из которых имело бы несколько правил, которые превращались в множество dll.

Обновление:
Эти правила могут быть похожими на следующие. Скажем, вы отправляете счет-фактуру, но хотите авторизовать его только у утверждающего, если его сумма превышает определенную сумму, тогда будет применяться такое правило, чтобы вернуть значение true или false, а затем действовать соответствующим образом.

Приветствие.

Ответы [ 4 ]

1 голос
/ 23 октября 2009

Похоже на приложение, которое может выиграть от использования бизнес-правил, написанных на динамическом языке, таком как Ruby или Python. IronPython прекрасно интегрируется с приложениями, написанными на C # или VB.NET. Вы можете создать DLR ScriptEngine и ScriptScope в своем веб-приложении, внедрить правила, написанные на динамическом языке, на основе параметра идентификатора клиента, чтобы взаимодействовать с вашими обычными объектами .NET (PONO). Вы можете хранить сотни правил в базе данных, потому что они просто текстовые (например, исходный код Python). Прочтите этот пост , который я написал, в котором показано, как внедрить динамические бизнес-правила в приложение .NET.

0 голосов
/ 27 октября 2009

Я нашел материал, связанный с этим постом, интересным для чтения в системах с несколькими клиентами:

http://ayende.com/Blog/archive/2008/08/13/Mutli-Tenancy--multi-tenant-apps-and-frameworks.aspx

0 голосов
/ 27 октября 2009

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

Это звучит скучно, но на самом деле это довольно просто и легко понять.

Затем вы можете дополнительно определить, какой пользователь использует какой идентификатор компании. Или, если вы уверены, что каждый пользователь будет использовать разные пакеты рабочих процессов, вы можете использовать идентификатор пользователя вместо идентификатора посреднической компании.

0 голосов
/ 26 октября 2009

Это может быть хорошим кандидатом для .Net Workflow Foundation

...