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