2012-04-30 4 views
0

suite à ma précédente question Resuming a persisted Window Workflow 4 Activity without knowing concrete type of activityLes propriétés promues par WF4 peuvent-elles être interrogées directement via InstanceStore?

Est-il possible d'interroger les propriétés promues directement par le InstanceStore (dans mon cas une instance SqlWorkflowInstanceStore), donné une workflowId?

Je peux interroger la base de données directement avec SQL, mais je me demandais si cela pouvait être fait directement via le magasin d'instance que j'utilise déjà dans mon code. J'ai regardé la méthode SqlWorkflowInstanceStore.Execute et le QueryActivatableWorkflowsCommand mais ne peux pas voir que ceux-ci font tout à fait ce que je veux.

Est-ce possible, et si oui, comment?

Répondre

1

Vous devez utiliser des commandes SQL pour interroger les propriétés promues.

+0

Merci @Maurice - Je me doutais que c'était le cas. J'ai l'impression que je manque quelque chose ici et que j'essaie de résoudre un problème plus complexe que nécessaire. Le problème racine (question liée) est que je veux reprendre un workflow précédemment persistant, où je ne connais pas forcément le type concret quand je reviendrai (bien que le type sera disponible dans le dossier bin), sans examiner le workflow persistant premier. Je saute à travers des cerceaux comme cette question pour essayer et enregistrer et récupérer les données de type mais je me demande si j'ai manqué le point. Y a-t-il un moyen plus simple, ou cette route est-elle correcte? –

+0

S'il y a quelques définitions de workflow, j'ai tendance à créer plusieurs bases de données. Sinon, je garde trace de l'ID de l'instance WF et la définition WF est une table spécifique à l'application en insérant un nouvel enregistrement lorsque je démarre un workflow. – Maurice

0

Cela a fonctionné pour moi de cette façon: utilisé un participant de persistance pour stocker le type d'activité et ensuite utilisé la vue d'instance pour récupérer ce type.

InstanceHandle handle = instanceStore.CreateInstanceHandle(instanceId); 
InstanceView view = instanceStore.Execute(handle, new LoadWorkflowCommand(), TimeSpan.FromSeconds(30)); 
string activityType = view.InstanceData[MyParticipantExtension.GetActivityTypeXName()].Value as string; 
Questions connexes