简单的说,跟踪服务是用来查看工作流的执行情况的功能。WF跟踪基础结构会检测工作流执行时发出的一些关键事件,并进行记录。例如,工作流在启动或完成时,就会发出跟踪记录。跟踪也可以提取与工作流变量相关联的业务相关数据。
例如,如果工作流表示一个订单处理系统,那么订单ID就可以随同跟踪记录一起被提取出来。一般来说,启用了WF跟踪能使整个工作流的诊断或业务分析变得轻松。对那些熟悉于WF 3.x中的跟踪的朋友来说,跟踪组件就等价于WF 3.x中的跟踪服务。在WF 4.0中,WF跟踪功能的性能得到了改善,并且简化了其编程模型。下图显示了跟踪基础结构的高级架构图:
跟踪基础结构的主要组件包括:
工作流跟踪基础结构采用了观察者模式。工作流实例是跟踪记录的发布者,而跟踪记录的订阅者则注册为工作流的扩展。这些订阅了跟踪记录的扩展被就被称为跟踪参与者。跟踪参与者作为扩展点,允许工作流开发人员来消费并处理跟踪记录。跟踪基础结构允许应用去筛选传出的跟踪记录,然后参与者就可以订阅记录的子集了。筛选的应用机制是通过跟踪配置。
通过检测工作流运行时发出的跟踪记录来跟踪工作流实例的执行过程。传出的跟踪记录类型包括:
WF 4.0提供了一个开箱即用的基于跟踪参与者的ETW (Event Tracing for Windows) 。ETW跟踪参与者会将跟踪记录输出到ETW会话中。此参与者是以工作流服务的形式,通过在配置文件中添加一个特定的跟踪行为来配置的。启用ETW跟踪参与者后,就允许在事件查看器中查看跟踪记录。后续的文章中还会详细介绍基于ETW的跟踪参与者的使用方法。学习SDK sample for ETW based tracking 是熟悉使用基于ETW的跟踪参与者的一个不错的方法。
在将来的文章中,我们还会更加深入的讨论WF跟踪。这些文章将会包括跟踪配置和跟踪记录、ETW跟踪参与者、编写自定义跟踪参与者、变量提取和统一的跟踪(Tracking)和追踪(Tracing)。