/// <summary>
/// configure l'application
/// </summary>
/// <param name="app"></param>
/// <param name="NomCandidat"></param>
private void ConfigurerApplication(WorkflowApplication app, string NomCandidat = null)
{
// affecter le store
app.InstanceStore = _store;
// ajouter l'extension pour pouvoir persister le dossier du candidat
app.Extensions.Add(new CandidatParticipant() { Nom = NomCandidat });
// créer le tracker
var tracker = new EtwTrackingParticipant()
{
TrackingProfile = new TrackingProfile()
{
Name = "Formation WF",
Queries = {
new ActivityStateQuery()
{
States = {"*"}
}
}
}
};
// ajouter le tracker aux extensions
app.Extensions.Add(tracker);
// évènement à déclencher lorsque le workflow est en mode veille
app.Idle = delegate(WorkflowApplicationIdleEventArgs args)
{
var signet = args.Bookmarks.FirstOrDefault();
if (signet == null)
return;
DesactiverBoutons();
switch (signet.BookmarkName)
{
case "EvaluationTechnique":
ActiverBouton(btnTechnique, true);
break;
case "EvaluationOrale":
ActiverBouton(btnOral, true);
break;
}
};
// évènement se déclenchant avant la persistance
app.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs args)
{
Console.WriteLine("Workflow {0} va être persisté", args.InstanceId);
return PersistableIdleAction.Unload;
};
// affiche un message lorsque le workflow est déchargé
app.Unloaded += delegate(WorkflowApplicationEventArgs args)
{
Console.WriteLine("Workflow {0} déchargé", args.InstanceId);
};
// se déclenche lorsque le workflow se termine
app.Completed += delegate(WorkflowApplicationCompletedEventArgs args)
{
var extensions = args.GetInstanceExtensions<CandidatParticipant>();
var dossier = extensions.First();
Console.WriteLine("Workflow {0} terminé avec statut {1}", args.InstanceId, args.CompletionState);
Console.WriteLine("L'opération d'embauche du dossier {0} a été terminée avec une moyenne de {1}", dossier.Nom, args.Outputs["moyenne"]);
DesactiverBoutons();
// supprimer le workflow de la liste
cbWorkflows.Dispatcher.Invoke(new Action(() => _liste.Remove(args.InstanceId)));
};
}