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
此角色适用于需要修改配置文件数据的用户帐户。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值