“EventArgs 跟踪”示例

Download sample

此示例演示如何使用 Windows Workflow Foundation 提供的 SQL 跟踪服务来跟踪工作流的执行。

工作流运行时在执行工作流时会引发某些事件。 跟踪服务可以捕获这些事件,并将有关这些事件的信息存储在可以查询的 SQL Server 数据库中。

跟踪运行时定义 TrackingWorkflowTerminatedEventArgsTrackingWorkflowSuspendedEventArgsTrackingWorkflowExceptionEventArgs 类型,以便分别保存有关工作流终止、挂起和异常的信息。将为其对应的事件随 WorkflowTrackingRecord 一起发送 WorkflowEventArgs。 例如,当工作流状态到达 WorkflowTerminated 状态时,将随 WorkflowTrackingRecord 一起发送 TrackingWorkflowTerminatedEventArgs

SqlTrackingService 在各种 EventArgs 对象到达时接收这些对象、序列化对象,并将对象随其事件一起保存到跟踪数据库(如果跟踪配置文件要求这些事件)。 然后,跟踪用户可以反序列化和使用序列化形式。 使用的跟踪配置文件是 SqlTrackingService 默认跟踪配置文件。

提示

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

示例概述

该示例是一个工作流控制台应用程序,并由两个工作流组成:

  • ExceptionWorkflow。 一个包含代码处理程序的简单工作流,将在该工作流中引发异常。 异常处于未处理状态,并将导致工作流终止。

  • SuspendedWorkflow。 一个包含挂起活动的简单工作流。 工作流应到达挂起状态。

示例的主入口位于 Program 类中,具有以下逻辑:

  1. 创建 SqlTrackingService 数据库的 connectionString。

  2. 按如下方式将 SqlTrackingService 添加到工作流运行时:

    workflowRuntime.AddService(new SqlTrackingService(connectionString));
    
  3. 按如下方式运行工作流:

    WorkflowInstance exceptionWorkflowInstance = workflowRuntime.CreateWorkflow(typeof(ExceptionWorkflow));
    exceptionWorkflowInstance.Start();
    
  4. 创建事件处理程序以等待工作流完成或终止(视工作流的类型而定)。

  5. 查询 SqlTrackingService 以查找特定 WorkflowEvents,并检索 TrackingWorkflowTerminatedEventArgsTrackingWorkflowSuspendedEventArgsTrackingWorkflowExceptionEventArgs 的二进制序列化对象。

  6. 反序列化数据并将其内容写入控制台。

创建 SqlTrackingService 数据库

由 Windows Workflow Foundation 安装的 SQL 服务使用 Microsoft SQL Server 来存储信息。 可以对这些任务使用 Microsoft SQL Server 2005 Express、SQL Server 2000 或更高版本或 SQL Server 2000 Desktop Engine (MSDE)。

Windows Workflow Foundation 安装程序并不安装这些服务所需的数据库,但会安装用于为这些服务创建和配置数据库的 SQL 脚本。

创建 SQL 跟踪数据库

  1. 在 Microsoft SQL Server 2005 Express、SQL Server 2000 或更高版本或 SQL Server 2000 Desktop Engine (MSDE) 中,使用如下 SQL 查询语句创建名为 Tracking 的新数据库:

    CREATE DATABASE Tracking

    注意:在工作流应用程序中同时使用 SqlTrackingServiceSqlWorkflowPersistenceService 时,建议对持久性服务和跟踪服务使用单一数据库。

  2. 在 SQL 查询分析器工作区中,从可用数据库列表中选择在步骤 1 中创建的数据库。

  3. 在**“文件”菜单上,单击“打开”**并打开 SQL 脚本 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<语言>\Tracking_Schema.sql

  4. 通过单击**“执行”**来执行查询,或按 F5 创建 SQL 跟踪服务表。

  5. 在**“文件”菜单上,单击“打开”**并打开 SQL 脚本 %WINDIR%\Microsoft.NET\Framework\v3.0\Windows Workflow Foundation\SQL\<语言>\Tracking_Logic.sql

  6. 通过单击**“执行”**来执行查询,或按 F5 创建 SQL 跟踪服务存储过程。

生成示例

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

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

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

  3. 转到示例的源目录。

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

运行示例

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

请参见

参考

SqlTrackingService
SqlTrackingQuery
SqlTrackingWorkflowInstance
ActivityEvents
ActivityTrackingRecord
WorkflowEvents
WorkflowTrackingRecord

其他资源

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

Footer image

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