2011-03-27 89 views
2

我的团队一直负责设计一个工作流驱动的Web应用程序。我需要一些关于设计的建议。ASP.Net Web应用程序的工作流设计建议?

工作流程需要是动态的。意思是,用户可以通过某个界面定义工作流程,并将这些工作流程应用到给定的场景(这些定义将存在于SQL 2008数据库中)。场景由业务定义,并且永远不会改变。所以可能只有两种类型的工作流可以定义。工作流程不一定是线性的。某种状态会推动工作流程。国家也是动态的,但只存在于工作流程中。

我一直在寻找工作流和状态机的例子,我的脑袋正在旋转。我不确定我想要利用Workflow Foundation或我们开发的东西。我已经看到this,并认为它可能工作,但我不确定该州的全面实施将为我们工作。

回答

3

您可以使用WF4来做到这一点。我从来没有使用Objectflow,所以我不能对此做出评论,但它似乎是内存解决方案,并且在IIS中托管ASP.NET网站,这意味着您有时会因为IIS回收和AppDomain而失去状态。通常不是一个大问题,因为它不会经常发生,但是WF4 InstanceStore会处理这个问题。它还将允许您在Web场中运行而不需要粘性会话,并且可以将工作流从机器迁移到机器。

另一件好事是工作流设计器。它是一个WPF控件,您可以在自己的应用程序中重置。不在ASP.NET或Silverlight应用程序中,但您可以提供智能客户端,让用户在VS2010中使用正常设计器时更新工作流定义。

WF4的最大问题是异步执行性质。在将生成的HTML返回给浏览器之前,您需要使用SynchronizationContext来执行活动并等待工作流在新状态中处于空闲状态。

+0

我知道这不是我原来的问题的一部分,但你有什么建议使用WF4与实体框架4? – DDiVita 2011-03-28 16:04:24

+0

创建自定义活动并在Execute()方法中执行您需要执行的任何操作。只要确保数据上下文不会长于此长度,因为您的工作流可以通过打开的连接持久化。 – Maurice 2011-03-28 18:58:19