【问题标题】:SharePoint Online Microsoft.SharePoint.SPQueryThrottledException from workflow来自工作流的 SharePoint Online Microsoft.SharePoint.SPQueryThrottledException
【发布时间】:2018-12-05 04:02:45
【问题描述】:

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

但在 SharePoint 2013 设计器工作流中存在逻辑,我们需要在其中获取描述列和少数其他任务列,这些列已完成以将其保存为历史目的(哪个用户在何时采取了何种操作)。 现在要获取信息,我们使用通过分配设计器的任务操作返回的 GUID 并查询已完成的任务。 问题:我们的 SP 设计器工作流程需要基于 GUID 的任务列表和过滤项目。下面是设计师来电的示例截图。

SharePoint Call to our list

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

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

1) 通过 Item ID 而不是 GUID 在上面调用,因为 Item ID 将被默认索引,但是 SharePoint 设计器工作流的 Assign a task 操作返回 TaskID,其中包含GUID 所以这就是基于 GUID 过滤项目的原因,但是 GUID 不是索引列,所以它抛出 Microsoft.SharePoint.SPQueryThrottledException。

2) 需要将 GUID 作为索引列,以便可以满足阈值错误。但在列表设置中 GUID 不能设置为索引列,因为它没有在那里列出。

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

【问题讨论】:

    标签: indexing sharepoint-online sharepoint-workflow threshold


    【解决方案1】:

    我们在 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 过滤器没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2017-02-27
      • 1970-01-01
      • 2019-02-02
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      相关资源
      最近更新 更多