转:WF中的跟踪服务(1):Sql跟踪数据库表,视图,存储过程等相关说明

使用WF 中的SqlTrackingService 跟踪服务,我们可以记录有关工作流及其关联活动的跟踪信息到Sql Server数据库库中。SqlTrackingQuery 类提供对包含在跟踪数据库中的数据的高级别访问。但是,我们也可以直接查询 SQL 跟踪服务数据库视图。我们使用WF提供的脚本建立好的Sql数据库主要有21张表,20个视图和59个存储过程,下面就说一些比较重要的。

1.跟踪数据库的表

1.1.Workflow :Workflow 表存储了所有工作流类型的工作流定义,该表已由 SqlTrackingService 进行跟踪。它在第一次将工作流实例化并为该工作流类型启用 SqlTrackingService 时填充。
说明
WorkflowTypeId 链接至存储类型名称和在其中出现工作流类型的程序集名称的 Type 表。
WorkflowDefinition 工作流的定义。

1.2.Activity:Activity 表存储在对应工作流类型中出现的所有活动类型。

说明
WorkflowTypeId 链接至存储类型名称和在其中出现工作流类型的程序集名称的 Type 表。
QualifiedName 工作流定义中的活动限定名。
ActivityTypeId 链接至存储类型名称和在其中出现活动类型的程序集名称的 Type 表。
ParentQualifiedName 如果该活动是另一个活动的组成部分,则此字段将包含该父级活动的活动限定名。

1.3.Type:Type 表存储了所有类型信息和在其中出现类型的程序集名称。这包括了工作流类型、活动类型以及 SqlTrackingService 中使用的其他所有类型。例如,如果将字符串作为跟踪数据项进行跟踪,则该字符串类型信息将存储在此表中。

说明
TypeId 类型的唯一 ID。
TypeFullName 该类型的完全限定名。
AssemblyFullName 存储类型的程序集的全名。
IsInstanceType 指示工作流实例是否为仅 XOML 实例的布尔值(在这种情况下,类型和程序集全名为空)。

1.4.WorkflowInstance:WorkflowInstance 表维护跟踪数据库中已跟踪的所有工作流实例的列表。

说明
WorkflowInstanceInternalId 由数据库给予工作流实例的唯一内部 ID。该 ID 用作外键以联接数据库中的其他表。
WorkflowInstanceId 工作流实例的 GUID。
ContextGuid 有关此工作流实例的上下文信息。
CallerInstanceId 调用此工作流实例的工作流实例的 ID。
CallPath 当工作流实例调用一个工作流实例,本身又被另一个工作流实例调用时使用的完整调用路径。
CallerContextGuid 有关调用方的上下文信息。
CallerParentContextGuid 有关调用实例的父级工作流实例的上下文信息。
WorkflowTypeId 使用工作流类型 ID 链接至 Workflow 表。
InitializedDateTime 初始化工作流实例的日期和时间。
CreatedDateTime 创建工作流实例的日期和时间。
DbInitializedDateTime 初始化工作流实例记录时的数据库日期和时间。
EndDateTime 完成/终止工作流实例的日期和时间。
DbEndDateTime 提交工作流实例记录时的数据库日期和时间。

1.5.ActivityInstance:ActivityInstance 表用于存储正在跟踪的活动的实例。此表与 WorkflowInstance 表之间存在多对一的关系。

说明
WorkflowInstanceInternalId 活动所属的工作流实例的内部数据库 ID。
ActivityInstanceId 给定工作流实例正在跟踪的活动的唯一 ID。
QualifiedName 工作流定义中的活动的限定名。
ContextGuid 活动的上下文。
ParentContextGuid 父活动的上下文。
WorkflowInstanceEventId 工作流实例事件记录的唯一 ID。

1.6.ActivityExecutionStatusEvent :ActivityExecutionStatusEvent 表存储了活动在其生命周期中已经历的不同状态。给定工作流实例中的给定活动可以有多个活动状态。只有其中一个是当前状态。

