2010-08-24 61 views
3

我有一个.Net 4.0 Workflow应用程序托管在WCF中,它接受请求来处理一些信息。该信息通过Web服务传递给辅助系统,并返回一个布尔值,指示它将处理该信息。清单目前在.Net 4.0中运行的工作流程

我的工作流程然后循环,休眠5分钟,然后查询辅助系统以查看信息处理是否完成。

完成工作流完成后。

我有这个持久化在SQL中,它完美的作品。

我的问题是如何以这种方式检索持久化工作流的列表,以便将它们绑回原始请​​求?我希望我的用户界面能够使用已运行的时间在网格中列出正在运行的工作流。

我想过在我的主数据库中存储工作流GUID并以这种方式生成列表,但我真正想要的是能够协调我认为正在运行的内容以及持久性存储所认为的内容运行。

我也希望能够选择一个正在运行的工作流程,并将其关闭或完全重新启动它,如果用户确定它已经拧紧了。

回答

3

您可以使用SqlWorkflowInstanceStore从工作流中获取数据promote。结果是它们使用InstancePromotedPropertiesTable存储在InstancesTable中的工作流数据旁边。使用InstancePromotedProperties视图是查询数据的最简单方法。

This博客文章会告诉你你需要的代码。

0

另一种选择是使用WorkflowRuntime GetAllServices()。 然后你可以遍历每一个来提取你需要的数据。我会缓存结果,因为这可能是一个昂贵的操作。如果您只有100个或更少的运行工作流程,并且您的页面上只有少数用户,请不要打扰缓存。

这样您就不必创建DAL或Repo图层。特别是如果你正在使用sql进行持久化。

http://msdn.microsoft.com/en-us/library/ms594874(v=vs.100).aspx