2015-10-07 1 views
0

J'ai une application WorkflowApplication pour exécuter des workflows. Il prend en charge la persistance d'un flux de travail sur une activité Delay et la reprise de celle-ci. Pour reprendre, j'utiliser l'instance de workflow ID comme si:Charger une instance de workflow avec un ID externe

public void ResumeWorkflow(Guid instanceId) 
{ 
    var instance = WorkflowApplication.GetInstance(instanceId, this.instanceStore); 

    var wfApplication = new WorkflowApplication(
     (Activity)businessProcess, 
     instance.DefinitionIdentity); 

    wfApplication.Load(instance); 
} 

Cela fonctionne très bien, mais je veux commencer à reprendre le flux de travail basé sur un autre bit de données que le instanceId. Par exemple, disons que mon flux de travail était un robot de messagerie SMS, je pourrais vouloir utiliser le numéro de téléphone portable pour reprendre le flux de travail. En fait, je souhaite utiliser le numéro de téléphone mobile comme un indicateur de corrélation, mais ceux-ci semblent être utilisés uniquement lors de l'hébergement de services WCF dans votre flux de production, ce qui n'est pas le cas.

Enfin, je dois ajouter que nous utilisons le SqlWorkflowInstanceStore, si cela rend les choses plus facile (on peut peut-être interroger la banque d'instance pour connaître l'ID d'instance à partir d'un numéro de téléphone ou quelque chose?)

Toutes les idées que je pourrait aller à ce sujet?

Répondre

1

Je pense que votre meilleur pari est de revoir l'utilisation de InstancePromotedProperties. Ceux-ci devraient vous permettre d'étendre la persistance de l'instance inactive pour inclure des informations supplémentaires. En fin de compte, en regardant le lien Extensibilité Store this vous donne un exemple travaillé.