说明
ActivityExecutionStatusEventId 活动执行状态记录的唯一 ID。
WorkflowInstanceInternalId 活动所属的工作流实例的内部数据库 ID。
EventOrder 事件发生的顺序。
ActivityInstanceId 记录了状态的活动的唯一 ID。
ExecutionStatusId 链接至存储了不同状态的说明的 ActivityExecutionStatus 表。
EventDateTime 事件发生的日期和时间。
DbEventDateTime 事件发生时的数据库日期和时间。

1.7.ActivityExecutionStatus:ActivityExecutionStatus 表是一个参考表,该表存储活动可经历的所有执行状态的文本值。

说明
ExecutionStatusId 状态的唯一 ID。
Description 状态的文本值。

1.8.TrackingDataItem:对于每个活动状态,TrackingDataItem 表都存储了一组数据(如变量、属性等),前提是 SqlTrackingService 正在跟踪这些项(如跟踪配置文件所指示)。跟踪配置文件可以指定当特定活动达到特定状态时必须跟踪哪些工作流属性。

说明
TrackingDataItemId 表示给定活动状态的给定项目的记录的唯一 ID,属于特定的 workflowInstance。
WorkflowInstanceInternalId 工作流实例的内部数据库 ID。
EventId 从其中提取跟踪数据项的事件 ID。
EventTypeId 从其中提取跟踪数据项的事件类型。
FieldName 被跟踪变量(数据项)的名称。
FieldTypeId 被跟踪变量(数据项)的类型 ID。引用 Type 表。
Data_Str 被跟踪数据的字符串值(如果该数据属于基元类型并可转换为字符串)。
Data_Blob 被跟踪数据的值的二进制大型对象值(如果该数据属于非基元类型并可进行二进制序列化)。
DataNonSerializable 用于指示数据存在,但不能转换为字符串或进行二进制序列化的标志。

1.9.TrackingDataItemAnnotation:TrackingDataItemAnnotation 表存储了为工作流中的给定跟踪数据项添加的批注。批注由跟踪配置文件指示。

说明
TrackingDataItemId 为其存储批注的跟踪数据项的 ID。
WorkflowInstanceInternalId 工作流实例的内部数据库 ID。
Annotation 批注的文本值。

1.10.EventAnnotation:EventAnnotation 表存储了与工作流事件关联的所有批注。

说明
WorkflowInstanceInternalId 工作流实例的内部数据库 ID。
EventId 在其中进行批注的事件的内部数据库 ID。
EventTypeId 事件类型的内部数据库 ID。
Annotation 批注的文本值。

1.11.WorkflowInstanceEvent:WorkflowInstanceEvent 表存储了工作流在其生命周期中已经历的不同事件。一个给定工作流实例可以有多个事件;但是只有其中一个是当前事件。.

说明
WorkflowInstanceEventId 工作流实例事件记录的唯一 ID。
WorkflowInstanceIntebrnalId 活动所属的工作流实例的内部数据库 ID。
TrackingWorkflowEventId 事件的唯一 ID。
EventDateTime 事件发生的日期和时间。
EventOrder 事件发生的顺序。
EventArgTypeId 事件参数的数据类型的内部数据库 ID。
EventArg 事件参数的二进制序列化数据。
DbEventDateTime 事件发生时的数据库日期和时间。

1.12.TrackingWorkflowEvent:TrackingWorkflowEvent 表存储了工作流可经历的所有事件的文本值。

说明
TrackingWorkflowEventId 事件的唯一 ID。
Description 事件的文本值。

1.13.UserEvent:“UserEvent“表存储了由自定义用户跟踪点发出和跟踪的不同事件。一个给定工作流实例可以有多个用户事件。

