Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Симптомы
В центре администрирования SharePoint задание таймера рабочего процесса отображает состояние "Приостановка". В результате возникают следующие проблемы:
- Утверждения задач не завершены.
- Рабочие процессы не могут выполняться после приостановки.
- Происходит случайная обработка рабочих процессов.
- Рабочие процессы не работают в течение длительного периода времени.
Причина
Наиболее вероятной причиной является неправильный экземпляр рабочего процесса.
Решение
Чтобы устранить проблему, сначала определите, вызвана ли она определением рабочего процесса, которое было введено в системе или неправильным экземпляром рабочего процесса. Убедившись, что обратитесь к владельцу рабочего процесса, чтобы решить, можно ли завершить или удалить рабочий процесс.
Шаг 1. Ограничение серверов, выполняющих задание таймера рабочего процесса (необязательно, но настоятельно рекомендуется)
Чтобы быстро диагностировать проблему, попробуйте остановить службу таймера рабочего процесса Microsoft SharePoint Foundation на всех серверах, кроме одного.
Шаг 2. Установка уровня ведения журнала ULS в значение VerboseEx
В оболочке управления SharePoint выполните следующую команду:
Set-SPLogLevel -TraceSeverity VerboseEx
Обратите внимание , что это может привести к проблемам с производительностью в ферме. Рекомендуется ограничить длительность до минимального и сбросить уровень ведения журнала ULS до значения по умолчанию после воспроизведения поведения с помощью Clear-SPLogLevel.
Если влияние на производительность предотвращает полную трассировку VerboseEx, задайте уровень ведения журнала для всех категорий подробными и уровень ведения журнала для категории "Устаревшая инфраструктура рабочих процессов" (или "Инфраструктура рабочих процессов" в SharePoint 2010) и "Таймер" в значение VerboseEx. Для этого выполните следующие команды в оболочке управления SharePoint:
Set-SPLogLevel -TraceSeverity Verbose
Set-SPLogLevel -TraceSeverity VerboseEx -Identity "Legacy Workflow Infrastructure"
Set-SPLogLevel -TraceSeverity VerboseEx -Identity "Timer"
Шаг 3. Очистка кэша конфигурации
Снимите кэш конфигурации на всех серверах, на которых зависло задание таймера рабочего процесса, и на серверах, на которых запущена служба таймера рабочего процесса Microsoft SharePoint Foundation.
Шаг 4. Подождите, пока проблема не возникнет, и соберите журналы ULS
После очистки кэша конфигурации состояние задания таймера рабочего процесса изменится с "Приостановка" на "Приостановлено" и "Выполнение". Подождите, пока проблема не возникнет, обычно это занимает десять минут. Вы также можете увидеть, что задание таймера рабочего процесса запускается на другом сервере, если задание может выполняться на этом сервере.
Проверьте журналы ULS каждые пять минут, чтобы узнать, была ли проблема воспроизведена, и задание таймера зависло. Проблема отображается в журналах ULS, прежде чем состояние задания таймера становится "Приостановка". Если новые записи для рабочего процесса задания таймера не создаются в журналах ULS, задание таймера зависает. При этом отфильтруйте журналы ULS с помощью следующего условия и проверьте время последней записи:
Name Contains Timer Job job-workflow
Шаг 5. Проверка журналов ULS
Откройте журналы ULS в средстве просмотра ULS и примените следующие фильтры:
Name Contains job-workflow EventID Contains ahk8y
Найдите последний рабочий процесс, который был обработан. Скорее всего, это экземпляр рабочего процесса, который вызвал проблему. Рассмотрим пример:
SharePoint Foundation Legacy Workflow Infrastructure ahk8y Verbose In RunWorkflowElev(), begin processing events for instance: bb7e3f4f-74ac-43f7-a31e-faa7e900843e 8329f59d-0342-20c3-fa1a-56f9161ded9f
Снимите все фильтры и примените следующий фильтр:
Корреляция равна <Correlation_ID> и
Сообщение содержит proc_GetWorkflowAssociations и
[EventID содержит b6p4 или
EventID содержит tzkv ]В примере идентификатор корреляции — 8329f59d-0342-20c3-fa1a-56f9161ded9f.
Найдите последние вхождения событий b6p4 и tzkv, а затем найдите ListId, SiteId, ItemId и WebId. Рассмотрим пример:
05/25/2017 12:28:43.27 OWSTIMER.EXE (0x9318) 0x6DF0 SharePoint Foundation Database b6p4 VerboseEx SqlCommand: ; EXEC proc_getworkflowassociations '8dd5c889-47a6-4798-93ef-8652609278f4', 'j3952987-5ca6-4eae-8530-13e83acf1bb0', 'e22969ea-f883-4e99-8cbd-4b799a884d2d', 'm82r99b0-ff01-4448-9907-e2cbbbca0586', @contenttypeid, @RequestGuid OUTPUT 8329f59d-0342-20c3-fa1a-56f9161ded9f 05/25/2017 12:28:43.27 OWSTIMER.EXE (0x9318) 0x6DF0 SharePoint Foundation Database tzkv Verbose SqlCommand: 'proc_GetWorkflowAssociations' CommandType: StoredProcedure CommandTimeout: 0 Parameter: '@RETURN_VALUE' Type: Int Size: 0 Direction: ReturnValue Value: Parameter: '@SiteId' Type: UniqueIdentifier Size: 0 Direction: Input Value: '8dd5c889-47a6-4798-93ef-8652609278f4' Parameter: '@WebId' Type: UniqueIdentifier Size: 0 Direction: Input Value: 'j3952987-5ca6-4eae-8530-13e83acf1bb0' Parameter: '@Id' Type: UniqueIdentifier Size: 0 Direction: Input Value: 'e22969ea-f883-4e99-8cbd-4b799a884d2d' Parameter: '@ListId' Type: UniqueIdentifier Size: 0 Direction: Input Value: 'm82r99b0-ff01-4448-9907-e2cbbbca0586' Parameter: '@ContentTypeId' Type: VarBinary Size: 512 Direction: Input Value: Parameter: '@RequestGuid' Type: UniqueIdentifier Size: 0 Direction: Input Value: '8329f59d-0342-20c3-fa1a-56f9161ded9f' 8329f59d-0342-20c3-fa1a-56f9161ded9f
В примере ListId — m82r99b0-ff01-4448-9907-e2cbbbca0586, SiteId равно 8dd5c889-47a6-4798-93ef-8652609278f4, ItemId — e22969ea-f883-4e99-8cbd-4b799a84d2d2d, а webId — j3952987-5ca6-4eae-8530-13e83acf1bb0.
Шаг 6. Определение рабочего процесса
В оболочке управления SharePoint выполните следующие команды, чтобы найти ВЕБ-URL-адрес и название списка:
$web= (Get-SPSite -Identity <SiteId> |Get-SPWeb -Identity <WebId>)
$list = $web.Lists.GetList("<ListId>", $true)
$list.ParentWeb
$list.Title
Примечание SiteId, WebId и ListId — это заполнители для SiteId, WebId и ListId, найденных на шаге 5.
Перейдите в список и найдите элемент с помощью ItemId. Вы также можете создать временное представление в списке и отфильтровать его по ITEMID. Проблематичный рабочий процесс связан с элементом. Перейдите к параметру рабочего процесса элемента. Если элемент имеет несколько рабочих процессов, запущенных на нем, щелкните столбец состояния проблемного рабочего процесса, чтобы просмотреть страницу журнала рабочих процессов.
Шаг 7. Завершение рабочего процесса
Проверьте журнал рабочих процессов, чтобы определить, что не так. Затем можно завершить рабочий процесс или удалить элемент.
Иногда вы не можете определить рабочий процесс или элемент на шаге 6. В таких случаях убедитесь, что вы просматриваете правильный список и проверяете все остальные части данных. Также проверьте корзины.
Если элемент или рабочий процесс по-прежнему не удается найти, возможно, что элемент был удален, но экземпляр рабочего процесса по-прежнему запущен. В этом случае выполните следующие команды в командной консоли SharePoint, чтобы отменить рабочий процесс:
$web = Get-SPWeb <WebURL>
#Pass the workflow Instance Id from the ahk8y event
$WorkflowInstanceID = <WorkflowInstanceID>
$workflowId = [GUID]$WorkflowInstanceID
$workflow = New-Object Microsoft.SharePoint.Workflow.SPWorkflow($web, $workflowId);
[Microsoft.SharePoint.Workflow.SPWorkflowManager]::CancelWorkflow($workflow)
Дополнительная информация
Требуется дополнительная помощь? Посетите сайт сообщества SharePoint.