“工作流监视器”示例

Download sample

工作流监视器是一种工具,用于显示有关已完成和当前正在执行的工作流的工作流和活动状态信息。 该监视器从跟踪数据库中读取跟踪信息,并通过使用工作流设计器控件显示当前工作流和活动状态,以及当前的工作流执行情况。

为了使工作流监视器正常工作,在数据库中具有跟踪信息的任何工作流类型都应位于 GAC 或与工作流监视器可执行文件相同的目录中。 如果缺少任何类型,加载工作流定义时将会收到错误。 此外,您将需要创建一个新的跟踪数据库,并运行工作流,以使工作流监视器能够正确地发现工作流类型。

请参见以下各节,其内容论述有关如何将 sql 跟踪服务添加到工作流运行时,以便能够对跟踪事件进行跟踪,直到 sql 跟踪数据库。

设置监视宿主

为了使监视器能够显示工作流和活动,必须为其提供设计器和序列化代码。 必须使用 gacutil.exe 在全局程序集缓存 (GAC) 中注册所有工作流和活动类型,或将它们放在与 WorkflowMonitor.exe 相同的目录中。 此外,SqlTrackingQuery 需要类型的访问权限才能从 SqlTrackingService 表中读取工作流、活动信息以及工作流定义。

下面的过程演示如何配置工作流监视器应用程序使用的跟踪数据库。

创建 SQL 跟踪数据库

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

    CREATE DATABASE Tracking

    注意:在工作流应用程序中同时使用 T:System.Workflow.Runtime.Tracking.SqlTrackingService 和 T:System.Workflow.Runtime.Hosting.SqlWorkflowPersistenceService 时,建议对持久性服务和跟踪服务使用单一数据库。

  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 跟踪服务存储过程。

配置宿主应用程序

若要配置宿主应用程序以使用 SqlTrackingService,请以编程方式或通过配置文件将 SqlTrackingService 服务添加到服务的 WorkflowRuntime 集合。 为服务器名称和数据库设置 ConnectionString 属性。 将 SqlTrackingService 服务的 IsTransactional 属性设置为 false,以使可用于监视器的数据保持最新(如果 IsTransactional 属性设置为 true,则会在将信息写入数据库之前对信息进行批处理。)

若要以编程方式添加 SqlTrackingService 服务,请使用下面的代码示例:

C#:

WorkflowRuntime workflowRuntime = new WorkflowRuntime();

SqlTrackingService sqlTrackingService = new SqlTrackingService("Initial Catalog=Tracking;Data Source=localhost;Integrated Security=SSPI;");

sqlTrackingService.IsTransactional = false;

workflowRuntime.AddService(sqlTrackingService);

workflowRuntime.StartRuntime();

Visual Basic:

Dim workflowRuntime As New WorkflowRuntime()

Dim sqlTrackingService As New SqlTrackingService("Initial Catalog=Tracking;Data Source=localhost;Integrated Security=SSPI;")

sqlTrackingService.IsTransactional = false

workflowRuntime.AddService(sqlTrackingService)

workflowRuntime.StartRuntime()

若要通过配置文件添加 SqlTrackingService 服务,宿主应用程序代码必须在 WorkflowRuntime 构造函数中指定配置节名称,并且配置文件(例如,app.config)必须包含 WorkflowRuntime 配置信息。 例如:

宿主应用程序

C#:
WorkflowRuntime workflowRuntime = new WorkflowRuntime("WorkflowRuntimeConfigurationSection");
workflowRuntime.StartRuntime();

Visual Basic:
Dim workflowRuntime As New WorkflowRuntime("WorkflowRuntimeConfigurationSection")
workflowRuntime.StartRuntime()

配置文件

<configuration>
    <configSections>
        <section name="WorkflowRuntimeConfigurationSection" type="System.Workflow.Runtime.Configuration.WorkflowRuntimeSection, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </configSections>
    <WorkflowRuntimeConfigurationSection Name="WorkflowRuntimeConfigurationSectionName" UnloadOnIdle="false">
        <Services>
            <add type="System.Workflow.Runtime.Tracking.SqlTrackingService, System.Workflow.Runtime, Version=3.0.00000.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"  ConnectionString="Initial Catalog=TrackingStore;Data Source=localhost;Integrated Security=SSPI;" IsTransactional="false" UseDefaultProfile="true" />
        </Services>
    </WorkflowRuntimeConfigurationSection>
</configuration>

监视器用户界面

监视器界面包含三个主要窗格:

  • **“工作流”**窗格

  • **“活动”**窗格

  • **“工作流视图”**窗格

监视器将读取已跟踪的所有工作流。 若要指定计算机名称和数据库,请使用**“设置”对话框。 若要打开此对话框,请在“监视器”菜单中单击“设置”,或单击“设置”**工具栏按钮。

“工作流搜索选项”工具栏

