转:WF中的跟踪服务(1):Sql跟踪数据库表,视图,存储过程等相关说明
使用WF 中的SqlTrackingService 跟蹤服務(wù),我們可以記錄有關(guān)工作流及其關(guān)聯(lián)活動(dòng)的跟蹤信息到Sql Server數(shù)據(jù)庫(kù)庫(kù)中。SqlTrackingQuery 類提供對(duì)包含在跟蹤數(shù)據(jù)庫(kù)中的數(shù)據(jù)的高級(jí)別訪問(wèn)。但是,我們也可以直接查詢 SQL 跟蹤服務(wù)數(shù)據(jù)庫(kù)視圖。我們使用WF提供的腳本建立好的Sql數(shù)據(jù)庫(kù)主要有21張表,20個(gè)視圖和59個(gè)存儲(chǔ)過(guò)程,下面就說(shuō)一些比較重要的。
1.跟蹤數(shù)據(jù)庫(kù)的表
1.1.Workflow :Workflow 表存儲(chǔ)了所有工作流類型的工作流定義,該表已由 SqlTrackingService 進(jìn)行跟蹤。它在第一次將工作流實(shí)例化并為該工作流類型啟用 SqlTrackingService 時(shí)填充。
| 列 | 說(shuō)明 |
| WorkflowTypeId | 鏈接至存儲(chǔ)類型名稱和在其中出現(xiàn)工作流類型的程序集名稱的 Type 表。 |
| WorkflowDefinition | 工作流的定義。 |
1.2.Activity:Activity 表存儲(chǔ)在對(duì)應(yīng)工作流類型中出現(xiàn)的所有活動(dòng)類型。
| 列 | 說(shuō)明 |
| WorkflowTypeId | 鏈接至存儲(chǔ)類型名稱和在其中出現(xiàn)工作流類型的程序集名稱的 Type 表。 |
| QualifiedName | 工作流定義中的活動(dòng)限定名。 |
| ActivityTypeId | 鏈接至存儲(chǔ)類型名稱和在其中出現(xiàn)活動(dòng)類型的程序集名稱的 Type 表。 |
| ParentQualifiedName | 如果該活動(dòng)是另一個(gè)活動(dòng)的組成部分,則此字段將包含該父級(jí)活動(dòng)的活動(dòng)限定名。 |
1.3.Type:Type 表存儲(chǔ)了所有類型信息和在其中出現(xiàn)類型的程序集名稱。這包括了工作流類型、活動(dòng)類型以及 SqlTrackingService 中使用的其他所有類型。例如,如果將字符串作為跟蹤數(shù)據(jù)項(xiàng)進(jìn)行跟蹤,則該字符串類型信息將存儲(chǔ)在此表中。
| 列 | 說(shuō)明 |
| TypeId | 類型的唯一 ID。 |
| TypeFullName | 該類型的完全限定名。 |
| AssemblyFullName | 存儲(chǔ)類型的程序集的全名。 |
| IsInstanceType | 指示工作流實(shí)例是否為僅 XOML 實(shí)例的布爾值(在這種情況下,類型和程序集全名為空)。 |
1.4.WorkflowInstance:WorkflowInstance 表維護(hù)跟蹤數(shù)據(jù)庫(kù)中已跟蹤的所有工作流實(shí)例的列表。
| 列 | 說(shuō)明 |
| WorkflowInstanceInternalId | 由數(shù)據(jù)庫(kù)給予工作流實(shí)例的唯一內(nèi)部 ID。該 ID 用作外鍵以聯(lián)接數(shù)據(jù)庫(kù)中的其他表。 |
| WorkflowInstanceId | 工作流實(shí)例的 GUID。 |
| ContextGuid | 有關(guān)此工作流實(shí)例的上下文信息。 |
| CallerInstanceId | 調(diào)用此工作流實(shí)例的工作流實(shí)例的 ID。 |
| CallPath | 當(dāng)工作流實(shí)例調(diào)用一個(gè)工作流實(shí)例,本身又被另一個(gè)工作流實(shí)例調(diào)用時(shí)使用的完整調(diào)用路徑。 |
| CallerContextGuid | 有關(guān)調(diào)用方的上下文信息。 |
| CallerParentContextGuid | 有關(guān)調(diào)用實(shí)例的父級(jí)工作流實(shí)例的上下文信息。 |
| WorkflowTypeId | 使用工作流類型 ID 鏈接至 Workflow 表。 |
| InitializedDateTime | 初始化工作流實(shí)例的日期和時(shí)間。 |
| CreatedDateTime | 創(chuàng)建工作流實(shí)例的日期和時(shí)間。 |
| DbInitializedDateTime | 初始化工作流實(shí)例記錄時(shí)的數(shù)據(jù)庫(kù)日期和時(shí)間。 |
| EndDateTime | 完成/終止工作流實(shí)例的日期和時(shí)間。 |
| DbEndDateTime | 提交工作流實(shí)例記錄時(shí)的數(shù)據(jù)庫(kù)日期和時(shí)間。 |
1.5.ActivityInstance:ActivityInstance 表用于存儲(chǔ)正在跟蹤的活動(dòng)的實(shí)例。此表與 WorkflowInstance 表之間存在多對(duì)一的關(guān)系。
| 列 | 說(shuō)明 |
| WorkflowInstanceInternalId | 活動(dòng)所屬的工作流實(shí)例的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| ActivityInstanceId | 給定工作流實(shí)例正在跟蹤的活動(dòng)的唯一 ID。 |
| QualifiedName | 工作流定義中的活動(dòng)的限定名。 |
| ContextGuid | 活動(dòng)的上下文。 |
| ParentContextGuid | 父活動(dòng)的上下文。 |
| WorkflowInstanceEventId | 工作流實(shí)例事件記錄的唯一 ID。 |
1.6.ActivityExecutionStatusEvent :ActivityExecutionStatusEvent 表存儲(chǔ)了活動(dòng)在其生命周期中已經(jīng)歷的不同狀態(tài)。給定工作流實(shí)例中的給定活動(dòng)可以有多個(gè)活動(dòng)狀態(tài)。只有其中一個(gè)是當(dāng)前狀態(tài)。
| 列 | 說(shuō)明 |
| ActivityExecutionStatusEventId | 活動(dòng)執(zhí)行狀態(tài)記錄的唯一 ID。 |
| WorkflowInstanceInternalId | 活動(dòng)所屬的工作流實(shí)例的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| EventOrder | 事件發(fā)生的順序。 |
| ActivityInstanceId | 記錄了狀態(tài)的活動(dòng)的唯一 ID。 |
| ExecutionStatusId | 鏈接至存儲(chǔ)了不同狀態(tài)的說(shuō)明的 ActivityExecutionStatus 表。 |
| EventDateTime | 事件發(fā)生的日期和時(shí)間。 |
| DbEventDateTime | 事件發(fā)生時(shí)的數(shù)據(jù)庫(kù)日期和時(shí)間。 |
1.7.ActivityExecutionStatus:ActivityExecutionStatus 表是一個(gè)參考表,該表存儲(chǔ)活動(dòng)可經(jīng)歷的所有執(zhí)行狀態(tài)的文本值。
| 列 | 說(shuō)明 |
| ExecutionStatusId | 狀態(tài)的唯一 ID。 |
| Description | 狀態(tài)的文本值。 |
1.8.TrackingDataItem:對(duì)于每個(gè)活動(dòng)狀態(tài),TrackingDataItem 表都存儲(chǔ)了一組數(shù)據(jù)(如變量、屬性等),前提是 SqlTrackingService 正在跟蹤這些項(xiàng)(如跟蹤配置文件所指示)。跟蹤配置文件可以指定當(dāng)特定活動(dòng)達(dá)到特定狀態(tài)時(shí)必須跟蹤哪些工作流屬性。
| 列 | 說(shuō)明 |
| TrackingDataItemId | 表示給定活動(dòng)狀態(tài)的給定項(xiàng)目的記錄的唯一 ID,屬于特定的 workflowInstance。 |
| WorkflowInstanceInternalId | 工作流實(shí)例的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| EventId | 從其中提取跟蹤數(shù)據(jù)項(xiàng)的事件 ID。 |
| EventTypeId | 從其中提取跟蹤數(shù)據(jù)項(xiàng)的事件類型。 |
| FieldName | 被跟蹤變量(數(shù)據(jù)項(xiàng))的名稱。 |
| FieldTypeId | 被跟蹤變量(數(shù)據(jù)項(xiàng))的類型 ID。引用 Type 表。 |
| Data_Str | 被跟蹤數(shù)據(jù)的字符串值(如果該數(shù)據(jù)屬于基元類型并可轉(zhuǎn)換為字符串)。 |
| Data_Blob | 被跟蹤數(shù)據(jù)的值的二進(jìn)制大型對(duì)象值(如果該數(shù)據(jù)屬于非基元類型并可進(jìn)行二進(jìn)制序列化)。 |
| DataNonSerializable | 用于指示數(shù)據(jù)存在,但不能轉(zhuǎn)換為字符串或進(jìn)行二進(jìn)制序列化的標(biāo)志。 |
1.9.TrackingDataItemAnnotation:TrackingDataItemAnnotation 表存儲(chǔ)了為工作流中的給定跟蹤數(shù)據(jù)項(xiàng)添加的批注。批注由跟蹤配置文件指示。
| 列 | 說(shuō)明 |
| TrackingDataItemId | 為其存儲(chǔ)批注的跟蹤數(shù)據(jù)項(xiàng)的 ID。 |
| WorkflowInstanceInternalId | 工作流實(shí)例的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| Annotation | 批注的文本值。 |
1.10.EventAnnotation:EventAnnotation 表存儲(chǔ)了與工作流事件關(guān)聯(lián)的所有批注。
| 列 | 說(shuō)明 |
| WorkflowInstanceInternalId | 工作流實(shí)例的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| EventId | 在其中進(jìn)行批注的事件的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| EventTypeId | 事件類型的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| Annotation | 批注的文本值。 |
1.11.WorkflowInstanceEvent:WorkflowInstanceEvent 表存儲(chǔ)了工作流在其生命周期中已經(jīng)歷的不同事件。一個(gè)給定工作流實(shí)例可以有多個(gè)事件;但是只有其中一個(gè)是當(dāng)前事件。.
| 列 | 說(shuō)明 |
| WorkflowInstanceEventId | 工作流實(shí)例事件記錄的唯一 ID。 |
| WorkflowInstanceIntebrnalId | 活動(dòng)所屬的工作流實(shí)例的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| TrackingWorkflowEventId | 事件的唯一 ID。 |
| EventDateTime | 事件發(fā)生的日期和時(shí)間。 |
| EventOrder | 事件發(fā)生的順序。 |
| EventArgTypeId | 事件參數(shù)的數(shù)據(jù)類型的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| EventArg | 事件參數(shù)的二進(jìn)制序列化數(shù)據(jù)。 |
| DbEventDateTime | 事件發(fā)生時(shí)的數(shù)據(jù)庫(kù)日期和時(shí)間。 |
1.12.TrackingWorkflowEvent:TrackingWorkflowEvent 表存儲(chǔ)了工作流可經(jīng)歷的所有事件的文本值。
| 列 | 說(shuō)明 |
| TrackingWorkflowEventId | 事件的唯一 ID。 |
| Description | 事件的文本值。 |
1.13.UserEvent:“UserEvent“表存儲(chǔ)了由自定義用戶跟蹤點(diǎn)發(fā)出和跟蹤的不同事件。一個(gè)給定工作流實(shí)例可以有多個(gè)用戶事件。
| 列 | 說(shuō)明 |
| UserEventId | 用戶事件的唯一 ID。 |
| WorkflowInstanceInternalId | 活動(dòng)所屬的工作流實(shí)例的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| EventOrder | 事件發(fā)生的順序。 |
| ActivityInstanceId | 發(fā)生用戶事件的活動(dòng)的唯一 ID(在該活動(dòng)中,發(fā)出事件的代碼出現(xiàn)在工作流代碼中)。 |
| EventDateTime | 事件發(fā)生的日期和時(shí)間。 |
| UserDataKey | 在用戶事件中傳遞的鍵值(當(dāng)您使用 TrackData 方法時(shí))。 |
| UserDataTypeId | 正在跟蹤的用戶數(shù)據(jù)的 Type 表中的類型 ID。 |
| UserData_Str | 被跟蹤數(shù)據(jù)的字符串值(如果該數(shù)據(jù)屬于基元類型并可轉(zhuǎn)換為字符串)。 |
| UserData_Blob | 被跟蹤數(shù)據(jù)的值的二進(jìn)制大型對(duì)象值(如果該數(shù)據(jù)屬于非基元類型并可進(jìn)行二進(jìn)制序列化)。 |
| DataNonSerializable | 用于指示數(shù)據(jù)存在,但不能轉(zhuǎn)換為字符串或進(jìn)行二進(jìn)制序列化的標(biāo)志。 |
| DbEventDateTime | 事件發(fā)生時(shí)的數(shù)據(jù)庫(kù)日期和時(shí)間。 |
1.14.AddedActivity:AddedActivity 表存儲(chǔ)了發(fā)生工作流更改時(shí)添加至工作流的活動(dòng)。每次發(fā)生工作流更改時(shí)都可能會(huì)添加許多活動(dòng)。
| 列 | 說(shuō)明 |
| WorkflowInstanceInternalId | 工作流實(shí)例的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| WorkflowInstanceEventId | 對(duì)工作流實(shí)例的事件的引用。 |
| QualifiedName | 添加活動(dòng)的限定名。 |
| ActivityTypeId | 鏈接至 Type 表,以指示作為動(dòng)態(tài)更改的一部分添加的活動(dòng)的類型和程序集名稱。 |
| ParentQualifiedName | 包含此活動(dòng)的父級(jí)活動(dòng)的限定名。 |
| AddedActivityAction | 從動(dòng)態(tài)更新事件創(chuàng)建的 ActivityChangeAction 對(duì)象的序列化值。 |
| Order | 將活動(dòng)添加至工作流的順序 |
1.15.RemovedActivity:RemovedActivity 表存儲(chǔ)了因工作流更改而移除的所有活動(dòng)。每次發(fā)生工作流更改時(shí)都可能會(huì)移除許多活動(dòng)。
| 列 | 說(shuō)明 |
| WorkflowInstanceInternalId | 工作流實(shí)例的內(nèi)部數(shù)據(jù)庫(kù) ID。 |
| WorkflowInstanceEventId | 對(duì)工作流實(shí)例的事件的引用。 |
| QualifiedName | 移除活動(dòng)的限定名。 |
| ParentQualifiedName | 包含此活動(dòng)的父級(jí)活動(dòng)的限定名。 |
| RemovedActivityAction | 從動(dòng)態(tài)更新事件創(chuàng)建的 ActivityChangeAction 對(duì)象的序列化值。 |
| Order | 將活動(dòng)添加至工作流的順序 |
1.16.TrackingProfile:TrackingProfile 表存儲(chǔ)了給定工作流類型的跟蹤配置文件。
| 列 | 說(shuō)明 |
| TrackingProfileId | 跟蹤配置文件的唯一 ID。 |
| Version | 跟蹤配置文件的版本,應(yīng)與 Tracking Profile 的版本對(duì)應(yīng)(跟蹤配置文件 XML 中的 TrackingProfile.Version 或版本屬性) |
| WorkflowTypeId | 鏈接至存儲(chǔ)了工作流的類型名稱和程序集名稱的 Type 表。 |
| TrackingProfileXml | 跟蹤配置文件 XML。 |
| InsertDateTime | 插入配置文件的日期和時(shí)間。 |
1.17.TrackingProfileInstance:TrackingProfileInstance 表存儲(chǔ)了與特定工作流實(shí)例關(guān)聯(lián)的跟蹤配置文件。當(dāng)不同配置文件用于不同工作流實(shí)例時(shí)使用此表。
| 列 | 說(shuō)明 |
| InstanceId | 存儲(chǔ)跟蹤配置文件的工作流實(shí)例的內(nèi)部 ID。 |
| TrackingProfileXml | 跟蹤配置文件 XML。 |
| UpdatedDateTime | 發(fā)生更新的日期和時(shí)間。 |
1.18.DefaultTrackingProfile:DefaultTrackingProfile 表存儲(chǔ)了默認(rèn)跟蹤配置文件。如果跟蹤配置文件與給定工作流類型不關(guān)聯(lián),則使用默認(rèn)跟蹤配置文件。
| 列 | 說(shuō)明 |
| Version | 跟蹤配置文件的版本號(hào),應(yīng)與 Tracking Profile 的版本對(duì)應(yīng)(跟蹤配置文件 XML 中的 TrackingProfile.Version 或版本屬性) |
| TrackingProfileXml | 跟蹤配置文件 XML。 |
| InsertDateTime | 插入跟蹤配置文件的日期和時(shí)間。 |
1.19.TrackingPartitionInterval:TrackingPartitionInterval 表存儲(chǔ)了用于啟用數(shù)據(jù)維護(hù)分區(qū)的分區(qū)間隔。只有在將 SqlTrackingService 類的 PartitionOnCompletion 屬性設(shè)置為 true 時(shí),此事件才會(huì)發(fā)生。默認(rèn)為每月(“m”)。您可以將其設(shè)置為每日(“d”)或每年(“y”)。
| 列 | 說(shuō)明 |
| Interval | 要對(duì)表進(jìn)行分區(qū)所設(shè)置的間隔。 |
1.20.TrackingPartitionSetName:TrackingPartitionSetName 表包含了有關(guān)分區(qū)集名稱的信息。
| 列 | 說(shuō)明 |
| PartitionId | 分區(qū)的唯一 ID。 |
| Name | 分區(qū)的名稱。 |
| CreatedDateTime | 創(chuàng)建分區(qū)的日期和時(shí)間。 |
| EndDateTime | 結(jié)束分區(qū)的日期和時(shí)間。 |
| PartitionInterval | 此特定集的分區(qū)間隔。 |
1.21.SqlTrackingServiceQfeLog:
| 列 | 說(shuō)明 |
| InstallDateTime | ? |
| KbId | ? |
| Description | ? |
2.部分視圖和存儲(chǔ)過(guò)程說(shuō)明
2.1.SetPartitionInterval
設(shè)置 SQL 跟蹤服務(wù)在對(duì)跟蹤數(shù)據(jù)進(jìn)行分區(qū)時(shí)使用的間隔。若要啟用跟蹤數(shù)據(jù)分區(qū),請(qǐng)將 SqlTrackingService 的 PartitionOnCompletion 屬性設(shè)置為 true。啟用此屬性后,Windows Workflow Foundation 將在您指定的時(shí)間間隔內(nèi)創(chuàng)建一個(gè)新的分區(qū)集(新的表格集)。表格 vw_TrackingPartitionSetName 包含有關(guān)分區(qū)集名稱的信息,包括 Name yyyy_m、CreatedDateTime、EndDateTime 和 PartitionInterval。完成工作流實(shí)例后,相應(yīng)的跟蹤數(shù)據(jù)將移到新創(chuàng)建的表格集中。
2.2.DetachPartition
如果為 SqlTrackingService 啟用了分區(qū),此過(guò)程將從分區(qū)總集中移除一個(gè)分區(qū)。這樣分區(qū)即會(huì)分離出來(lái),并且視圖不會(huì)在以后的查詢中包含此分區(qū)。此分區(qū)的表格保留在數(shù)據(jù)庫(kù)中。
2.3.DropPartition
如果為 SqlTrackingService 啟用了分區(qū),此過(guò)程將從分區(qū)總集中移除一個(gè)分區(qū)。這樣分區(qū)即會(huì)分離出來(lái),并且視圖不會(huì)在以后的查詢中包含此分區(qū)。此外,該分區(qū)的所有表格也將移除。
如果為 @PartitionName 和 @PartitionId 提供了一個(gè)值,則在 @PartitionId 不指向 @PartitionName 參數(shù)所指定的分區(qū)名稱時(shí),dbo.DropPartition 將會(huì)失敗。
2.4.UpdateTrackingProfile
更新給定工作流類型的跟蹤配置文件。
2.5.DeleteTrackingProfile
刪除給定工作流類型的跟蹤配置文件。
該存儲(chǔ)過(guò)程不會(huì)從 SQL 跟蹤數(shù)據(jù)庫(kù)中移除跟蹤配置文件。它只是解除跟蹤配置文件與給定工作流類型之間的關(guān)聯(lián)。
2.6.SetInstanceTrackingProfile
設(shè)置給定工作流實(shí)例的跟蹤配置文件。
若要為運(yùn)行中的工作流實(shí)例更新跟蹤配置文件,請(qǐng)從要更改跟蹤配置文件的 WorkflowInstance 對(duì)象中調(diào)用 SetInstanceTrackingProfile 存儲(chǔ)過(guò)程,然后調(diào)用 ReloadTrackingProfiles 方法。
2.7.DeleteInstanceTrackingProfile
刪除給定工作流實(shí)例的跟蹤配置文件。
DeleteInstanceTrackingProfile 存儲(chǔ)過(guò)程不會(huì)從 SQL 跟蹤數(shù)據(jù)庫(kù)中刪除跟蹤配置文件,而只是解除跟蹤配置文件與給定工作流實(shí)例之間的關(guān)聯(lián)。
若要為運(yùn)行中的工作流實(shí)例更新跟蹤配置文件,請(qǐng)從要解除與跟蹤配置文件關(guān)聯(lián)的 WorkflowInstance 對(duì)象中調(diào)用 DeleteInstanceTrackingProfile 存儲(chǔ)過(guò)程,然后調(diào)用 ReloadTrackingProfiles 方法。
2.8.GetCurrentDefaultTrackingProfile
檢索 SqlTrackingService 使用的當(dāng)前默認(rèn)跟蹤配置文件。當(dāng) SqlTrackingService 的 UseDefaultProfile 屬性設(shè)置為“True”,且當(dāng)工作流類型沒(méi)有關(guān)聯(lián)的 TrackingProfile 時(shí),使用默認(rèn)配置文件。
2.9.UpdateDefaultTrackingProfile
更新 SqlTrackingService 所使用的默認(rèn)跟蹤配置文件。 當(dāng) SqlTrackingService 的 UseDefaultProfile 屬性設(shè)置為 true,并且工作流類型沒(méi)有關(guān)聯(lián)的 TrackingProfile 時(shí),使用默認(rèn)配置文件。
不能刪除默認(rèn)跟蹤配置文件。要停止使用默認(rèn)配置文件,請(qǐng)將 SqlTrackingService 的 UseDefaultProfile 屬性設(shè)置為 false。
3.SQL 跟蹤服務(wù)數(shù)據(jù)庫(kù)角色
3.1.tracking_writer
運(yùn)行宿主進(jìn)程的帳戶應(yīng)在此角色下運(yùn)行。該角色具有檢索跟蹤配置文件和寫入跟蹤數(shù)據(jù)的權(quán)限。
3.2.tracking_reader
此角色中的帳戶可以查看所有數(shù)據(jù),但不能更新或修改數(shù)據(jù)。此角色中的用戶也不能訪問(wèn)基礎(chǔ)表。3.3.tracking_profilereaderwriter
此角色適用于需要修改配置文件數(shù)據(jù)的用戶帳戶。
轉(zhuǎn)載于:https://www.cnblogs.com/kyorry/archive/2009/08/09/1542369.html
總結(jié)
以上是生活随笔為你收集整理的转:WF中的跟踪服务(1):Sql跟踪数据库表,视图,存储过程等相关说明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: WinCE驱动编写小结(转载)
- 下一篇: 如何为Oracle配置多个监听器