wf数据库Tracking服务 数据库表详解
通过 Windows Workflow Foundation 中的 SQL 跟踪服务,您可以添加有关工作流及其关联活动的跟踪信息。SqlTrackingQuery 类提供对包含在跟踪数据库中的数据的高级别访问。但是,您也可以直接查询 SQL 跟踪服务数据库视图以获取更多详细信息。这些视图直接映射到基础 SQL 跟踪服务表架构。
SQL 跟踪服务数据库表
以下信息概述了 SQL 跟踪服务使用的表及其关联列。
工作流
Workflow 表存储了所有工作流类型的工作流定义,该表已由 SqlTrackingService 进行跟踪。它在第一次将工作流实例化并为该工作流类型启用 SqlTrackingService 时填充。
列 | 说明 |
---|---|
WorkflowTypeId |
链接至存储类型名称和在其中出现工作流类型的程序集名称的 Type 表。 |
WorkflowDefinition |
工作流的定义。 |
Activity
Activity 表存储在对应工作流类型中出现的所有活动类型。
列 | 说明 |
---|---|
WorkflowTypeId |
链接至存储类型名称和在其中出现工作流类型的程序集名称的 Type 表。 |
QualifiedName |
工作流定义中的活动限定名。 |
ActivityTypeId |
链接至存储类型名称和在其中出现活动类型的程序集名称的 Type 表。 |
ParentQualifiedName |
如果该活动是另一个活动的组成部分,则此字段将包含该父级活动的活动限定名。 |
Type
Type 表存储了所有类型信息和在其中出现类型的程序集名称。这包括了工作流类型、活动类型以及 SqlTrackingService 中使用的其他所有类型。例如,如果将字符串作为跟踪数据项进行跟踪,则该字符串类型信息将存储在此表中。
列 | 说明 |
---|---|
TypeId |
类型的唯一 ID。 |
TypeFullName |
该类型的完全限定名。 |
AssemblyFullName |
存储类型的程序集的全名。 |
IsInstanceType |
指示工作流实例是否为仅 XOML 实例的布尔值(在这种情况下,类型和程序集全名为空)。 |
WorkflowInstance
WorkflowInstance 表维护跟踪数据库中已跟踪的所有工作流实例的列表。
列 | 说明 |
---|---|
WorkflowInstanceInternalId |
由数据库给予工作流实例的唯一内部 ID。该 ID 用作外键以联接数据库中的其他表。 |
WorkflowInstanceId |
工作流实例的 GUID。 |
ContextGuid |
有关此工作流实例的上下文信息。 |
CallerInstanceId |
调用此工作流实例的工作流实例的 ID。 |
CallPath |
当工作流实例调用一个工作流实例,本身又被另一个工作流实例调用时使用的完整调用路径。 |
CallerContextGuid |
有关调用方的上下文信息。 |
CallerParentContextGuid |
有关调用实例的父级工作流实例的上下文信息。 |
WorkflowTypeId |
使用工作流类型 ID 链接至 Workflow 表。 |
InitializedDateTime |
初始化工作流实例的日期和时间。 |
CreatedDateTime |
创建工作流实例的日期和时间。 |
DbInitializedDateTime |
初始化工作流实例记录时的数据库日期和时间。 |
EndDateTime |
完成/终止工作流实例的日期和时间。 |
DbEndDateTime |
提交工作流实例记录时的数据库日期和时间。 |
ActivityInstance
ActivityInstance 表用于存储正在跟踪的活动的实例。此表与 WorkflowInstance 表之间存在多对一的关系。
列 | 说明 |
---|---|
WorkflowInstanceInternalId |
活动所属的工作流实例的内部数据库 ID。 |
ActivityInstanceId |
给定工作流实例正在跟踪的活动的唯一 ID。 |
QualifiedName |
工作流定义中的活动的限定名。 |
ContextGuid |
活动的上下文。 |
ParentContextGuid |
父活动的上下文。 |
WorkflowInstanceEventId |
工作流实例事件记录的唯一 ID。 |
ActivityExecutionStatusEvent
ActivityExecutionStatusEvent 表存储了活动在其生命周期中已经历的不同状态。给定工作流实例中的给定活动可以有多个活动状态。只有其中一个是当前状态。
列 | 说明 |
---|---|
ActivityExecutionStatusEventId |
活动执行状态记录的唯一 ID。 |
WorkflowInstanceInternalId |
活动所属的工作流实例的内部数据库 ID。 |
EventOrder |
事件发生的顺序。 |
ActivityInstanceId |
记录了状态的活动的唯一 ID。 |
ExecutionStatusId |
链接至存储了不同状态的说明的 ActivityExecutionStatus 表。 |
EventDateTime |
事件发生的日期和时间。 |
DbEventDateTime |
事件发生时的数据库日期和时间。 |
ActivityExecutionStatus
ActivityExecutionStatus 表是一个参考表,该表存储活动可经历的所有执行状态的文本值。
列 | 说明 |
---|---|
ExecutionStatusId |
状态的唯一 ID。 |
Description |
状态的文本值。 |
TrackingDataItem
对于每个活动状态,TrackingDataItem 表都存储了一组数据(如变量、属性等),前提是 SqlTrackingService 正在跟踪这些项(如跟踪配置文件所指示)。跟踪配置文件可以指定当特定活动达到特定状态时必须跟踪哪些工作流属性。
列 | 说明 |
---|---|
TrackingDataItemId |
表示给定活动状态的给定项目的记录的唯一 ID,属于特定的 workflowInstance。 |
WorkflowInstanceInternalId |
工作流实例的内部数据库 ID。 |
EventId |
从其中提取跟踪数据项的事件 ID。 |
EventTypeId |
从其中提取跟踪数据项的事件类型。 |
FieldName |
被跟踪变量(数据项)的名称。 |
FieldTypeId |
被跟踪变量(数据项)的类型 ID。引用 Type 表。 |
Data_Str |
被跟踪数据的字符串值(如果该数据属于基元类型并可转换为字符串)。 |
Data_Blob |
被跟踪数据的值的二进制大型对象值(如果该数据属于非基元类型并可进行二进制序列化)。 |
DataNonSerializable |
用于指示数据存在,但不能转换为字符串或进行二进制序列化的标志。 |
TrackingDataItemAnnotation
TrackingDataItemAnnotation 表存储了为工作流中的给定跟踪数据项添加的批注。批注由跟踪配置文件指示。
列 | 说明 |
---|---|
TrackingDataItemId |
为其存储批注的跟踪数据项的 ID。 |
WorkflowInstanceInternalId |
工作流实例的内部数据库 ID。 |
Annotation |
批注的文本值。 |
EventAnnotation
EventAnnotation 表存储了与工作流事件关联的所有批注。
列 | 说明 |
---|---|
WorkflowInstanceInternalId |
工作流实例的内部数据库 ID。 |
EventId |
在其中进行批注的事件的内部数据库 ID。 |
EventTypeId |
事件类型的内部数据库 ID。 |
Annotation |
批注的文本值。 |
WorkflowInstanceEvent
WorkflowInstanceEvent 表存储了工作流在其生命周期中已经历的不同事件。一个给定工作流实例可以有多个事件;但是只有其中一个是当前事件。.
列 | 说明 |
---|---|
WorkflowInstanceEventId |
工作流实例事件记录的唯一 ID。 |
WorkflowInstanceInternalId |
活动所属的工作流实例的内部数据库 ID。 |
EventDateTime |
事件发生的日期和时间。 |
EventOrder |
事件发生的顺序。 |
EventArgTypeId |
事件参数的数据类型的内部数据库 ID。 |
EventArg |
事件参数的二进制序列化数据。 |
DbEventDateTime |
事件发生时的数据库日期和时间。 |
TrackingWorkflowEvent
TrackingWorkflowEvent 表存储了工作流可经历的所有事件的文本值。
列 | 说明 |
---|---|
TrackingWorkflowEventId |
事件的唯一 ID。 |
Description |
事件的文本值。 |
UserEvent
“UserEvent“表存储了由自定义用户跟踪点发出和跟踪的不同事件。一个给定工作流实例可以有多个用户事件。
列 | 说明 |
---|---|
UserEventId |
用户事件的唯一 ID。 |
WorkflowInstanceInternalId |
活动所属的工作流实例的内部数据库 ID。 |
EventOrder |
事件发生的顺序。 |
ActivityInstanceId |
发生用户事件的活动的唯一 ID(在该活动中,发出事件的代码出现在工作流代码中)。 |
EventDateTime |
事件发生的日期和时间。 |
UserDataKey |
在用户事件中传递的键值(当您使用 TrackData 方法时)。 |
UserDataTypeId |
正在跟踪的用户数据的 Type 表中的类型 ID。 |
UserData_Str |
被跟踪数据的字符串值(如果该数据属于基元类型并可转换为字符串)。 |
UserData_Blob |
被跟踪数据的值的二进制大型对象值(如果该数据属于非基元类型并可进行二进制序列化)。 |
DataNonSerializable |
用于指示数据存在,但不能转换为字符串或进行二进制序列化的标志。 |
DbEventDateTime |
事件发生时的数据库日期和时间。 |
AddedActivity
AddedActivity 表存储了发生工作流更改时添加至工作流的活动。每次发生工作流更改时都可能会添加许多活动。
列 | 说明 |
---|---|
WorkflowInstanceInternalId |
工作流实例的内部数据库 ID。 |
WorkflowInstanceEventId |
对工作流实例的事件的引用。 |
QualifiedName |
添加活动的限定名。 |
ActivityTypeId |
链接至 Type 表,以指示作为动态更改的一部分添加的活动的类型和程序集名称。 |
ParentQualifiedName |
包含此活动的父级活动的限定名。 |
AddedActivityAction |
从动态更新事件创建的 ActivityChangeAction 对象的序列化值。 |
Order |
将活动添加至工作流的顺序 |
RemovedActivity
RemovedActivity 表存储了因工作流更改而移除的所有活动。每次发生工作流更改时都可能会移除许多活动。
列 | 说明 |
---|---|
WorkflowInstanceInternalId |
工作流实例的内部数据库 ID。 |
WorkflowInstanceEventId |
对工作流实例的事件的引用。 |
QualifiedName |
移除活动的限定名。 |
ParentQualifiedName |
包含此活动的父级活动的限定名。 |
RemovedActivityAction |
从动态更新事件创建的 ActivityChangeAction 对象的序列化值。 |
Order |
将活动添加至工作流的顺序 |
TrackingProfile
TrackingProfile 表存储了给定工作流类型的跟踪配置文件。
列 | 说明 |
---|---|
TrackingProfileId |
跟踪配置文件的唯一 ID。 |
Version |
跟踪配置文件的版本,应与 Tracking Profile 的版本对应(跟踪配置文件 XML 中的 TrackingProfile.Version 或版本属性) |
WorkflowTypeId |
链接至存储了工作流的类型名称和程序集名称的 Type 表。 |
TrackingProfileXml |
跟踪配置文件 XML。 |
InsertDateTime |
插入配置文件的日期和时间。 |
TrackingProfileInstance
TrackingProfileInstance 表存储了与特定工作流实例关联的跟踪配置文件。当不同配置文件用于不同工作流实例时使用此表。
列 | 说明 |
---|---|
InstanceId |
存储跟踪配置文件的工作流实例的内部 ID。 |
TrackingProfileXml |
跟踪配置文件 XML。 |
UpdatedDateTime |
发生更新的日期和时间。 |
DefaultTrackingProfile
DefaultTrackingProfile 表存储了默认跟踪配置文件。如果跟踪配置文件与给定工作流类型不关联,则使用默认跟踪配置文件。
列 | 说明 |
---|---|
Version |
跟踪配置文件的版本号,应与 Tracking Profile 的版本对应(跟踪配置文件 XML 中的 TrackingProfile.Version 或版本属性) |
TrackingProfileXml |
跟踪配置文件 XML。 |
InsertDateTime |
插入跟踪配置文件的日期和时间。 |
TrackingPartitionInterval
TrackingPartitionInterval 表存储了用于启用数据维护分区的分区间隔。只有在将 SqlTrackingService 类的 PartitionOnCompletion 属性设置为 true 时,此事件才会发生。默认为每月(“m”)。您可以将其设置为每日(“d”)或每年(“y”)。
列 | 说明 |
---|---|
Interval |
要对表进行分区所设置的间隔。 |
TrackingPartitionSetName
TrackingPartitionSetName 表包含了有关分区集名称的信息。
列 | 说明 |
---|---|
PartitionId |
分区的唯一 ID。 |
Name |
分区的名称。 |
CreatedDateTime |
创建分区的日期和时间。 |
EndDateTime |
结束分区的日期和时间。 |
PartitionInterval |
此特定集的分区间隔。 |
SQL 跟踪服务数据库角色
-
tracking_writer
运行宿主进程的帐户应在此角色下运行。该角色具有检索跟踪配置文件和写入跟踪数据的权限。
-
tracking_reader
此角色中的帐户可以查看所有数据,但不能更新或修改数据。此角色中的用户也不能访问基础表。
-
tracking_profilereaderwriter
此角色适用于需要修改配置文件数据的用户帐户。