Vous êtes sur la page 1sur 28

M.

)| "E : =) À
SN, Le re SO Fr d
ECC2
+ _A .

ER
ee
=, LP

PR |à o
>
eme OL TNT N ||| (ie IRL

Workflow Foundation 4.5 avec Visual Studio 2012


Module 4 : Services Avancés
WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013
Section 1 : Persistance

KFLOWFOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICES AVANCES
Pourquoi la persistance ?
LI Libérer les ressources occupées par un processus dont l'exécution peut prendre une longue
durée (jours, mois...)

LI Reprendre des activités importantes après une panne ou une défaillance.


SECTION 1 : PERSISTANCE

LI Un nombre important de workflows s’exécutant simultanément prendrait beaucoup de


ressources système. Il serait judicieux de décharger les workflowsinactifs.

LI Un mécanisme de persistance est indispensables pour les processus de longue exécution

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
Activer la persistance
LI La persistance des workflows n’est pas activée par défaut. Les workflows s'exécutent alors
uniquement en mémoire.

LI Lorsque la persistance est activée, lorsqu'un workflow est en mode veille,le service le
SECTION 1 : PERSISTANCE

décharge de la mémoire et le persiste dans un référentiel (par exemple une base de données).

LI WF4.5 fournit un mécanisme de persistance qui s'intègre facilement avec SQL Server.

LI 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

LLa persistance permet aussi à un workflow d’être exécutés par plusieurs hôtes.

LI La persistance ne fonctionne qu'avec des hôtes de type « WorkflowApplication » ou


« WorkflowServiceHost »

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
Instances de workflow
L] Une instance d’un workflow est une exécution d’un workflow.

LI Souvent, plusieurs instances d’un workflow s'exécutent simultanément. Par exemple, plusieurs
instances du workflow d'embauche.
SECTION 1 : PERSISTANCE

LI Chaque instance peut être sur un point d'exécution différent des autres instances.

LI Chaque instance est identifiée par un identifiant unique de type GUID

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
Déclencheurs de persistance
LI Lorsque le workflow est en mode veille

LI] Lorsque le moteur est instruit implicitement de déclencher une persistence

LLorsqu'un workflow se termine


SECTION 1 : PERSISTANCE

LLorsqu’une transaction se termine

LI Lorsqu'une activité « Persist » est exécutée

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
La persistance en utilisant SQL Server
LI La persistance peut être assurée en utilisant n'importe quel référentiel mais .NET Framework
facilite son implémentation en utilisant SQLServer

L Le sous-répertoire SQL du répertoire .NET Framwork contient les scripts nécessaires à la


SECTION 1 : PERSISTANCE

création de la base de données sous SQL Server

. CL roremtéé : ALI: Ma à © foheibe den: »

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
Scripts de persistance
Script Description

SalWorkflowinstanceStoreSchema.sql Crée la base de donnéesde persistance (tables)


SECTION 1 : PERSISTANCE

SalWorkflowinstanceStoreLogic.sql Crée les procédures stockées nécessaires à la mise en place de


la persistance

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
Schéma de la BDD de persistance
e (4 FormationWF
@ Ca Detabase Disgrams
SECTION 1 : PERSISTANCE

æ@ C1 System.Activities.Durablelnstancing.DefinitionidentityTable
C1 System.Activities.Durablelnstancing.IdentityOwnerTable

&© @ © @ ©
© System.Activities.Durablelnstancing.InstanceMetadataChangesTable
C1 System.Activities.Durablelnstancing.instancePromotedPropertiesTable
G
C1 System.Actmities.Durablelnstancing.KeysTable
æ@ C1 System.Activities.Durablelnstancing.LockOwnersTable
æ 1 System.Activities.Durablelnstancing.RunnablelnstancesTable
@ C1 System.Activities.Durablelnstancing.ServiceDeploymentsTable
æ 1 System.Activities.Durablelnstancing.SalWorkflowinstanceStoreVersionTable
© C3 Views
æ Ca Synonyms
@ C3 Programmability
æ Ca Service Broker
æ Ca Storage
@ Ca Security
Security

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHy AMINE | JUIN 201 MODULE 4 SERVICE AVANCES
Table des instances (InstancesTable)

4 | 14 BlockingBookmarks LastMachineR…. ExecutionStatus lsinitialized _ lsSuspended IsResdyToRun lsCompleted Surrogateldent.


D lp efbesdta-lé0-443b-92267408e3eéf088 [EvaluationTechnique AtendreReponsecint32>] MAMBOOK2 idie True Folse False False 3
& [s (mu NULL NULL NULL NULL NULL NULL NULL NULL
6
5
#
HW 411 fil bo @

OW FOUNDATION 4.5 | MOSTEFAI MOHAMIN LS PIU LUp6)E)


La classe « SalWorkflowinstanceStore »
LI Permet de configurer un référentiel de stockage sous SQLServer

LI La propriété « ConnectionString » permet de connecter le store à une base de données SQL


Server de persistance
SECTION 1 : PERSISTANCE

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
La propriété « Persistidle » de
WorkflowApplication
LI « Delegate » permettant de spécifier le comportement en cas de veille induisant à la
persistance

LI Retourne une des valeurs suivantes :


SECTION 1 : PERSISTANCE

L Unload : persiste et décharge le workflow de la mémoire

LI Persist : persiste le workflow mais ne le décharge pas

L None : ne persiste pas et ne décharge pas le workflow

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
L'activité « Persist »
LI Permet de « forcer » la persistance lorsqu'elle est exécutée
SECTION 1 : PERSISTANCE

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
L'activité « NoPersistScope »
LI Empêche la persistance lorsqu'une des activités enfants est exécutée
SECTION 1 : PERSISTANCE

Drop activity here

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
L'activité « NoPersistScope »
LI Empêche la persistance lorsqu'une des activités enfants est exécutée
SECTION 1 : PERSISTANCE

Drop activity here

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
Les participants de persistance
LI Des données peuvent être attachées aux workflows en plus de états de ces activités

L Les participants de persistance attachent des données au workflow


SECTION 1 : PERSISTANCE

LI Un participant est une classe héritant de « PersistentParticipant »

L 1! faut implémenter les méthodes « CollectValues » et « PublishValues » pour écrire et lire les
donnéesvers et depuis la base de données

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
Tutoriel 4.1
LI implémentation d’un long processus d'embauche en utilisant la persistance
SECTION 1 : PERSISTANCE

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICE AVANCES
Section 2 : SUIVI

KFLOWFOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 4 SERVICES AVANCES
Pourquoi le suivi ?
LI Pour connaître l’évolution de mon workflow (activités, états, ..)

LMonitoring : durées, interventions


LI Temps : temps d'exécution des workflow
SECTION 2: SUIVI

CI Logs: pour analyse et maintenance

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 3 DIAGRAMMIES DE FLUXET DIAGRAMMES DE MACHINES D'ETAT
Le service de suivi
LI Capture les évènements émis par les moteurs de workflow

LLes évènement sont appelés enregistrements


LI Un enregistrement est représenté par la classe « TrackingRecord »
SECTION 2: SUIVI

LI Un enregistrement contient des informations sur le workflow, les activités et les signets

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 3 DIAGRAMMIES DE FLUXET DIAGRAMMES DE MACHINES D'ETAT
Informations de l'enregistrement
L] Annotations : méta-données sur les activités

