SharePoint Online Microsoft.SharePoint.SPQueryThrottledException из рабочего процесса - PullRequest
0 голосов
/ 26 июня 2018

Справочная информация. Достигнут пороговый предел нашего списка задач SharePoint, что означает, что количество элементов превышает 5000. Мы создали настраиваемое представление для управления представлением данных с помощью индексированных столбцов.

Но в рабочем процессе дизайнера SharePoint 2013 есть логика, в которой нам нужно получить столбец описания и несколько других столбцов задачи, которые будут выполнены, чтобы сохранить его в виде истории (какой пользователь и какое действие предпринял). Теперь, чтобы получить информацию, мы используем GUID, возвращаемый с помощью Назначить задачу для дизайнера и запросить выполненную задачу. Проблема: наш рабочий процесс конструктора SP вызывает список задач и фильтрует элементы на основе GUID. Ниже приведен пример скриншота звонка от дизайнера.

SharePoint Позвоните в наш список

и после достижения этого шага выдает ошибку в рабочем процессе, и рабочий процесс приостанавливается. Когда я уточняю причину, по которой это связано с пороговым пределом, я тестировал его в браузере, как показано ниже. Ошибка при вызове выше в worklfow

Мой подход: Чтобы справиться с этой проблемой, я имею в виду только 2 пункта:

1) Для вызова выше по Идентификатор элемента вместо GUID, поскольку идентификатор элемента будет индексироваться по умолчанию, но Назначить задачу Действие рабочего процесса дизайнера SharePoint вернуть TaskID, который содержит GUID, так это является причиной фильтрации элементов по GUID, но GUID не является индексированными столбцами, поэтому он вызывает исключение Microsoft.SharePoint.SPQueryThrottledException.

2) Необходимо сделать GUID в качестве индексированного столбца, чтобы пороговая ошибка могла быть обработана. но в настройках списка GUID не может быть установлен как индексированный столбец, так как его там нет в списке.

Вопрос: Есть ли какое-либо решение или любой другой способ, чтобы мы могли получить информацию, относящуюся к задаче, в конструкторе после ее завершения.

1 Ответ

0 голосов
/ 17 ноября 2018

У нас была точно такая же проблема в среде 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

Я поместил индекс в столбец GUID через powershell:

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.

...