我的团队的任务是设计一个工作流程驱动的Web应用程序。我需要一些关于设计的建议。
工作流程必须是动态的。这意味着,用户可以通过某个界面定义工作流,并将这些工作流应用于给定方案(这些定义将存在于SQL 2008数据库中)。场景由业务定义,永远不会改变。因此,可能只有两种类型的方案可以定义工作流程。工作流程不一定是线性的。某种状态将推动工作流程。国家也将是动态的,但只存在于工作流程中。
我一直在研究工作流程和状态机的例子,我的头脑正在旋转。我不确定我是否想要利用Workflow Foundation或我们开发的东西。我见过this并认为它可能有效,但我不确定州的全面实施是否对我们有用。
答案 0 :(得分:3)
您可以使用WF4执行此操作。我从来没有使用过Objectflow,因此我无法对此发表评论,但它似乎是一个内存解决方案,并且在IIS中托管的ASP.NET网站意味着您将偶尔失去状态,因为IIS回收和AppDomain。通常不是一个大问题,因为它不经常发生,但WF4 InstanceStore将负责这一点。它还允许您在没有粘性会话的Web场上运行,并使工作流从一台机器迁移到另一台机器。
另一个好处是工作流设计师。它是一个WPF控件,你可以在你自己的应用程序中重新托管。不是在ASP.NET或Silverlight应用程序中,但您可以提供智能客户端,让用户使用在VS2010中使用的理智设计器更新工作流程定义。
WF4的最大问题是异步执行性质。在将生成的HTML返回给浏览器之前,您需要使用SynchronizationContext来执行活动并等待工作流在新状态中空闲。