WF 事件跟踪中经常使用的对象可以分为俩类:跟踪数据检索和跟踪详细说明。跟踪检索对象,如SqlTrackingQuery,一旦跟踪数据被存储到数据库中,你可使用它们采集跟踪数据。跟踪详细说明对象,如跟踪点和位置对象,允许你能在工作流代码中控制该跟踪什么。
WF 由一个主要的跟踪服务:SqlTrackingService (一般用在sql server 2005中)承载。
1.使用SqlTrackingService 进行工作流事件跟踪:
将SqlTrackingService添加到工作流运行时中,就可以跟踪工作流的处理过程。当跟踪的事件激发时,WF 创建并管理跟踪记录。
(1) 设置SQL Server 进行跟踪
首先在sql server 2005中建立一个数据库用以保存跟踪信息。然后需运行一些由WinFX 组件提供的SQL 脚本,这些脚本将创建数据库角色、表和视图、 必须的存储过程以和你的工作流进行交互。(这些脚本的位置一般在是C:\Widows
\Microsoft.NET\Framework\3.0\Windows Workflow Foundation\ SQL\
ZH-CHS,)。用到的俩个脚本是Tracking_Schema.sql (建立一些表)文件和Tracking_Logic.sql(建立一些存储过程)。
(2)使用SqlTrackingServer 服务
为了方便,我们就建立一个新的工作流,在此处我补充一下数据工厂:(数据工厂能使我们只建立一个单一workflowruntime实例)就是在项目中添加一个类型为类的新项(当然一些命名空间的引入也是必须的)
一般代码如下(功能比较简单):

完成这些之后,接下来就来为我们的工作流添加SqlTrackingService
首先,要为WorkflowTracker 应用程序 添加System.Configuration 引用,我们需要它来把访问数据库的连接字符串存储到应用程序的配置文件里。然后为WorkflowTracker 应用程序添加一个应用程序配置文件。在该配置文件里之需要设置连接字符串的内容(连接到刚才建立的数据库)。接下来在数据工厂文件里添加一些引用个代码。
using System.Workflow.Runtime.Tracking;
using System.Configuration;
在WorkflowFactory.cs 文件中,找到我们创建WorkflowRuntime 实例的地方,在这里我们需要为 WorkflowRuntime 引入SqlTrackingService。在GetWorkflowRuntime 方法中
添加下面的代码:
String conn = ConfigurationManager.ConnectionStrings["TrackingDatabase"].ConnectionString;
_workflowRuntime.AddService(new SqlTrackingService(conn));
假如工作流运行正常,你可在WorkflowTracking 数据库的ActivityInstance 表中看到下图中显示的结果:

添加之后我们要对workflow1的设计界面进行修改:添加的一些活动和位置关系如下图:

Workflow1.cs的完整代码如下:

完成这些之后,接下来就来为我们的工作流添加SqlTrackingService
首先,要为WorkflowTracker 应用程序 添加System.Configuration 引用,我们需要它来把访问数据库的连接字符串存储到应用程序的配置文件里。然后为WorkflowTracker 应用程序添加一个应用程序配置文件。在该配置文件里之需要设置连接字符串的内容(连接到刚才建立的数据库)。接下来在数据工厂文件里添加一些引用个代码。
using System.Workflow.Runtime.Tracking;
using System.Configuration;
在WorkflowFactory.cs 文件中,找到我们创建WorkflowRuntime 实例的地方,在这里我们需要为 WorkflowRuntime 引入SqlTrackingService。在GetWorkflowRuntime 方法中
添加下面的代码:
String conn = ConfigurationManager.ConnectionStrings["TrackingDatabase"].ConnectionString;
_workflowRuntime.AddService(new SqlTrackingService(conn));
假如工作流运行正常,你可在WorkflowTracking 数据库的ActivityInstance 表中看到下图中显示的结果。
