在SharePoint 2010中删除列表项的已完成工作流历史记录

4

我曾经有一个工作流程,每5分钟创建一个新版本,持续了两周。这造成了很大的混乱,而且历史记录占用了很多空间。我已经修复了工作流程,删除了所有版本历史记录,并正在从工作流程历史记录列表中删除项目。我卡在完成的工作流程历史纪录这一步。我没有中央管理权限,所以无法运行脚本来删除它。但我可以访问设计器。我尝试删除工作流程,然后重新发布,但是那并没有删除历史记录。该列表目前大小为700MB,里面只有250个列表项,列表中没有附件。如果您有任何关于如何清除完成的工作流程历史记录的建议,将不胜感激。

1个回答

3

您可以使用对象模型和PowerShell轻松完成此操作:

$spweb = Get-SPWeb http://sps-server/website
$splist = $spweb.Lists["YourList"]
$spitem = $splist.GetItemById(1)
$spitem.Workflows | % { $web.Site.WorkflowManager.RemoveWorkflowFromListItem($_) }

如果用户没有访问Central Admin的权限,他能否执行PowerShell?或者可以在网页部件中使用类似的.NET代码,请参考http://social.technet.microsoft.com/wiki/contents/articles/4839.sharepoint-2010-how-to-delete-completed-workflow-instances.aspx。 - Vivek Athalye
1
@VivekAthalye 假设用户是实际管理员,否则他将无法安装 Web 部件!至于代码-两个代码块使用相同的方法和类。创建一个 UI 组件来执行管理员脚本的工作有点滥用。 - Panagiotis Kanavos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接