Récupérer la liste des instances d’un Workflow
Depuis la bêta 2, il est possible de récupérer la liste des instances d’un Workflow, qu’elles soient persistés ou non.
La méthode suivante permet par exemple, dans un contexte d’application hôte Web, de renvoyer la liste des instances actives dans une liste :
[WebMethod]
public object[] GetInstances()
{
WorkflowRuntime workflowRuntime = WorkflowWebRequestContext.Current.WorkflowRuntime;
//recuperation du service de persistance afin de récuprer toutes les instances de Workflow en cours (persistés ou non)
SqlWorkflowPersistenceService persistance = (SqlWorkflowPersistenceService)workflowRuntime.GetService(typeof(SqlWorkflowPersistenceService));
IEnumerable<SqlPersistenceWorkflowInstanceDescription> instances = persistance.GetAllWorkflows();
ArrayList res = new ArrayList();
foreach (SqlPersistenceWorkflowInstanceDescription instance in instances)
{
res.Add(instance.WorkflowInstanceId.ToString());
}
return res.ToArray();
}