使用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
此角色适用于需要修改配置文件数据的用户帐户。
分享到:
相关推荐
1. **存储过程**:存储过程是预编译的SQL语句集合,存储在数据库中,可以接受输入参数并返回结果。它们用于封装复杂的业务逻辑,提高代码复用性,减少网络传输,提高数据库操作的效率。 2. **Oracle数据库**:...
数据库字典是数据库管理系统中的一个重要组成部分,它记录了数据库中所有对象的相关信息,包括表、视图、索引、存储过程等。对于开发人员而言,理解数据库字典有助于深入洞察系统的数据模型和业务逻辑,从而更好地...
数据库的元素包括数据库表(TABLE)、存储过程(STORED PROCEDURE)、视图(VIEW)、触发器(TRIGGER)等。用友软件中使用的是微软的ACCESS和SQL Server关系数据库。数据库的数据结构形式可以分为三个模型:层次型...
1. **Transact-SQL**:SQL Server 2005支持标准的SQL语法,包括创建表、索引、视图,以及执行复杂的查询和事务处理。 2. **存储过程和触发器**:存储过程可以提高性能,减少网络流量,而触发器则可以在数据修改时...
本篇文章将详细介绍如何在SQL Server环境中使用多个表(包括主表、子表、代码表及客户往来表)来创建视图,并解释示例代码中所涉及的关键概念和技术细节。 #### SQL Server 视图概述 视图是基于一个或多个表(或...
5. **数据库控制**:SQL语言基础,如SELECT、INSERT、UPDATE、DELETE语句,以及JOIN、子查询、存储过程等高级操作。了解关系数据库的基本原理,如范式理论、索引、事务处理等。 6. **异常处理**:理解如何在C#中...
开发者可能使用T-SQL(Transact-SQL)进行数据库交互,创建表、视图、存储过程以及触发器等。 4. 办公自动化(OA)系统:OA系统是企业内部用于提升办公效率、实现无纸化办公的信息管理系统。它通常包括工作流管理、...
在本系统中,开发者利用WinForms设计出直观易用的图形用户界面(GUI),包括图书查询、借书、还书、续借等功能按钮以及相关的输入框、列表视图等控件。WinForms提供了丰富的控件库和事件驱动模型,使得开发者可以...
集成开发涉及数据库设计、T-SQL编程、存储过程、触发器、视图、索引的创建和优化,以及数据库安全性和性能监控。了解SQL Server Management Studio (SSMS) 和Entity Framework等工具对于高效开发至关重要。 压缩...
在这个仓库管理系统中,SQL数据库被用作后台数据存储,负责保存物品信息、出入库记录等数据。开发者可能使用了SQL Server或SQLite等数据库系统,通过ADO.NET库与C#程序进行数据交互。ADO.NET提供了数据访问组件,如...
- **工作流过程定义**:定义工作流逻辑的文件或数据库表。 - **支持的过程构造**:可使用的逻辑元素列表,如分支(Branch)、循环(Loop)等。 - **工作流定义加载器**:将定义加载到系统中的工具。 - **通知系统**...
数据库设计包括ER模型、表结构、关系设计等,确保数据的有效存储和快速查询。 4. **工作流引擎**:OA系统的核心是工作流管理,ASP.NET可以结合Windows Workflow Foundation (WF) 或自定义的工作流服务来实现复杂的...
可能使用SQL Server作为后端存储,利用ADO.NET进行数据访问。同时,系统可能还需要实现日志记录和错误处理,以便跟踪和诊断问题。 总之,这个基于ASP.NET的工作流批核系统利用了.NET 3.5框架的WF技术,构建了一个...
SQL Server 2005则是微软的企业级数据库管理系统,支持关系型数据库、XML数据存储、数据分析和报表服务等功能。它提供了强大的T-SQL(Transact-SQL)语言用于数据查询、操作和管理,同时具备高可用性和安全性,适合...
在本项目中,开发者使用了Visual Studio 2005(VS2005)作为开发工具,以及SQL Server 2005作为数据库管理系统,构建了一个基于MVC(Model-View-Controller)三层架构的工作流系统。 1. **MVC三层架构**:MVC是一种...
在多店进销存管理系统中,数据库设计通常会包含如商品信息、店铺信息、采购记录、销售记录、库存状态等表。良好的数据库设计能够保证数据的一致性和完整性,提高查询效率。 7. **权限管理**: 系统可能会实现用户...
7. **数据库与SQL**:SQL语法、关系数据库设计、存储过程、触发器、事务处理、ORM(Object-Relational Mapping)如Entity Framework。 8. **Web开发最佳实践**:安全性、性能优化、调试技巧、版本控制(如Git)。 ...
3. **数据库设计**:系统可能需要一个数据库来存储工作流实例、状态、参与者信息等。这涉及到数据库模式设计、SQL查询优化以及ORM(对象关系映射)工具如Entity Framework的使用。 4. **用户界面**:使用ASP.NET ...
2. **数据库交互**:使用如MySQL的数据库管理系统存储订单信息,包括商品、数量、价格、用户信息、支付状态等,通过SQL查询进行数据操作。 3. **会话管理**:利用PHP的session功能跟踪用户购物车和登录状态,确保...
通常会使用SQL Server或MySQL等关系型数据库,设计合理的数据表结构,实现对公文的分类、状态、审批流程等信息的存储。 3. **权限管理**:系统应具备用户注册、登录功能,并根据用户角色分配不同的权限,如阅读、...