2009-10-22 2 views
3

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

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

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

Cheers.

ответ

1

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

+0

не чувствует себя хорошо. –

+1

что же тогда? – Schotime

+0

@Schotime, не зная, каковы эти «правила» на самом деле, трудно сделать предположение о том, что является лучшим способом их реализации. Но я действительно сомневаюсь, что для этого нужно объединить несколько языков. –

0

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

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

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

Смежные вопросы