此工具栏显示工具的搜索选项。 您可以通过使用工作流状态和时间间隔的组合进行搜索(如果出现了状态),以及通过跟踪数据项值进行搜索。 也可以通过工作流 ID 进行搜索。 举例来说,您可以搜索昨天终止的已终止工作流,其中的跟踪数据项 PurchaseAmount 在 CheckCredit 活动中的值为 500。

提示

默认情况下,SqlTrackingService 默认跟踪配置文件将提取所有工作流、活动以及用户跟踪点事件。 它不会提取任何工作流跟踪数据。 因此,在更新默认跟踪配置文件或与所运行的特定类型关联的跟踪配置文件之前,您将无法按“跟踪数据项”[Tracking Data Item]进行搜索。 可以使用此示例附带的 SQL 脚本 UpdateV1DefaultTrackingProfile.sql 来更新默认跟踪配置文件,以便从活动中提取 Name 属性。

使用跟踪配置文件中的以下项来实现此目的:

<Extracts>
    <WorkflowDataTrackingExtract>
        <Member>Name</Member>
    </WorkflowDataTrackingExtract>
</Extracts>

“工作流”窗格

此窗格显示跟踪数据库中的所有工作流,以及每个工作流的状态。 选择了某个工作流后,将在跟踪数据库中查询该工作流所有已完成和正在执行的活动的当前状态,以及**“活动”**窗格中显示的这些活动的当前状态。

“活动”窗格

此窗格显示在“工作流”窗格中选择的工作流的所有活动和活动状态。

“工作流视图”窗格

此窗格承载 Windows Workflow Foundation 附带的工作流设计器控件。 它允许用户展开和折叠复合活动,以及(在主视图、异常、事件和补偿之间)更改工作流视图。 在**“工作流”窗格中选择了某个工作流后,“工作流”**窗格将在所有完成的活动上显示一个复选标记,并在所有当前正在执行的活动上显示一个“播放”图标。

菜单

工作流监视器的菜单选项如下:

“文件”菜单

“退出”— 退出程序。

“视图”菜单

“工作流详细信息”— 如果启用此选项,将会显示**“工作流”“活动”**窗格。

“监视器”菜单

“启动”/“停止”— 启动或停止监视。

“设置”— 显示**“设置”**对话框。

工具栏按钮

工作流监视器的工具栏按钮如下:

  • “设置”— 显示**“设置”**对话框(有关更多信息,请参见“设置”一节)。

  • “打开监视器”[Monitor On]— 开始监视跟踪数据库(请参见“使用监视器”)。

  • “关闭监视器”[Monitor Off]— 停止监视跟踪数据库(请参见“使用监视器”)。

  • “全部展开”— 展开工作流视图中的所有复合活动。

  • “全部折叠”— 折叠工作流视图中的所有复合活动。

  • “工作流缩放级别”[Workflow Zoom Level]— 设置工作流视图的缩放级别。

设置

您可以使用**“设置”**对话框来配置监视器。 可以指定以下字段:

  • “SQL Server”— 正在运行 SQL Server 的本地计算机或远程计算机。

  • “跟踪数据库”[Tracking Database]— 用于存储跟踪信息的数据库。

  • “轮询间隔”— 在重新轮询数据库之前要等待的毫秒数。

  • “轮询时自动选择最新的工作流”[Auto-Select Latest When Polling]— 如果选择此选项,**“工作流”**窗格将自动选择正在执行的最新工作流。

提示

服务器名称和数据库名称也出现在状态栏中。

使用监视器

工作流监视器将轮询跟踪数据库,并自动在**“工作流”“活动”窗格中显示工作流和活动的状态,并在“工作流视图”窗格中显示工作流的进度。 若要启用监视,请使用“打开监视器”[Monitor On]工具栏按钮,或在“监视器”菜单上单击“启动”。 使用“设置”对话框来设置轮询间隔。 当您监视跟踪数据库时,显示当前正在执行的最新工作流将十分有用。 为此,请选中“设置”对话框中的“轮询时自动选择最新的工作流”[Auto-Select Latest When Polling]**复选框。

提示

如果启用了监视,“正在监视”[Monitoring]一词将出现在状态栏中。

工作流监视器使用 SqlTrackingQuery API 来实现查询功能。 工作流和活动的列表是通过 SqlTrackingQuery API 检索的。 搜索功能使用 SqlTrackingQuery API。

相同工作流类型的多个定义

第一次使用一种新的工作流类型时,SqlTrackingService 将保留工作流定义。 但是,如果定义发生更改而类型版本保持不变,则不会在跟踪数据库中保留新记录。 因此,监视器会始终显示工作流类型的第一个定义。

用户设置

工作流监视器将设置(SQL Server、数据库、轮询间隔)保存在以下目录中的 workflowmonitor.config 文件内:\Documents and Settings\<用户>\Local Settings\Application Data\Microsoft Corporation\Windows Workflow Foundation SDK Application Samples\3.0.0.0。

请参见

参考

SqlTrackingService

其他资源

Using the SQLTrackingService
Task 4: Use the Windows Workflow Tracking Service
“简单的跟踪”示例
应用程序示例

Footer image

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