试图找出像状态和参与者这样的工作流信息存储在 Sharepoint 数据库中的位置。有一个名为工作流的表,但我似乎无法找到文档与工作流数据中的数据之间的联系。任何人?
1 回答
SharePoint 工作流基于 Windows Workflow Foundation 3.5,因此您将找到的任何相关信息很可能适用于 SharePoint 工作流。其中之一是对工作流进行水合和脱水,它本质上是以序列化的形式将工作流的当前状态保存到数据库(或其他任何地方)中。
SharePoint 工作流依赖于四种机制:
- 工作流模板
- ...协会
- ...实例
工作流模板是您将在 SharePoint Designer/Visual Studio 中创建的模板。使用 SharePoint 设计器,这将生成一个声明性 *.XOML 文件,使用 Visual Studio 一个 *.DLL - 您的工作流的所有逻辑、将分配给谁、您的参与者是谁都存储在其中。
您可以将此工作流模板与 SharePoint 中的列表、内容类型或站点以及(隐藏的)工作流历史记录列表和工作流任务列表相关联 - 即使您不使用它。通过此关联,您还可以拥有一个关联表单,一旦您关联您的工作流程,该表单就会执行。
工作流实例是在例如列表项上运行的实际实例(在实例化中也可以呈现表单)。这个实例实际上做了你在模板中告诉它做的事情。
现在,关于您的问题:“状态和参与者等工作流信息存储在数据库中的什么位置?”
简短的回答:不是。
更长的答案:该表WorkflowAssociation
存储关联。所以我可以看到带有他BaseID
XYZ 的工作流与带有等的SiteId
xyz相关联ListId
(这是文档和数据之间的连接)。数据库中的Workflow
表存储有关运行和过去工作流的信息。因此,您知道工作流实例在哪个ItemGUID
工作流实例上运行,它是何时创建的以及InternalState
它处于什么状态。这种内部状态对您没有帮助,因为它没有映射您在 SP Designer 中设计的状态,它只是像这样的状态SharePoint 内部的“运行/未运行/错误”。但是有专栏InstanceData
. 我不确定,但是一旦工作流程脱水,当前状态可能会保存在那里。以什么编码/形式 - 不知道。您将无法在数据库中的正在运行的工作流中找到您寻求的信息(当前参与者)。
最重要的是:无论如何,您都不应该查看数据库。
您只能通过代码找到状态和参与者等信息,更好的是您可以调试工作流程以查看所有信息。您还可以为此信息创建字段并简单地显示“参与者”。