ConsoleTrackingService 示例

Download sample

此示例演示如何创建跟踪服务并将跟踪数据的内容写入控制台。

Windows Workflow Foundation 提供了一个跟踪基础结构,应用程序可以利用该基础结构来跟踪工作流状态更改和数据。 此外,它还使您能够针对业务需求灵活地创建最适当的跟踪服务,并在工作流运行时中使用这些跟踪服务。

若要编写跟踪服务,您必须实现跟踪通道和跟踪服务。 跟踪通道接收运行时发送的跟踪记录。 跟踪服务根据具体参数和条件为运行时提供跟踪配置文件。 它还负责提供可接收运行时所发送数据的跟踪通道。

提示

跟踪数据中的时间值采用协调世界时(格林威治标准时间)格式。

示例概述

此示例是一个工作流控制台应用程序,其中包含一个工作流和一个简单的跟踪服务。SampleWorkflow 是一个具有代码处理程序的工作流,将在该处理程序中发出 UserTrackPoint

完整的跟踪服务是在 ConsoleTrackingService.cs 中实现的,并且具有以下 TrackingChannelSample 和 ConsoleTrackingService 实现:

  • TrackingChannelSample 按如下方式实现 Send 方法:

    public override void Send(TrackingRecord record)
    {
        // Filter on record type.
        if (record is WorkflowTrackingRecord)
        {
            WriteWorkflowTrackingRecord((WorkflowTrackingRecord)record);
        }
        if (record is ActivityTrackingRecord)
        {
            WriteActivityTrackingRecord((ActivityTrackingRecord)record);
        }
        if (record is UserTrackingRecord)
        {
            WriteUserTrackingRecord((UserTrackingRecord)record);
        }
    }
    

此外,TrackingChannelSample 通过将消息写入到控制台来实现 InstanceCompletedOrTerminated 方法。 跟踪运行时调用 InstanceCompletedOrTerminated 方法来指示工作流实例已完成运行,而不考虑与该实例关联的跟踪配置文件。

  • ConsoleTrackingService 实现以下方法:

    public override TrackingChannel GetTrackingChannel(TrackingParameters parameters)
    {
        //Return a tracking channel to receive runtime events.
        return new TrackingChannelSample(parameters);
    }
    

生成示例

  1. 通过单击**“下载示例”**来下载该示例。

    这会将示例项目提取到本地硬盘。

  2. 单击**“开始”,依次指向“程序”“Microsoft Windows SDK”,然后单击“CMD 外壳”[CMD Shell]**。

  3. 转到示例的源目录。

  4. 在命令提示符处键入 MSBUILD <解决方案文件名>

运行示例

  • 在 SDK 命令提示窗口中,运行 ConsoleTrackingService\bin\debug 文件夹(对于该示例的 VB 版本为 ConsoleTrackingService\bin 文件夹)中的 .exe 文件,该文件夹位于该示例的主文件夹下。

高级主题

示例中未实现以下主题。 它们是指向要探索的更高级工作流主题的指针。

运行时和跟踪服务通信

对跟踪服务的运行时调用是同步的。 在从跟踪服务方法中返回之前,工作流执行将被阻止。

配置文件更新

Windows Workflow Foundation 使您能够通过从 IProfileNotification 中派生并按如下方式实现事件处理程序,从而灵活地将配置文件更新或移除信息传递到跟踪运行时:

public class ConsoleTrackingService : TrackingService, IProfileNotification

public event EventHandler<ProfileUpdatedEventArgs> ProfileUpdated;
public event EventHandler<ProfileRemovedEventArgs> ProfileRemoved;

重新加载配置文件

如果要为特定工作流实例重新加载配置文件,您可以按如下方式对该实例调用 ReloadTrackingProfiles

WorkflowInstance wi = wr.StartWorkflow(typeof(SampleWorkflow));
wi.ReloadTrackingProfiles();

这会导致运行时在注册的 TrackingService 上调用 TryReloadProfile 方法,以便为该实例获取新的配置文件。

GetProfile 重载

工作流运行时调用以下方法向配置文件请求特定的 workflowInstanceId。 如果支持重新加载特定于实例的配置文件,请实现此方法。

GetProfile(Guid workflowInstanceId)

工作流运行时调用以下方法来请求特定于版本的配置文件。 如果支持重新加载特定于版本的配置文件,请实现此方法。

GetProfile(Type workflowType, Version profileVersionId)

请参见

参考

ActivityTrackingRecord
WorkflowTrackingRecord
IProfileNotification

其他资源

“跟踪”示例
“简单的跟踪”示例
“使用 SQLTrackingService 进行查询”示例
“使用用户跟踪点进行跟踪”示例
“EventArgs 跟踪”示例
“使用 SQLTrackingService 进行查询”示例
RuleActionTrackingEvent 示例
“文件跟踪服务和查询”示例
“使用跟踪配置文件对象模型”示例
“SQL 数据维护”示例
Windows Workflow Tracking Services

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。