说明
UserEventId 用户事件的唯一 ID。
WorkflowInstanceInternalId 活动所属的工作流实例的内部数据库 ID。
EventOrder 事件发生的顺序。
ActivityInstanceId 发生用户事件的活动的唯一 ID(在该活动中,发出事件的代码出现在工作流代码中)。
EventDateTime 事件发生的日期和时间。
UserDataKey 在用户事件中传递的键值(当您使用 TrackData 方法时)。
UserDataTypeId 正在跟踪的用户数据的 Type 表中的类型 ID。
UserData_Str 被跟踪数据的字符串值(如果该数据属于基元类型并可转换为字符串)。
UserData_Blob 被跟踪数据的值的二进制大型对象值(如果该数据属于非基元类型并可进行二进制序列化)。
DataNonSerializable 用于指示数据存在,但不能转换为字符串或进行二进制序列化的标志。
DbEventDateTime 事件发生时的数据库日期和时间。

1.14.AddedActivity:AddedActivity 表存储了发生工作流更改时添加至工作流的活动。每次发生工作流更改时都可能会添加许多活动。

说明
WorkflowInstanceInternalId 工作流实例的内部数据库 ID。
WorkflowInstanceEventId 对工作流实例的事件的引用。
QualifiedName 添加活动的限定名。
ActivityTypeId 链接至 Type 表,以指示作为动态更改的一部分添加的活动的类型和程序集名称。
ParentQualifiedName 包含此活动的父级活动的限定名。
AddedActivityAction 从动态更新事件创建的 ActivityChangeAction 对象的序列化值。
Order 将活动添加至工作流的顺序

1.15.RemovedActivity:RemovedActivity 表存储了因工作流更改而移除的所有活动。每次发生工作流更改时都可能会移除许多活动。

说明
WorkflowInstanceInternalId 工作流实例的内部数据库 ID。
WorkflowInstanceEventId 对工作流实例的事件的引用。
QualifiedName 移除活动的限定名。
ParentQualifiedName 包含此活动的父级活动的限定名。
RemovedActivityAction 从动态更新事件创建的 ActivityChangeAction 对象的序列化值。
Order 将活动添加至工作流的顺序

1.16.TrackingProfile:TrackingProfile 表存储了给定工作流类型的跟踪配置文件。

说明
TrackingProfileId 跟踪配置文件的唯一 ID。
Version 跟踪配置文件的版本,应与 Tracking Profile 的版本对应(跟踪配置文件 XML 中的 TrackingProfile.Version 或版本属性)
WorkflowTypeId 链接至存储了工作流的类型名称和程序集名称的 Type 表。
TrackingProfileXml 跟踪配置文件 XML。
InsertDateTime 插入配置文件的日期和时间。

1.17.TrackingProfileInstance:TrackingProfileInstance 表存储了与特定工作流实例关联的跟踪配置文件。当不同配置文件用于不同工作流实例时使用此表。

说明
InstanceId 存储跟踪配置文件的工作流实例的内部 ID。
TrackingProfileXml 跟踪配置文件 XML。
UpdatedDateTime 发生更新的日期和时间。

1.18.DefaultTrackingProfile:DefaultTrackingProfile 表存储了默认跟踪配置文件。如果跟踪配置文件与给定工作流类型不关联,则使用默认跟踪配置文件。

说明
Version 跟踪配置文件的版本号,应与 Tracking Profile 的版本对应(跟踪配置文件 XML 中的 TrackingProfile.Version 或版本属性)
TrackingProfileXml 跟踪配置文件 XML。
InsertDateTime 插入跟踪配置文件的日期和时间。

1.19.TrackingPartitionInterval:TrackingPartitionInterval 表存储了用于启用数据维护分区的分区间隔。只有在将 SqlTrackingService 类的 PartitionOnCompletion 属性设置为 true 时,此事件才会发生。默认为每月(“m”)。您可以将其设置为每日(“d”)或每年(“y”)。

说明
Interval 要对表进行分区所设置的间隔。

1.20.TrackingPartitionSetName:TrackingPartitionSetName 表包含了有关分区集名称的信息。

说明
PartitionId 分区的唯一 ID。
Name 分区的名称。
CreatedDateTime 创建分区的日期和时间。
EndDateTime 结束分区的日期和时间。
PartitionInterval 此特定集的分区间隔。

