2010-08-22 4 views
2

Je n'ai pas pu obtenir l'instance de flux de travail dans l'activité de code de mon flux de travail. Comment puis-je l'obtenir? J'ai vérifié WorkflowEventArgs.WorkflowInstance Property mais dans mon activité de code je n'ai pas WorkflowEventArgs. à la place j'ai EventArgs.Comment obtenir une instance de workflow dans une activité?

Ce que je suis en train de faire:

essentiellement, j'ai besoin d'accéder aux données de file d'attente de workflow pour obtenir les valeurs dans la file d'attente. dans l'URL ci-dessus, le code est pour le même mais, ce n'est pas dans une activité de code? Quelle est la bonne façon d'accéder à la file d'attente?

Répondre

1

Je suis un peu confus par votre question. c'est ce que tu veux?

public sealed class GetWorkflowIdActivity : CodeActivity<string> 
{ 
    protected override string Execute(CodeActivityContext context) 
    { 
     return context.WorkflowInstanceId.ToString(); 
    } 
} 
2

De Getting Your Workflow Instance:

public sealed class LogState : CodeActivity 
{ 
    protected override void Execute(CodeActivityContext context) 
    { 
     Guid instanceId = context.WorkflowInstanceId; 
     var connection = ConfigurationManager.ConnectionStrings["ConnectionString"]; 


     WorkflowInstanceProxy proxy = context.GetExtension<WorkflowInstanceInfo>().GetProxy(); 
     //... 
    } 

    protected override void CacheMetadata(CodeActivityMetadata metadata) 
    { 
     base.CacheMetadata(metadata); 
     metadata.AddDefaultExtensionProvider<WorkflowInstanceInfo>(() => new WorkflowInstanceInfo()); 
    } 

    public class WorkflowInstanceInfo : IWorkflowInstanceExtension 
    { 
     WorkflowInstanceProxy proxy; 

     public IEnumerable<object> GetAdditionalExtensions() 
     { 
      yield break; 
     } 

     public void SetInstance(WorkflowInstanceProxy instance) 
     { 

      this.proxy = instance; 
     } 

     public WorkflowInstanceProxy GetProxy() { return proxy; } 
    } 
Questions connexes