Compartir a través de


El trabajo del temporizador de flujo de trabajo de SharePoint está bloqueado en "Pausar"

Síntomas

En Administración central de SharePoint, un trabajo del temporizador de flujo de trabajo muestra el estado como "Pausa". Como resultado, experimenta los siguientes problemas:

  • Las aprobaciones de las tareas no se completan.
  • Los flujos de trabajo no se pueden ejecutar después de una pausa.
  • Se produce un procesamiento aleatorio de flujos de trabajo.
  • Los flujos de trabajo no funcionan durante largos períodos de tiempo.

Causa

La causa más probable es una instancia de flujo de trabajo incorrecta.

Solución

Para corregir el problema, determine primero si se debe a una definición de flujo de trabajo introducida en el sistema o por una instancia de flujo de trabajo incorrecta. Después de comprobarlo, trabaje con el propietario del flujo de trabajo para decidir si el flujo de trabajo se puede terminar o eliminar.

Para diagnosticar el problema rápidamente, considere la posibilidad de detener el servicio temporizador de flujo de trabajo de Microsoft SharePoint Foundation en todos los servidores excepto uno.

Paso 2: Establecer el nivel de registro de ULS en VerboseEx

En el shell de administración de SharePoint, ejecute el siguiente comando:

Set-SPLogLevel -TraceSeverity VerboseEx  

Nota Esto puede provocar problemas de rendimiento en la granja de servidores. Se recomienda restringir la duración al mínimo y restablecer el nivel de registro de ULS al valor predeterminado después de que el comportamiento se haya reproducido mediante Clear-SPLogLevel.

Si el impacto en el rendimiento evita el seguimiento detallado completo, establezca el nivel de registro de todas las categorías en Detallado y el nivel de registro de "Infraestructura de flujo de trabajo heredada" (o "Infraestructura de flujo de trabajo" en SharePoint 2010) y categorías "Temporizador" en VerboseEx. Para ello, ejecute los siguientes comandos en el shell de administración de SharePoint:

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

Paso 3: Borrar la caché de configuración

Borre la caché de configuración en todos los servidores en los que el trabajo del temporizador de flujo de trabajo está bloqueado y en los servidores en los que se inicia el servicio temporizador de flujo de trabajo de Microsoft SharePoint Foundation.

Paso 4: Esperar hasta que se produzca el problema de nuevo y recopilar registros ulS

Una vez desactivada la memoria caché de configuración, el estado del trabajo del temporizador de flujo de trabajo cambiará de "Pausar" a "Pausado" y, a continuación, "En ejecución". Espere hasta que se produzca el problema: normalmente tarda diez minutos. También puede ver que el trabajo del temporizador de flujo de trabajo se inicia en otro servidor si el trabajo se puede ejecutar en ese servidor.

Compruebe los registros de ULS cada cinco minutos para ver si el problema se ha reproducido y el trabajo del temporizador está bloqueado. El problema se muestra en los registros de ULS antes de que el estado del trabajo del temporizador se convierta en "Pausar". Si no se crean nuevas entradas para el "flujo de trabajo del trabajo del temporizador" en los registros ulS, el trabajo del temporizador se bloquea. Cuando esto ocurre, filtre los registros de ULS mediante la siguiente condición y compruebe la hora de la última entrada:

 Name  Contains  Timer Job job-workflow

Paso 5: Examen de los registros de ULS

  1. Abra los registros de ULS en el Visor de ULS y, a continuación, aplique los siguientes filtros:

    Name  Contains  job-workflow  
    EventID  Contains  ahk8y
    
  2. Busque el último flujo de trabajo que se estaba procesando. Lo más probable es que se trate de la instancia de flujo de trabajo que provocó el problema. Este es un ejemplo:

    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. Borre todos los filtros y, a continuación, aplique el siguiente filtro:

    La correlación es igual a Correlation_ID> y<
    El mensaje contiene proc_GetWorkflowAssociations y
    [EventID contiene b6p4 o
    EventID contiene tzkv ]

    En el ejemplo, el identificador de correlación es 8329f59d-0342-20c3-fa1a-56f9161ded9f.

  4. Busque las últimas apariciones de eventos b6p4 y tzkv y busque listId, SiteId, ItemId y WebId. Este es un ejemplo:

    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
    

    En el ejemplo, listId es m82r99b0-ff01-4448-9907-e2cbbbca0586, siteId es 8dd5c889-47a6-4798-93ef-8652609278f4, ItemId es e22969ea-f883-4e99-8cbd-4b799a884d2d y el WebId es j3952987-5ca6-4eae-8530-13e83acf1bb0.

Paso 6: Identificación del flujo de trabajo

En el shell de administración de SharePoint, ejecute los siguientes comandos para buscar la dirección URL web y el título de la lista:

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

Nota SiteId, WebId y ListId son marcadores de posición para siteId, WebId y ListId que se encontraron en el paso 5.

Vaya a la lista y busque el elemento mediante ItemId. También puede crear una vista temporal en la lista y filtrarla por ITEMID. El flujo de trabajo problemático está asociado al elemento. Vaya a la configuración de flujo de trabajo del elemento. Si el elemento tiene varios flujos de trabajo ejecutándose en él, haga clic en la columna de estado del flujo de trabajo problemático para ver la página del historial de flujos de trabajo.

Paso 7: Finalizar el flujo de trabajo

Examine el historial de flujos de trabajo para identificar lo que está mal. A continuación, puede finalizar el flujo de trabajo o eliminar el elemento.

A veces, es posible que no identifique el flujo de trabajo o el elemento en el paso 6. En tales casos, asegúrese de que está viendo la lista correcta e inspeccione todos los demás datos. Compruebe también las papeleras de reciclaje.

Si todavía no encuentra el elemento o el flujo de trabajo, es posible que el elemento se haya eliminado, pero la instancia de flujo de trabajo todavía se está ejecutando. En este caso, ejecute los siguientes comandos en el Shell de administración de SharePoint para cancelar el flujo de trabajo:

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

Más información

¿Aún necesita ayuda? Visite Comunidad de SharePoint.