除了订阅WorkfloRuntime的WorkflowCompleted事件之外,如何从主机确定工作流实例是否已编译?是否有任何标志或状态我可以检查给定的WorflowInstance以确定它是否已完成?
@Edit:问题在于顺序工作流程。
答案 0 :(得分:1)
您可以检查TrackingServices
以了解工作流实例的当前状态。
这里有一些代码段:.NET 3.0 State Machines In Windows Workflow 。
答案 1 :(得分:0)
答案(至少知道,从我所学到的)是没有与WorkflowInstance相关联的标志,您可以为给定实例检索指示实例是否已完成。
两种可用的方法是:
使用TrackingService服务保留工作流程执行的“日志”并查询日志以确定工作流实例是否已完成。这是一个good introductory article。使用这种方法,TrackingService唯一可用的开箱即用实现是SqlTrackingService,这需要一个SQL Server数据库。然后,您可以使用SqlTrackingQuery查询“日志”
注意: SqlTrackingService行为的一个有趣方面是它默认情况下不会 立即将它从运行时接收的消息写入数据库,但仅限于在交易结束时。此行为由SqlTrackingService的IsTransactional属性控制。