1.21.SqlTrackingServiceQfeLog:

说明
InstallDateTime  
KbId  
Description  

2.部分视图和存储过程说明

2.1.SetPartitionInterval

设置 SQL 跟踪服务在对跟踪数据进行分区时使用的间隔。若要启用跟踪数据分区,请将 SqlTrackingService 的 PartitionOnCompletion 属性设置为 true。启用此属性后,Windows Workflow Foundation 将在您指定的时间间隔内创建一个新的分区集(新的表格集)。表格 vw_TrackingPartitionSetName 包含有关分区集名称的信息,包括 Name yyyy_m、CreatedDateTime、EndDateTime 和 PartitionInterval。完成工作流实例后,相应的跟踪数据将移到新创建的表格集中。

2.2.DetachPartition

如果为 SqlTrackingService 启用了分区,此过程将从分区总集中移除一个分区。这样分区即会分离出来,并且视图不会在以后的查询中包含此分区。此分区的表格保留在数据库中。

2.3.DropPartition

如果为 SqlTrackingService 启用了分区,此过程将从分区总集中移除一个分区。这样分区即会分离出来,并且视图不会在以后的查询中包含此分区。此外,该分区的所有表格也将移除。

如果为 @PartitionName 和 @PartitionId 提供了一个值,则在 @PartitionId 不指向 @PartitionName 参数所指定的分区名称时,dbo.DropPartition 将会失败。

2.4.UpdateTrackingProfile

更新给定工作流类型的跟踪配置文件。

2.5.DeleteTrackingProfile

删除给定工作流类型的跟踪配置文件。

该存储过程不会从 SQL 跟踪数据库中移除跟踪配置文件。它只是解除跟踪配置文件与给定工作流类型之间的关联。

2.6.SetInstanceTrackingProfile

设置给定工作流实例的跟踪配置文件。

若要为运行中的工作流实例更新跟踪配置文件,请从要更改跟踪配置文件的 WorkflowInstance 对象中调用 SetInstanceTrackingProfile 存储过程,然后调用 ReloadTrackingProfiles 方法。

2.7.DeleteInstanceTrackingProfile

删除给定工作流实例的跟踪配置文件。

DeleteInstanceTrackingProfile 存储过程不会从 SQL 跟踪数据库中删除跟踪配置文件,而只是解除跟踪配置文件与给定工作流实例之间的关联。

若要为运行中的工作流实例更新跟踪配置文件,请从要解除与跟踪配置文件关联的 WorkflowInstance 对象中调用 DeleteInstanceTrackingProfile 存储过程,然后调用 ReloadTrackingProfiles 方法。

2.8.GetCurrentDefaultTrackingProfile

检索 SqlTrackingService 使用的当前默认跟踪配置文件。当 SqlTrackingService 的 UseDefaultProfile 属性设置为“True”,且当工作流类型没有关联的 TrackingProfile 时,使用默认配置文件。

2.9.UpdateDefaultTrackingProfile

更新 SqlTrackingService 所使用的默认跟踪配置文件。 当 SqlTrackingService 的 UseDefaultProfile 属性设置为 true,并且工作流类型没有关联的 TrackingProfile 时,使用默认配置文件。

不能删除默认跟踪配置文件。要停止使用默认配置文件,请将 SqlTrackingService 的 UseDefaultProfile 属性设置为 false。

3.SQL 跟踪服务数据库角色

3.1.tracking_writer
运行宿主进程的帐户应在此角色下运行。该角色具有检索跟踪配置文件和写入跟踪数据的权限。
3.2.tracking_reader
此角色中的帐户可以查看所有数据,但不能更新或修改数据。此角色中的用户也不能访问基础表。3.3.tracking_profilereaderwriter
此角色适用于需要修改配置文件数据的用户帐户。

posted @ 2009-08-09 19:30  rapid  阅读(493)  评论(1编辑  收藏  举报