【问题标题】:Listing Currently Running Workflows in .Net 4.0在 .Net 4.0 中列出当前正在运行的工作流
【发布时间】:2010-08-24 19:40:31
【问题描述】:

我有一个托管在 WCF 中的 .Net 4.0 Workflow 应用程序,它接受处理某些信息的请求。此信息通过 Web 服务传递到辅助系统并返回一个布尔值,指示它将处理该信息。

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

当它完成时,工作流程就结束了。

我在 SQL 中保留了这个,它运行良好。

我的问题是如何检索持久工作流的列表,以便将它们与原始请求联系起来?我希望我的 UI 能够在网格中列出正在运行的工作流以及它们已运行的经过时间。

我曾考虑将工作流 GUID 存储在我的主数据库中并以这种方式生成列表,但我真正想要的是能够协调我认为正在运行的内容和持久存储认为正在运行的内容.

我还希望能够选择一个正在运行的工作流,如果用户确定它出了问题,可以将其终止或完全重新启动它。

【问题讨论】:

    标签: workflow-foundation-4


    【解决方案1】:

    您可以使用 SqlWorkflowInstanceStore promote 来自工作流的数据。结果是它们使用 InstancePromotedPropertiesTable 与 InstancesTable 中的工作流数据一起存储。使用 InstancePromotedProperties 视图是查询数据的最简单方法。

    This 博文将向您展示您需要的代码。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多