2009-07-24 5 views
2

J'ai une application de flux de travail qui génère une erreur lorsque j'essaie d'appeler un événement à l'aide de ExternalDataExchangeService.Flux de travail avec l'ID "xxxxx" introuvable dans le magasin de persistance d'état

Flux de travail avec l'ID "866568ab-ca1b-4404-a2f1-2c8704539ef4" introuvable dans le magasin de persistance d'état.

L'événement "QAEngOrTLReject" sur le type d'interface "RecipeChangeService.IRecipeChangeService" pour l'ID d'instance "866568ab-ca1b-4404-a2f1-2c8704539ef4" ne peut pas être remis.

Voici mon code de mise en œuvre pour cela - S'il vous plaît aider Je suis coincé :(

Ci-dessous est l'interface et l'événement d'échange de données args -


public class RecipeChangeService : IRecipeChangeService{ 
     #region IRecipeChangeService Members 

     public event EventHandler QAEngOrTLApprove; 

     public event EventHandler QAEngOrTLReject; 

public bool QAEngOrTLApproved(Guid instanceId, ResponseDataObject rdo) { 
      if (QAEngOrTLApprove != null) { 
       QAEngOrTLApprove(this, new XMESWFRecipeResponseDataEventArgs(rdo, instanceId)); 
       return true; 
      }return false; 

     } 

     public bool QAEngOrTLRejected(Guid instanceId, ResponseDataObject rdo) { 
      if (QAEngOrTLReject != null) { 
       QAEngOrTLReject(this, new XMESWFRecipeResponseDataEventArgs(rdo,instanceId)); 
       return true; 
      } return false; 
     } 
} 

[Serializable] 
    public class XMESWFRecipeResponseDataEventArgs : ExternalDataEventArgs { 
     public readonly ResponseDataObject rdo = null; 
     public XMESWFRecipeResponseDataEventArgs(ResponseDataObject rdo, Guid instanceId) 
      : base(instanceId) 
     { 
      this.rdo = rdo; 
     } 
    } 

L'événement est déclenché à l'aide -



IRecipeChangeService s = 
        ExceptionServices.GetExceptionService(WorkflowExceptionType.RecipeChange) 
        as IRecipeChangeService; 
    s.QAEngOrTLApproved(new Guid(instanceId), rdo); 

Merci

Répondre

3

Faites-nous une faveur et s'il vous plaît assurez-vous que le code est readab le.

Il peut y avoir un certain nombre de raisons pour lesquelles le flux de travail est introuvable. Tout d'abord, vous verrez également cette erreur s'il n'y a pas de service de persistance et que le flux de travail n'est pas en mémoire. Une autre chose à vérifier est si le flux de travail n'est pas encore terminé. Cela peut être le résultat d'un autre événement ou d'une erreur non gérée.

+0

J'ai ajouté le service de persistance de façon déclarative. Comment est-ce que je devrais m'assurer si son fonctionne correctement. Je suis certain que le workflow est en mémoire et n'est pas terminé. – ksa

+0

Ouvrez la base de données dans laquelle vous persistez les flux de travail et vérifiez la table InstanceState. Il devrait y avoir un enregistrement pour chaque flux de travail connu. Vous pouvez vérifier si votre flux de travail est en mémoire à l'aide de la fonction GetLoadedWorkflows(). Si ce n'est pas le cas, vous pourriez utiliser un mauvais flux de travail InstanceId ou peut-être avoir plusieurs runtimes de workflow et en utiliser un autre à partir de l'endroit où vous avez démarré le workflow. – Maurice

+0

Mon tableau InstanceState est vide. Cela signifie qu'aucun travail n'est persistant. Comment puis-je m'assurer qu'une instance est enregistrée dans la base de données par le service de persistance? – ksa

Questions connexes