代码改变世界

WF 4.0 beta1中的跟踪机制

2009-06-15 08:40  Windie Chai  阅读(3400)  评论(5编辑  收藏  举报

简单的说,跟踪服务是用来查看工作流的执行情况的功能。WF跟踪基础结构会检测工作流执行时发出的一些关键事件,并进行记录。例如,工作流在启动或完成时,就会发出跟踪记录。跟踪也可以提取与工作流变量相关联的业务相关数据。

例如,如果工作流表示一个订单处理系统,那么订单ID就可以随同跟踪记录一起被提取出来。一般来说,启用了WF跟踪能使整个工作流的诊断或业务分析变得轻松。对那些熟悉于WF 3.x中的跟踪的朋友来说,跟踪组件就等价于WF 3.x中的跟踪服务。在WF 4.0中,WF跟踪功能的性能得到了改善,并且简化了其编程模型。下图显示了跟踪基础结构的高级架构图:

跟踪基础结构的主要组件包括:

  1. 跟踪记录(Tracking Records):从工作流运行时发出。
  2. 跟踪配置(Tracking Profile):用来筛选从工作流实例中发出的跟踪记录。
  3. 跟踪参与者(Tracking Participants):用来订阅跟踪记录。跟踪参与者包括处理来自跟踪记录的负载的逻辑(例如,这个逻辑可能是将跟踪记录写到文件中)。

工作流跟踪基础结构采用了观察者模式。工作流实例是跟踪记录的发布者,而跟踪记录的订阅者则注册为工作流的扩展。这些订阅了跟踪记录的扩展被就被称为跟踪参与者。跟踪参与者作为扩展点,允许工作流开发人员来消费并处理跟踪记录。跟踪基础结构允许应用去筛选传出的跟踪记录,然后参与者就可以订阅记录的子集了。筛选的应用机制是通过跟踪配置。

通过检测工作流运行时发出的跟踪记录来跟踪工作流实例的执行过程。传出的跟踪记录类型包括:

  • 工作流实例跟踪记录:工作流实例记录表述了工作流实例的生命周期。举例来说,工作流会在启动或完成时发出一条记录。
  • 活动跟踪记录:活动跟踪记录会在工作流活动执行时发出。这些记录指示了工作流活动的状态(也就是说,工作流被计划执行、工作流完成、或者抛出错误)。
  • 书签(Bookmark)恢复跟踪记录:书签恢复记录跟踪了所有成功恢复的书签。
  • 用户跟踪记录:工作流创作者可以在自定义工作流活动中创建自定义跟踪记录,并在该活动中发出这些记录。自定义跟踪记录在发出的同时还可以包含数据。

WF 4.0提供了一个开箱即用的基于跟踪参与者的ETW (Event Tracing for Windows) 。ETW跟踪参与者会将跟踪记录输出到ETW会话中。此参与者是以工作流服务的形式,通过在配置文件中添加一个特定的跟踪行为来配置的。启用ETW跟踪参与者后,就允许在事件查看器中查看跟踪记录。后续的文章中还会详细介绍基于ETW的跟踪参与者的使用方法。学习SDK sample for ETW based tracking 是熟悉使用基于ETW的跟踪参与者的一个不错的方法。

在将来的文章中,我们还会更加深入的讨论WF跟踪。这些文章将会包括跟踪配置和跟踪记录、ETW跟踪参与者、编写自定义跟踪参与者、变量提取和统一的跟踪(Tracking)和追踪(Tracing)。

本文翻译自:http://blogs.msdn.com/endpoint/archive/2009/06/11/introduction-to-workflow-tracking-in-net-framework-4-0-beta1.aspx