2009-10-22 71 views
3

在我正在处理的Web应用程序中,项目可以通过多个状态(例如工作流程),并且在每个工作流程之后,可以在每个步骤之后运行规则这可以停止进程或显示其他消息。为每个客户定制业务规则...(asp.net mvc)

这些规则应该如何定义? 我正在考虑每个规则的dll(并将它们与MEF或事件挂钩),但一个应用程序可能有200-300个客户,每个客户都有几条规则,这些规则会变成很多dll。

更新:
这些规则可能如下所示。假设你提交了一张发票,但你只想从批准者那里授权它,如果超过一定数量,那么这样的规则将被调用返回true或false,然后相应地继续。

干杯。

回答

1

听起来像一个应用程序,可能会受益于使用以Ruby或Python等动态语言编写的业务规则。 IronPython与用C#或VB.NET编写的应用程序很好地集成。您可以在您的Web应用程序中创建DLR ScriptEngine和ScriptScope,注入基于客户端ID参数以动态语言编写的规则,以便与您的实时Plain Old .NET对象(PO​​NO)进行交互。您可以将数百个规则保留在数据库中,因为它们只是文本(例如Python源代码)。退房this blog post我写了这篇文章,其中展示了如何将动态业务规则注入到.NET应用程序中。

+0

感觉不对。 – 2009-10-23 06:20:38

+1

然后呢? – Schotime 2009-10-23 07:28:56

+0

@Schotime,不知道这些“规则”实际上是什么,很难猜测什么是实现它们的最佳方式。但我真的怀疑需要结合几种语言来实现这一点。 – 2009-10-23 09:50:53

0

假设您的工作流引擎的数据库驱动,您可以通过添加一个公司id字段区分你的工作流定义。您必须在涉及工作流的每个地方实施此操作,检查它的公司ID,并相应地加载工作流。您还必须分别为每个公司ID创建工作流程。

这听起来很乏味,但实际上它很简单,很容易找到正确的答案。

然后,您可以进一步定义哪个用户使用哪个公司ID。或者,如果您确定每个用户都将使用不同的工作流程包,则可以使用用户标识代替中间公司标识。从这个帖子链接