WF:确定工作流程是否已完成

时间:2009-12-06 12:51:19

标签: workflow-foundation

除了订阅WorkfloRuntime的WorkflowCompleted事件之外,如何从主机确定工作流实例是否已编译?是否有任何标志或状态我可以检查给定的WorflowInstance以确定它是否已完成?

@Edit:问题在于顺序工作流程。

2 个答案:

答案 0 :(得分:1)

您可以检查TrackingServices以了解工作流实例的当前状态。

这里有一些代码段:.NET 3.0 State Machines In Windows Workflow

答案 1 :(得分:0)

答案(至少知道,从我所学到的)是没有与WorkflowInstance相关联的标志,您可以为给定实例检索指示实例是否已完成。

两种可用的方法是:

  1. WorkflowRuntime.WorkflowCompleted Event

  2. 使用TrackingService服务保留工作流程执行的“日志”并查询日志以确定工作流实例是否已完成。这是一个good introductory article。使用这种方法,TrackingService唯一可用的开箱即用实现是SqlTrackingService,这需要一个SQL Server数据库。然后,您可以使用SqlTrackingQuery查询“日志”

  3. 注意: SqlTrackingService行为的一个有趣方面是它默认情况下不会 立即将它从运行时接收的消息写入数据库,但仅限于在交易结束时。此行为由SqlTrackingService的IsTransactional属性控制。