SharePoint travail du timer de flux de travail est bloqué à « Mise en pause »
Symptômes
Dans SharePoint Administration centrale, un travail du délai de travail du flux de travail affiche l’état « Mise en pause ». Par conséquent, vous devez faire l’expérience des problèmes suivants :
- Les approbations des tâches ne sont pas terminées.
- Les flux de travail ne peuvent pas s’exécuter après une pause.
- Le traitement aléatoire des flux de travail se produit.
- Les flux de travail ne fonctionnent pas sur de longues périodes.
Cause
La cause la plus probable est une instance de flux de travail mauvaise.
Résolution
Pour résoudre le problème, déterminez d’abord s’il est causé par une définition de flux de travail qui a été introduite dans le système ou par une instance de flux de travail mauvaise. Une fois que vous avez vérifié cela, travaillez avec le propriétaire du flux de travail pour décider si le flux de travail peut être interrompu ou supprimé.
Étape 1 : restreindre les serveurs qui exécutent le travail du travail du timer de flux de travail (facultatif mais vivement recommandé)
Pour diagnostiquer rapidement le problème, envisagez d’arrêter le service du SharePoint du flux de travail Microsoft SharePoint Foundation sur tous les serveurs à l’exception d’un seul.
Étape 2 : Définir le niveau de journalisation ULS sur VerboseEx
Dans l’SharePoint Management Shell, exécutez la commande suivante :
Set-SPLogLevel -TraceSeverity VerboseEx
Remarque Cela peut entraîner des problèmes de performances sur la batterie de serveurs. Nous vous recommandons de limiter la durée au minimum et de réinitialiser le niveau de journalisation ULS à la valeur par défaut une fois que le comportement a été reproduit à l’aide de Clear-SPLogLevel.
Si l’impact sur les performances empêche le suivi verboseEx complet, définissez le niveau de journalisation pour toutes les catégories sur Verbose et le niveau de journalisation pour « Infrastructure de flux de travail héritée » (ou « Infrastructure de flux de travail » dans SharePoint 2010) et « Timer » sur VerboseEx. Pour ce faire, exécutez les commandes suivantes dans SharePoint Management Shell :
Set-SPLogLevel -TraceSeverity Verbose
Set-SPLogLevel -TraceSeverity VerboseEx -Identity "Legacy Workflow Infrastructure"
Set-SPLogLevel -TraceSeverity VerboseEx -Identity "Timer"
Étape 3 : Effacer le cache de configuration
Clear the configuration cache on all servers where the workflow timer job is stuck and on the servers where Microsoft SharePoint Foundation Workflow Timer Service is started.
Étape 4 : Attendre que le problème se produise à nouveau et collecter les journaux ULS
Une fois que le cache de configuration est effacé, l’état du travail du timer du flux de travail change de « Interruption » à « Suspendu », puis « En cours d’exécution ». Patientez jusqu’à ce que le problème se produise , généralement dix minutes. Vous pouvez également constater que le travail du timer de flux de travail démarre sur un autre serveur si le travail peut s’exécuter sur ce serveur.
Vérifiez les journaux ULS toutes les cinq minutes pour voir si le problème a été reproduit et si le travail du minuteur est bloqué. Le problème s’affiche dans les journaux ULS avant que l’état du travail du timer ne devienne « Interruption ». Si aucune nouvelle entrée n’est créée pour le « travail du travail du temps » dans les journaux ULS, le travail du timer est bloqué. Lorsque cela se produit, filtrez les journaux ULS à l’aide de la condition suivante et vérifiez l’heure de la dernière entrée :
Name Contains Timer Job job-workflow
Étape 5 : Examiner les journaux ULS
Ouvrez les journaux ULS dans la visionneuse ULS, puis appliquez les filtres suivants :
Name Contains job-workflow EventID Contains ahk8yRecherchez le dernier flux de travail en cours de traitement. Il s’agit probablement de l’instance de flux de travail à l’origine du problème. Voici un exemple :
SharePoint Foundation Legacy Workflow Infrastructure ahk8y Verbose In RunWorkflowElev(), begin processing events for instance: bb7e3f4f-74ac-43f7-a31e-faa7e900843e 8329f59d-0342-20c3-fa1a-56f9161ded9fEffacer tous les filtres, puis appliquer le filtre suivant :
Corrélation égale à <Correlation_ID> et
Le message contient proc_GetWorkflowAssociations et
[EventID contient b6p4 ou
EventID contient tzkv ]Dans l’exemple, l’ID de corrélation est 8329f59d-0342-20c3-fa1a-56f9161ded9f.
Recherchez les dernières occurrences des événements b6p4 et tzkv, puis recherchez les éléments ListId, SiteId, ItemId et WebId. Voici un exemple :
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-56f9161ded9fDans l’exemple, le ListId est m82r99b0-ff01-4448-9907-e2cbbbca0586, le SiteId est 8dd5c889-47a6-4798-93ef-8652609278f4, l’ItemId est e22969ea-f883-4e99-8cbd-4b799a884d2d et le WebId est j3952987-5ca6-4eae-8530-13e83acf1bb0.
Étape 6 : Identifier le flux de travail
Dans l’SharePoint Management Shell, exécutez les commandes suivantes pour rechercher l’URL web et le titre de la liste :
$web= (Get-SPSite -Identity <SiteId> |Get-SPWeb -Identity <WebId>)
$list = $web.Lists.GetList("<ListId>", $true)
$list.ParentWeb
$list.Title
Remarque : SiteId, WebId et ListId sont des espaces réservé pour siteId, WebId et ListId trouvés à l’étape 5.
Go to the list and find the item by using ItemId. Vous pouvez également créer un affichage temporaire sur la liste et le filtrer par ITEMID. Le flux de travail problématique est associé à l’élément. Go to the workflow setting of the item. Si plusieurs flux de travail sont en cours d’exécution sur l’élément, cliquez sur la colonne d’état du flux de travail problématique pour afficher l’historique du flux de travail.
Étape 7 : Terminer le flux de travail
Examinez l’historique du flux de travail pour identifier le problème. Vous pouvez ensuite mettre fin au flux de travail ou supprimer l’élément.
Parfois, vous ne pouvez pas identifier le flux de travail ou l’élément à l’étape 6. Dans ce cas, assurez-vous que vous affichez la liste correcte et examinez tous les autres éléments de données. Vérifiez également les corbeilles.
Si vous ne trouvez toujours pas l’élément ou le flux de travail, il est possible que l’élément a été supprimé, mais que l’instance de flux de travail soit toujours en cours d’exécution. Dans ce cas, exécutez les commandes suivantes dans SharePoint Management Shell pour annuler le flux de travail :
$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)
Informations supplémentaires
Encore besoin d’aide ? Accédez au site de la Communauté SharePoint.