2011-08-22 87 views
0

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

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

  1. 上传
  2. 转换被
  3. 转换

所以,现在的用户进来,创建文档记录和上传文件。

在这一点上,他们将需要采取一个仪表板,告诉他们文件正在转换。他们可能会注销并稍后再回来。

一旦文件被转换,他们将被允许进入下一个查看文件的步骤。

我可以很容易地创建一个具有这些状态的工作流,并根据标记对文档记录执行所有状态的检查和设置。

我很想念的是,如果用户注销并返回,我如何获取该上传文档的工作流并检查其在工作流中的状态?

我只有这个;

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

instance.Start(); 

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

任何链接到简单的WWF示例/示例网站将不胜感激。

实际上是否有更好的方法呢?

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

回答

0

一种方式可以在这篇文章中所描述的:http://ajdotnet.wordpress.com/2007/09/30/workflow-instance-state-management/

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

另一种方法是使用持久性服务(例如SqlWorkflowPersistenceService)将工作流状态保存到数据库中。持久性由持久性服务管理,工作流忽略了这一事实。您使用工作流实例的Load方法来获取加载的状态(并且Unload用于保存)。然而,调用这些方法的所有胶合逻辑都将放在aspx页面中。我的方法问题是你有做同步逻辑(如果需要)和读取状态信息,你必须加载到工作流实例。