2

Nous avons une logique métier pour la gestion du cycle de vie du document.
Ceci est implémenté en utilisant Workflow Foundation 4 et WF Persistence. Pendant l'exécution du workflow, certains signets sont créés dans le workflow et une tâche planifiée recherche périodiquement tous les signets spécifiques et reprend le workflow (L'activité en cours d'exécution effectue un traitement et marque de nouveau le workflow pour que le workflow puisse être repris . plus tard)Qu'est-ce qui pourrait causer une erreur DurableInstancing.InstanceNotReadyException, et comment puis-je la réparer?

maintenant, pour certains des cas en cours d'exécution du flux de travail, nous recevons l'erreur suivante:

 
System.Runtime.DurableInstancing.InstanceNotReadyException was unhandled 
    Message=The execution of an InstancePersistenceCommand was interrupted because the instance '99ce9413-5b17-4de0-a453-46891509e032' has not yet been persisted to the instance store. 
    Source=System.Runtime.DurableInstancing 
    StackTrace: 
     at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result) 
     at System.Runtime.DurableInstancing.InstancePersistenceContext.OuterExecute(InstanceHandle initialInstanceHandle, InstancePersistenceCommand command, Transaction transaction, TimeSpan timeout) 
     at System.Runtime.DurableInstancing.InstanceStore.Execute(InstanceHandle handle, InstancePersistenceCommand command, TimeSpan timeout) 
     at System.Activities.WorkflowApplication.PersistenceManager.Load(TimeSpan timeout) 
     at System.Activities.WorkflowApplication.LoadCore(TimeSpan timeout, Boolean loadAny) 
     at System.Activities.WorkflowApplication.Load(Guid instanceId, TimeSpan timeout) 
     at System.Activities.WorkflowApplication.Load(Guid instanceId) 

précédemment les mêmes instances ont été chargées avec succès.

J'ai deux ou trois questions liées à cette exception:

  • Quand pouvons-nous obtenir cette exception?
  • Si nous obtenons cette exception, y a-t-il une manière gracieuse de la gérer afin que les mêmes instances puissent être reprises plus tard?
  • Existe-t-il également un moyen de corriger les instances de flux de travail existantes qui n'ont pas pu être reprises à cause de cette exception?

Répondre

0

Est-ce sur votre machine de développement dans laquelle vous effectuez régulièrement des changements dans les flux de travail? J'ai déjà reçu cette erreur et j'ai dû nettoyer ma base de données de persistance. Voici un script qui va le faire pour vous.

use [AppFabricPersistenceStore] 

set nocount on 

declare @InstanceId uniqueidentifier 
declare @SurrogateInstanceId bigint 

declare csr cursor fast_forward for 
    select InstanceId from [System.Activities.DurableInstancing].Instances 

open csr 
fetch next from csr into @InstanceId 

while @@fetch_status = 0 
begin 
    (
     select @SurrogateInstanceId = SurrogateInstanceId 
     from [System.Activities.DurableInstancing].InstancesTable i 
     where i.Id = @InstanceId 
    ) 

    execute [System.Activities.DurableInstancing].DeleteInstance @SurrogateInstanceId 

    fetch next from csr into @InstanceId 
end 

close csr 
deallocate csr 

Faites-moi savoir si cela fonctionne pour vous!

Questions connexes