Module 1 introduction au développement web avec visual studio 2012
Workflow Foundation Module 4
1. Workflow Foundation 4.5 avec Visual Studio 2012
Module 4 : Services Avancés
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 1
2. MODULE 4 – SERVICES AVANCÉS
Section 1 : Persistance
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 2
3. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
Pourquoi la persistance ?
Libérer les ressources occupées par un processus dont l’exécution peut prendre une longue
durée (jours, mois,…)
Reprendre des activités importantes après une panne ou une défaillance.
Un nombre important de workflows s’exécutant simultanément prendrait beaucoup de
ressources système. Il serait judicieux de décharger les workflows inactifs.
Un mécanisme de persistance est indispensables pour les processus de longue exécution
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 3
4. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
Activer la persistance
La persistance des workflows n’est pas activée par défaut. Les workflows s’exécutent alors
uniquement en mémoire.
Lorsque la persistance est activée, lorsqu’un workflow est en mode veille, le service le
décharge de la mémoire et le persiste dans un référentiel (par exemple une base de données).
WF4.5 fournit un mécanisme de persistance qui s’intègre facilement avec SQL Server.
En plus de la persistance et le déchargement, le service fournit un mécanisme permettant de
restituer un workflow à son état d’avant la persistance
La persistance permet aussi à un workflow d’être exécutés par plusieurs hôtes.
La persistance ne fonctionne qu’avec des hôtes de type « WorkflowApplication » ou
« WorkflowServiceHost »
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 4
5. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
Instances de workflow
Une instance d’un workflow est une exécution d’un workflow.
Souvent, plusieurs instances d’un workflow s’exécutent simultanément. Par exemple, plusieurs
instances du workflow d’embauche.
Chaque instance peut être sur un point d’exécution différent des autres instances.
Chaque instance est identifiée par un identifiant unique de type GUID
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 5
6. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
Déclencheurs de persistance
Lorsque le workflow est en mode veille
Lorsque le moteur est instruit implicitement de déclencher une persistence
Lorsqu’un workflow se termine
Lorsqu’une transaction se termine
Lorsqu’une activité « Persist » est exécutée
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 6
7. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
La persistance en utilisant SQL Server
La persistance peut être assurée en utilisant n’importe quel référentiel mais .NET Framework
facilite son implémentation en utilisant SQL Server
Le sous-répertoire SQL du répertoire .NET Framwork contient les scripts nécessaires à la
création de la base de données sous SQL Server
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 7
8. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
Scripts de persistance
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 8
Script Description
SqlWorkflowInstanceStoreSchema.sql Crée la base de données de persistance (tables)
SqlWorkflowInstanceStoreLogic.sql Crée les procédures stockées nécessaires à la mise en place de
la persistance
9. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
Schéma de la BDD de persistance
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 9
10. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
Table des instances (InstancesTable)
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 10
11. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
La classe « SqlWorkflowInstanceStore »
Permet de configurer un référentiel de stockage sous SQL Server
La propriété « ConnectionString » permet de connecter le store à une base de données SQL
Server de persistance
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 11
12. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
La propriété « PersistIdle » de
WorkflowApplication
« Delegate » permettant de spécifier le comportement en cas de veille induisant à la
persistance
Retourne une des valeurs suivantes :
Unload : persiste et décharge le workflow de la mémoire
Persist : persiste le workflow mais ne le décharge pas
None : ne persiste pas et ne décharge pas le workflow
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 12
13. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
L’activité « Persist »
Permet de « forcer » la persistance lorsqu’elle est exécutée
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 13
14. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
L’activité « NoPersistScope »
Empêche la persistance lorsqu’une des activités enfants est exécutée
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 14
15. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
L’activité « NoPersistScope »
Empêche la persistance lorsqu’une des activités enfants est exécutée
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 15
16. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
Les participants de persistance
Des données peuvent être attachées aux workflows en plus de états de ces activités
Les participants de persistance attachent des données au workflow
Un participant est une classe héritant de « PersistentParticipant »
Il faut implémenter les méthodes « CollectValues » et « PublishValues » pour écrire et lire les
données vers et depuis la base de données
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 16
17. MODULE 4 – SERVICE AVANCÉS
SECTION1:PERSISTANCE
Tutoriel 4.1
Implémentation d’un long processus d’embauche en utilisant la persistance
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 17
18. MODULE 4 – SERVICES AVANCÉS
Section 2 : Suivi
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 18
19. MODULE 3 - DIAGRAMMES DE FLUX ET DIAGRAMMES DE MACHINES D’ETAT
SECTION2:SUIVI
Pourquoi le suivi ?
Pour connaître l’évolution de mon workflow (activités, états, …)
Monitoring : durées, interventions
Temps : temps d’exécution des workflow
Logs : pour analyse et maintenance
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 19
20. MODULE 3 - DIAGRAMMES DE FLUX ET DIAGRAMMES DE MACHINES D’ETAT
SECTION2:SUIVI
Le service de suivi
Capture les évènements émis par les moteurs de workflow
Les évènement sont appelés enregistrements
Un enregistrement est représenté par la classe « TrackingRecord »
Un enregistrement contient des informations sur le workflow, les activités et les signets
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 20
21. MODULE 3 - DIAGRAMMES DE FLUX ET DIAGRAMMES DE MACHINES D’ETAT
SECTION2:SUIVI
Informations de l’enregistrement
Annotations : méta-données sur les activités
Heure / date de l’évènement
Identifiant de l’instance
Niveau (erreur, avertissement, info,…)
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 21
22. MODULE 3 - DIAGRAMMES DE FLUX ET DIAGRAMMES DE MACHINES D’ETAT
SECTION2:SUIVI
Types d’enregistrement
Lorsque le workflow change d’état, un enregistrement de type « WorkflowInstanceRecord »
est émis : suspension, terminaison, erreur,…
Un enregistrement de type « ActivityStateRecord » est émis lorsque une activité change d’état
Lorsqu’une erreur est déclenchée, un enregistrement de type « FaultPropagatedRecord » est
émis
Lorsqu’un signet est émis, un enregistrement de type « BookmarkResumptionRecord » est
émis
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 22
23. MODULE 3 - DIAGRAMMES DE FLUX ET DIAGRAMMES DE MACHINES D’ETAT
SECTION2:SUIVI
Enregistrements personnalisés
L’utilisateur peut créer ses propres enregistrements
Les enregistrements personnalisés sont des classes héritant de « CustomTrackingRecord »
Le contexte de l’activité est utilisé pour émettre l’enregistrement en utilisant la méthode
« Track »
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 23
24. MODULE 3 - DIAGRAMMES DE FLUX ET DIAGRAMMES DE MACHINES D’ETAT
SECTION2:SUIVI
Profils de suivi
Permettent de spécifier quelles activités suivre pendant l’exécution
La propriété « Queries » définit une requête permettant de filtrer les activités.
Les profils peuvent être définis en XML (en mode service) ou par code lorsqu’on travaille avec
« WorkflowApplication » ou « WorkflowInvoker »
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 24
25. MODULE 3 - DIAGRAMMES DE FLUX ET DIAGRAMMES DE MACHINES D’ETAT
SECTION2:SUIVI
Configuration XML d’un profil
<tracking><profiles>
<trackingProfile name="Custom Tracking Profile">
<workflow>
<workflowInstanceQueries>
<workflowInstanceQuery>
<states><state name="*"/></states>
</workflowInstanceQuery>
</workflowInstanceQueries>
</workflow>
</trackingProfile>
</profiles></tracking>
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 25
26. MODULE 3 - DIAGRAMMES DE FLUX ET DIAGRAMMES DE MACHINES D’ETAT
SECTION2:SUIVI
Création d’un profil par code
TrackingProfile = new TrackingProfile()
{
Name = "Formation WF",
Queries = {
new WorkflowInstanceQuery()
{
States = {"*"}
}
}
}
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 26
27. MODULE 3 - DIAGRAMMES DE FLUX ET DIAGRAMMES DE MACHINES D’ETAT
SECTION2:SUIVI
Les participants de suivi (Trackers)
Des extensions permettant d’inclure le suivi
WF 4.5 a changé le mécanisme de suivi
WF 4.5 fournit une implémentation standard d’un tracker qui écrit sur l’observateur des
évènements appelée « EtwTrackingParticipant »
On peut implémenter un tracker en héritant de la classe « TrackingParticipant »
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 27
28. MODULE 3 - DIAGRAMMES DE FLUX ET DIAGRAMMES DE MACHINES D’ETAT
SECTION2:SUIVI
Tutoriel 4.2
Mise en place du suivi
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 28