加载工作流实例
假设我有一个Web应用程序,并且在一个页面中我需要上传文档。然后将文档转换为其他内容,然后用户可以看到转换后的文档。加载工作流实例
我想要一个具有4个状态的工作流程。
- 新
- 上传
- 转换被
- 转换
所以,现在的用户进来,创建文档记录和上传文件。
在这一点上,他们将需要采取一个仪表板,告诉他们文件正在转换。他们可能会注销并稍后再回来。
一旦文件被转换,他们将被允许进入下一个查看文件的步骤。
我可以很容易地创建一个具有这些状态的工作流,并根据标记对文档记录执行所有状态的检查和设置。
我很想念的是,如果用户注销并返回,我如何获取该上传文档的工作流并检查其在工作流中的状态?
我只有这个;
WorkflowInstance instance = workflowRuntime.CreateWorkflow(typeof(WorkflowProject1.Workflow1), parms);
instance.Start();
其中params是文档ID。当我回到我的应用程序中时,如何获取此文档的工作流实例并检查它是当前的步骤?
任何链接到简单的WWF示例/示例网站将不胜感激。
实际上是否有更好的方法呢?
此外,一旦我加载了工作流,我该如何检查其当前步骤或活动?
一种方式可以在这篇文章中所描述的:http://ajdotnet.wordpress.com/2007/09/30/workflow-instance-state-management/
从本质上讲,你坚持工作流状态到数据库表(持久性是通过工作流程管理)和Web应用程序从数据库中直接读取状态。这实际上是我更喜欢的简单方法,因为状态信息在工作流实例之外是可用的。
另一种方法是使用持久性服务(例如SqlWorkflowPersistenceService)将工作流状态保存到数据库中。持久性由持久性服务管理,工作流忽略了这一事实。您使用工作流实例的Load方法来获取加载的状态(并且Unload用于保存)。然而,调用这些方法的所有胶合逻辑都将放在aspx页面中。我的方法问题是你有做同步逻辑(如果需要)和读取状态信息,你必须加载到工作流实例。