LI Heure / date de l'évènement

LI Identifiant de l'instance
SECTION 2: SUIVI

LI Niveau (erreur, avertissement, info...)

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 3 DIAGRAMMIES DE FLUXET DIAGRAMMES DE MACHINES D'ETAT
Types d'enregistrement
LI] Lorsque le workflow change d'état, un enregistrement de type « WorkflowinstanceRecord »
est émis : suspension, terminaison, erreur...

LI Un enregistrement de type « ActivityStateRecord » est émis lorsque une activité change d'état
SECTION 2: SUIVI

LLorsqu'une erreur est déclenchée, un enregistrement de type « FaultPropagatedRecord »est


émis

LI Lorsqu'un signet est émis, un enregistrement de type « BookmarkResumptionRecord »est


émis

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 3 DIAGRAMMIES DE FLUXET DIAGRAMMES DE MACHINES D'ETAT
Enregistrements personnalisés
L L'utilisateur peut créer ses propres enregistrements
L Les enregistrements personnalisés sont des classes héritant de « CustomTrackingRecord »

LI Le contexte de l’activité est utilisé pour émettre l'enregistrement en utilisant la méthode


SECTION 2: SUIVI

« Track »

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 3 DIAGRAMMIES DE FLUXET DIAGRAMMES DE MACHINES D'ETAT
Profils de suivi
1 Permettent de spécifier quelles activités suivre pendant l’exécution

LI La propriété « Queries » définit une requête permettant de filtrer les activités.

LI Les profils peuvent être définis en XML (en mode service) où par code lorsqu'on travaille avec
SECTION 2: SUIVI

« WorkflowApplication » ou « Workflowinvoker »

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 3 DIAGRAMMIES DE FLUXET DIAGRAMMES DE MACHINES D'ETAT
Configuration XML d'un profil
<tracking><profiles>
<trackingProfile name="Custom Tracking Profile">
<workflow>
<workflowinstanceQueries>
SECTION 2: SUIVI

<workflowinstanceQuery>
<states><state name="*"/></states>
</workflowinstanceQuery>
</workflowinstanceQueries>
</workflow>

</trackingProfile>
</profiles></tracking>

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 3 D: MMES DE FLUXET DIAG ES DE MACHINES D'ETAT
Création d’un profil par code
TrackingProfile = new TrackingProfile()

{
Name = “Formation WF",
SECTION 2: SUIVI

Queries = {
new WorkflowInstanceQuery()

{
States = 1777}

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 3 DIAGRAMMIES DE FLUXET DIAGRAMMES DE MACHINES D'ETAT
Les participants de suivi (Trackers)
L1 Des extensions permettant d'inclure le suivi

LI WF 4.5 a changé le mécanisme de suivi

LI WF 4,5 fournit une implémentation standard d’un tracker qui écrit sur l'observateur des
SECTION 2: SUIVI

évènements appelée « EtwTrackingParticipant »

LI On peut implémenter un tracker en héritant de la classe « TrackingParticipant »

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 3 DIAGRAMMIES DE FLUXET DIAGRAMMES DE MACHINES D'ETAT
Tutoriel 4.2
L1 Mise en place du suivi
SECTION 2: SUIVI

WORKFLOW FOUNDATION 4.5 | MOSTEFAI MOHAMMED AMINE | JUIN 2013 MODULE 3 DIAGRAMMIES DE FLUXET DIAGRAMMES DE MACHINES D'ETAT

Vous aimerez peut-être aussi