asp.net - ASP.Net Web 应用程序的工作流程设计建议?

标签 asp.net workflow workflow-foundation-4 state-machine

我的团队的任务是设计一个工作流驱动的 Web 应用程序。我需要一些有关设计的建议。

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

我一直在研究工作流程和状态机的示例,我的头在旋转。我不确定我是否想要利用 Workflow Foundation 或我们开发的东西。我见过this并认为这可能有效,但我不确定国家的全面实现是否适合我们。

最佳答案

您可以使用 WF4 来完成此操作。我从未使用过 Objectflow,所以我无法对此发表评论,但它似乎是一个内存中解决方案,并且 ASP.NET 网站托管在 IIS 中,这意味着您偶尔会在 IIS 回收和 AppDomain 时丢失状态。通常这不是一个大问题,因为它不会经常发生,但 WF4 InstanceStore 会解决这个问题。它还允许您在没有粘性 session 的网络场上运行,并使工作流程从一台机器迁移到另一台机器。

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

WF4 的最大问题是异步执行本质。您将需要使用 SynchronizationContext 来执行事件,并等待工作流在新状态下空闲,然后再将生成的 HTML 返回到浏览器。

关于asp.net - ASP.Net Web 应用程序的工作流程设计建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5451303/

相关文章:

c# - 如何编写一个长时间运行的事件来调用 WF 4.0 中的 Web 服务

workflow - 如何从之前的事件中获取结果?

c# - 使用 LINQ 在 WebService 中自动完成

c# - 以编程方式将 HttpRequestMessage 发送到 Web API 管道,无需托管

工作流程事件

git - 我应该如何向 git 表明更改是暂时的并且不应提交?

workflow - 启用持久性时,WF4 中的多个接收事件失败

javascript - 如何使用数组提供的值设置在列表框中选择的项目?

c# - RedirectToAction()和View()有什么区别

Sharepoint 作为大容量信息系统