Compartilhar via


A tarefa de temporizador do fluxo de trabalho do SharePoint está travada em "Pausando"

Sintomas

Na Administração Central do SharePoint, um trabalho de temporizador de fluxo de trabalho mostra o status como "Pausando". Como resultado, você enfrenta os seguintes problemas:

  • As aprovações de tarefas não são concluídas.
  • Os fluxos de trabalho não podem ser executados após uma pausa.
  • Ocorre um processamento aleatório de fluxos de trabalho.
  • Os fluxos de trabalho não funcionam por longos períodos de tempo.

Motivo

A causa mais provável é uma instância de fluxo de trabalho defeituosa.

Resolução

Para corrigir o problema, primeiro determine se ele é causado por uma definição de fluxo de trabalho que foi introduzida no sistema ou por uma instância de fluxo de trabalho incorreta. Depois de verificar isso, trabalhe com o proprietário do fluxo de trabalho para decidir se o fluxo de trabalho pode ser encerrado ou excluído.

Para diagnosticar o problema rapidamente, considere interromper o Serviço de Temporizador de Fluxo de Trabalho do Microsoft SharePoint Foundation em todos os servidores, exceto um.

Etapa 2: Definir o nível de log do ULS como VerboseEx

No shell de Gerenciamento do SharePoint, execute o seguinte comando:

Set-SPLogLevel -TraceSeverity VerboseEx  

Nota Isso pode causar problemas de desempenho nos servidores. Recomendamos que você restrinja a duração ao mínimo e redefina o nível de log ULS para o valor padrão depois que o comportamento tiver sido reproduzido usando Clear-SPLogLevel.

Se o impacto no desempenho impedir o rastreamento VerboseEx completo, defina o nível de registro em log para todas as categorias como Detalhado e o nível de registro em log para as categorias "Infraestrutura de Fluxo de Trabalho Herdado" (ou "Infraestrutura de Fluxo de Trabalho" no SharePoint 2010) e "Temporizador" como VerboseEx. Para fazer isso, execute os seguintes comandos no shell de Gerenciamento do SharePoint:

Set-SPLogLevel -TraceSeverity Verbose   
Set-SPLogLevel -TraceSeverity VerboseEx -Identity "Legacy Workflow Infrastructure"  
Set-SPLogLevel -TraceSeverity VerboseEx -Identity "Timer"  

Etapa 3: Limpar cache de configuração

Desmarque o cache de configuração em todos os servidores em que o trabalho do temporizador de fluxo de trabalho está travado e nos servidores em que o Serviço de Temporizador de Fluxo de Trabalho do Microsoft SharePoint Foundation é iniciado.

Etapa 4: Aguarde até que o problema ocorra novamente e colete logs ULS

Depois que o cache de configuração for limpo, o status do trabalho de temporizador de fluxo de trabalho será alterado de "Pausando" para "Pausado" e, em seguida, "Em execução". Aguarde até que o problema ocorra , geralmente leva dez minutos. Você também poderá ver que o trabalho do temporizador de fluxo de trabalho será iniciado em outro servidor se o trabalho puder ser executado nesse servidor.

Verifique os logs ULS a cada cinco minutos para ver se o problema foi reproduzido e se a tarefa de temporizador está travada. O problema é exibido nos logs do ULS antes que o status do trabalho do temporizador se torne "Pausando". Se nenhuma entrada nova para o "fluxo de trabalho do trabalho do timer" for criada nos logs do ULS, o trabalho de temporizador estará travado. Quando isso ocorrer, filtre os logs uls usando a seguinte condição e verifique a hora da última entrada:

 Name  Contains  Timer Job job-workflow

Etapa 5: Examinar os logs do ULS

  1. Abra os logs do ULS no Visualizador do ULS e aplique os seguintes filtros:

    Name  Contains  job-workflow  
    EventID  Contains  ahk8y
    
  2. Localize o último fluxo de trabalho que estava sendo processado. Provavelmente, essa é a instância de fluxo de trabalho que causou o problema. Este é um exemplo:

    SharePoint Foundation Legacy Workflow Infrastructure ahk8y Verbose In RunWorkflowElev(), begin processing events for instance: bb7e3f4f-74ac-43f7-a31e-faa7e900843e      8329f59d-0342-20c3-fa1a-56f9161ded9f
    
  3. Desmarque todos os filtros e aplique o seguinte filtro:

    Correlação é <igual a Correlation_ID> e
    A mensagem contém proc_GetWorkflowAssociations e
    [EventID contém b6p4 ou
    EventID contém tzkv ]

    No exemplo, a ID de Correlação é 8329f59d-0342-20c3-fa1a-56f9161ded9f.

  4. Localize as últimas ocorrências de eventos b6p4 e tzkv e localize ListId, SiteId, ItemId e WebId. Este é um exemplo:

    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
    

    No exemplo, o ListId é m82r99b0-ff01-4448-9907-e2cbbbca0586, o SiteId é 8dd5c889-47a6-4798-93ef-8652609278f4, o ItemId é e22969ea-f883-4e99-8cbd-4b799a884d2d, e o WebId é j3952987-5ca6-4eae-8530-13e83acf1bb0.

Etapa 6: Identificar o fluxo de trabalho

No shell de Gerenciamento do SharePoint, execute os seguintes comandos para localizar a URL da Web e o título da lista:

 $web= (Get-SPSite -Identity <SiteId> |Get-SPWeb -Identity <WebId>)   
 $list = $web.Lists.GetList("<ListId>", $true)  
 $list.ParentWeb   
 $list.Title

ObservaçãoSiteId, WebId e ListId são espaços reservados para o SiteId, WebId e ListId que foram encontrados na Etapa 5.

Vá para a lista e localize o item usando ItemId. Você também pode criar uma exibição temporária na lista e filtre-a por ITEMID. O fluxo de trabalho problemático está associado ao item. Vá para a configuração de fluxo de trabalho do item. Se o item tiver vários fluxos de trabalho em execução, clique na coluna de status do fluxo de trabalho problemático para exibir a página de histórico do fluxo de trabalho.

Etapa 7: Encerrar o fluxo de trabalho

Examine o histórico do fluxo de trabalho para identificar o que está errado. Em seguida, você pode encerrar o fluxo de trabalho ou excluir o item.

Às vezes, você pode não identificar o fluxo de trabalho ou o item na Etapa 6. Nesses casos, verifique se você está exibindo a lista correta e inspecione todos os outros dados. Verifique também as lixeiras.

Se você ainda não conseguir encontrar o item ou o fluxo de trabalho, é possível que o item tenha sido excluído, mas a instância de fluxo de trabalho ainda esteja em execução. Nesse caso, execute os seguintes comandos no Shell de Gerenciamento do SharePoint para cancelar o fluxo de trabalho:

$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)

Mais informações

Ainda precisa de ajuda? Vá para a Comunidade do SharePoint.