工作流中的SharePoint Online Microsoft.SharePoint.SPQueryThrottledException

时间:2018-06-26 12:18:40

标签: indexing sharepoint-online sharepoint-workflow threshold

背景:达到我们的SharePoint任务列表阈值限制,意味着项目超过5000。我们创建了自定义视图,以借助索引列来管理数据视图。

但是,SharePoint 2013 Designer工作流中存在逻辑,我们需要获取描述列和完成任务的其他几个列,以将其保存为历史记录目的(哪个用户在什么时候采取了什么操作)。 现在,要获取信息,我们使用GUID return通过分配设计器的任务动作并查询已完成的任务。 问题:我们的SP设计器工作流程要求基于GUID的任务列表和过滤器项目。以下是来自设计人员的呼叫的示例屏幕截图。

SharePoint Call to our list

到达此步骤后,它将在工作流程中引发错误,并且工作流程被暂停,当我深入研究原因是由于阈值限制时,我在浏览器上对其进行了测试,如下所示 Error that throw by above call in worklfow

我的方法: 为了解决上述问题,我只考虑了两点:

1)要通过项目ID 而不是GUID进行调用,因为将通过默认方式为项目ID编制索引,但是SharePoint设计器工作流的分配任务操作将返回包含以下内容的TaskID GUID是基于GUID筛选项目的原因,但是GUID不在索引列中,因此会引发Microsoft.SharePoint.SPQueryThrottledException。

2)需要将 GUID 作为索引列,以便可以解决阈值错误。但是在列表设置中,GUID不能设置为索引列,因为该列未在其中列出。

问题: 有没有解决方案或其他方法,以便在任务完成后我们可以在设计器中获取与任务有关的信息。

1 个答案:

答案 0 :(得分:0)

我们在SharePoint Online环境中遇到了完全相同的问题。 SharePoint Designer WF生成这样的REST调用,以从WF的关联任务列表中获取任务:

https://site/web/_api/web/lists(guid'1b7a4526-47da-4040-8df1-ba8a97543188')/Items?%24filter=**GUID**+**eq**+guid%2771c23273-2535-4dbb-869d-c3e608899ca0%27&%24select=ID%2CEditorId

我通过powershell在“ GUID”列上添加了索引:

Add-PSSnapin Microsoft.sharepoint.powershell

$web = get-spweb '<URL>'
$list = $web.Lists['Workflow Tasks']
$field = $list.Fields['GUID'] 
$field.Indexed = $true
$field.Update()
$list.FieldIndexes.Add($field)

(创建索引之前,必须确保列表中的项目不超过5000个)

我们一周前完成了此操作,所有已暂停的工作流程已成功恢复。现在,任务列表中有约5100个项目,并且GUID筛选器没有问题。