3

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

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

更新:
这些规则可能如下所示。假设您提交了一张发票,但您只想在其超过一定金额时从您的批准人那里授权,那么将调用这样的规则来返回 true 或 false,然后进行相应的处理。

干杯。

4

4 回答 4

1

Sounds like an application that might benefit from using business rules written in a dynamic language like Ruby or Python. IronPython integrates nicely with applications written in C# or VB.NET. You could create a DLR ScriptEngine and ScriptScope in your web application, inject rules written in the dynamic language based on a client ID parameter to interact with your live Plain Old .NET Objects (PONO). You could keep your hundreds of rules in a database because they are just text (Python source code for example). Check out this blog post I wrote which shows how to inject dynamic business rules into a .NET application.

于 2009-10-23T00:29:26.163 回答
0

我发现这篇文章中链接的内容是关于多客户系统的有趣读物:

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

于 2009-10-27T13:30:54.443 回答
0

假设您的工作流引擎是数据库驱动的,您可以通过添加公司 ID 字段来区分您的工作流定义。您必须在涉及工作流的任何地方实现此功能,检查它是什么公司 ID,并相应地加载工作流。您还必须分别为每个公司 ID 创建工作流。

这听起来很乏味,但实际上很简单,很容易做对。

然后您可以进一步定义哪个用户使用哪个公司 ID。或者,如果您确定每个用户将使用不同的工作流包,您可以使用用户 ID 而不是中介公司 ID。

于 2009-10-27T00:21:41.490 回答
0

这可能是.Net Workflow Foundation的一个很好的候选者

于 2009-10-26T01:34:57.810 回答