加载工作流实例

时间:2011-08-22 05:37:13

标签: c# asp.net workflow-foundation

假设我有一个Web应用程序,在一个页面中我需要上传文档。然后将文档转换为其他内容,然后用户可以看到转换后的文档。

我想要一个有4种状态的工作流程。

  1. 上传
  2. 转换
  3. 转换
  4. 现在,用户进入并创建文档记录并上传文件。

    此时,需要将它们带到仪表板,告诉他们正在转换文档。他们可能会退出并稍后再回来。

    转换文档后,将允许他们进入下一步查看文档。

    我可以轻松地创建具有这些状态的工作流,并根据文档记录中的标记执行所有状态的检查和设置。

    我认为我缺少的是,如果用户注销并返回,我如何获取上传文档的工作流程并检查工作流程中的状态?

    我只有这个;

    WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowProject1.Workflow1), parms);
    
    instance.Start();
    

    其中params是文档ID。当我回到我的应用程序时,如何获取此文档的工作流实例并检查它的当前步骤?

    非常感谢任何指向简单WWF示例/示例站点的链接。

    实际上有更好的方法吗?

    此外,一旦我加载了工作流程,我该如何检查其当前步骤或活动?

1 个答案:

答案 0 :(得分:0)

其中一种方法可以如本文所述:http://ajdotnet.wordpress.com/2007/09/30/workflow-instance-state-management/

实质上,您将工作流状态保存到数据库表中(持久性由工作流管理),Web应用程序直接从数据库中读取状态。这实际上是我更喜欢的简单方法,因为状态信息在工作流实例之外可用。

另一种方法可能是使用SqlWorkflowPersistenceService等持久性服务将工作流状态保存到数据库中。持久性由持久性服务管理,工作流忽略了这一事实。您已使用工作流实例的Load方法来获取状态(以及Unload以进行保存)。但是,调用这些方法的所有粘合逻辑都将位于aspx页面中。我的方法问题是您已经执行了同步逻辑(如果需要),并且为了读取状态信息,您必须将其加载到工作流实例中。