【问题标题】:How to query a workflow instance for its execution state如何查询工作流实例的执行状态
【发布时间】:2009-09-06 06:12:31
【问题描述】:

我创建了一个工作流,并通过 WorkflowInstance.Run() 运行它。 这个工作流程有很多书签,我希望能够查询它 书签负责当前的空闲状态。

我该怎么做?

谢谢

【问题讨论】:

    标签: c# workflow workflow-foundation workflow-foundation-4


    【解决方案1】:

    适用于工作流 4.0

    您可以从 WorkflowInstance 中获取 Bookmarks

    IEnumerable<BookmarkInfo> bookMarks = workflowInstance.GetAllBookmarks();
    

    只会列出活动的书签,即实际上正在等待某事的书签。在没有并行活动的顺序工作流中,它会告诉您正在等待的活动。但在许多情况下,等待输入的书签不止一个。你无法分辨是哪一个导致了偶像状态。

    您可以通过将某些内容与 WorkflowInstance.OnIdle 事件挂钩来获取更多信息。这不是一个真正的 .NET 事件,但它完成了同样的事情。这不会告诉您确切为什么会进入空闲状态,但希望知道时间会告诉您更多信息。

    适用于工作流 3.0

    我不确定这是否会有所帮助,但由于您有一个 WorkflowInstance,您可以通过调用 GetWorkflowQueueData() 来向它请求 WorkflowQueueInfo 对象的集合。 WorkflowQueueInfo 类将告诉您哪些活动订阅了队列以及队列中是否有项目。一个订阅了活动的空队列可以告诉你你需要什么。这些活动正在等待某些东西,但无事可做。那应该是您要查找的书签。

    【讨论】:

    • 对不起,我忘了澄清,这是我所说的 WF 4.0... WorkflowInstance.GetWorkflowQueueData 在 4.0 中不存在
    • 哦,对不起。当您说书签时,我应该知道您的意思是 4.0。我会编辑答案。
    • 在 4.0 中,GetAllBookmarks() 定义在哪里?我在 System.Workflow.Runtime.WorkflowInstance 上没有看到它。
    • @Wayne - 你是对的。这是针对 Visual Studio 2010 Beta 的。工作流 api 在发布前发生了很大变化。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多