2012-04-27 116 views
2

试图找出工作流信息(如状态和参与者)存储在Sharepoint数据库中的位置。有一个表格叫做工作流程,但我似乎无法找到文档和worflow数据中的数据之间的联系。任何人?Sharepoint工作流程表

回答

5

SharePoint工作流程基于Windows Workflow Foundation 3.5,因此无论您将找到哪些信息,都可能适用于SharePoint工作流程。其中之一是hydrating and dehydrating workflows,它基本上将序列化形式的工作流的当前状态保存到数据库(或其他任何地方)中。

SharePoint工作流依靠四种机制:

  1. 工作流模板
  2. ...协会
  3. ...实例

工作流模板是你会在SharePoint Designer中创造什么/ 视觉工作室。使用SharePoint设计器,这将生成一个声明性的* .XOML文件,其中包括Visual Studio a * .DLL - 您工作流程的所有逻辑,将分配给谁以及您的参与者的存储位置。

与您关联的此工作流程模板列表,SharePoint中的内容类型或网站以及(隐藏)工作流历史列表和工作流任务列表 - 即使您不使用它。通过这种关联,您还可以拥有关联表单,该关联表单在您关联工作流程后执行。

工作流实例是运行在实例上的实际实例。一个列表项(在实例化中也可以表示一个表单)。这个实例确实是你告诉它在模板中做的事情。

现在,在您的问题:“工作流信息如状态和参与者存储在数据库中的位置?
简答:不是。

较长的回答:表WorkflowAssociation存储关联。所以我可以看到他与BaseID XYZ的工作流程与SiteId xyz和ListId等(这是文档和数据之间的连接)相关联。数据库中的Workflow表存储有关运行和过去工作流程的信息。因此,您知道工作流实例正在运行哪个ItemGUID,它在什么时候被创建以及它在哪个InternalState中。这个内部状态对您没有帮助,因为它没有映射您在SP Designer中设置的状态,它仅仅是状态,如SharePoint内部的“正在运行/未运行/错误”。但是有列InstanceData。我不确定,但有可能一旦工作流程脱水,当前状态可以保存在那里。在什么编码/形式 - 不知道。在数据库中正在运行的工作流程中,您将无法找到您的eek(当前参与者)的信息。
最重要的是:你不应该看看数据库。

类似状态和参与者的信息只能通过代码找到,甚至可以更好地调试工作流以查看所有信息。您也可以为这些信息创建字段并简单显示“参与者”。