查询所有Sharepoint工作流的内部状态
我正在尝试获取所有sharepoint工作流的内部状态 是否仍然可以通过编程方式查询所有工作流并获取其状态?通过CAML查询或对象模型 我意识到我可以迭代sharepoint中的所有项目,查看是否附加了工作流,然后获取状态。然而,这太过分了,因为有100000个项目,只有一小部分有工作流。我想运行一个定期报告来获取所有工作流的状态,而不会让服务器崩溃 谢谢! Dave看看SPSite.WorkflowManager。这将允许您检查整个网站集的工作流定义和运行实例。CountWorkflows方法可能就是您想要的查询所有Sharepoint工作流的内部状态,sharepoint,workflow,Sharepoint,Workflow,我正在尝试获取所有sharepoint工作流的内部状态 是否仍然可以通过编程方式查询所有工作流并获取其状态?通过CAML查询或对象模型 我意识到我可以迭代sharepoint中的所有项目,查看是否附加了工作流,然后获取状态。然而,这太过分了,因为有100000个项目,只有一小部分有工作流。我想运行一个定期报告来获取所有工作流的状态,而不会让服务器崩溃 谢谢! Dave看看SPSite.WorkflowManager。这将允许您检查整个网站集的工作流定义和运行实例。CountWorkflows方法
-Oisin视图的核心是CAML查询。如果您不想遍历所有项目,@pst的评论是一个不错的选择;只需从显示“工作流状态”列的任何视图的视图定义中滑动CAML。虽然我通常在服务器上使用PowerShell来提取视图定义,但Lists.asmx Web服务在这里可能会派上用场 如果您确实遍历了对象模型中的项,下面是一个要滚动的片段:
using (var site = new SPSite(url))
using (var web = site.OpenWeb())
{
var manager = site.WorkflowManager;
var list = web.Lists[listname];
if (list == null || list.Hidden)
{
return "Cannot work under these conditions.";
}
foreach (SPListItem item in list.Items)
{
foreach (SPWorkflow workflow in item.Workflows)
{
if ((workflow.InternalState & SPWorkflowState.Faulting) == SPWorkflowState.Faulting)
{
Console.WriteLine(SPWorkflowState.Faulting.ToString());
}
// ...
}
}
}
在项目上运行工作流后,是否注意到任何新列?:-你可能不得不改变观点。嗯……这对我真的没有帮助。这在gui中。我需要做一些程序化的事情,在那里我可以查询所有的工作流,并确定它们的状态。还有其他想法吗?谢谢