# Dotnet > Gnral Dotnet > Windows Workflow Foundation >  Windows Workflow Foundation

## Promeneur

Suite  la prsentation de la Windows Workflow Foundation, lors des rencontres du Dot User Group (o nous tions assez peu, je suis surpris de ne pas voir plus de monde  un vnement gratuit et intressant), je me pose des questions sur la Windows Workflow Foundation. Et comme convenu lors de la rencontre, je pose ces questions sur ce forum.


Nous avons vu une prsentation dun workflow squentiel. Jen suis rest un peu perplexe, car jai eu limpression de me retrouver face  une programmation plus procdurale quobjet. Il ma sembl que le workflow est un objet compos dun ensemble dtapes (de code, spcifiquement descendant de la classe Activity pour lessentiel), qui traitent des donnes, un document, par exemple. 

Par exemple, on fait un test, si le rsultat est vrai on passe  lactivit 1 sinon  lactivit 2, et ces activits font progresser le document dans le workflow. Dans les objets de classe Activity, on peut effectivement faire appel  es objets extrieurs, mais comme le faisait remarquer un participant, un peu comme on ferait appel  des fonctions dune DLL. L aussi, cela ne ma pas sembl tre trs philosophie objet. Jai vraiment limpression que lon a dun ct du code (le workflow, ses tests et ses activits) et dun autre les donnes (le document qui suit le workflow, par exemple).

Il savre que mon projet actuel traite de gestions de documents, dans un cadre clients serveur. On numrise divers types de documents, et les fichiers numriss vont servir  divers traitement automatiques (comme de lOCR ou des vrifications) et  divers traitement manuels (de la saisie et des contrles). Il sagit bien de workflow. Enfin, de plusieurs workflows, lapplication peut aussi bien traiter la saisie des chques pour une banque que des formulaires complexes avec pices jointes pour la mme banque ou un autre client.

Le modle objet est rsolument objet. Les entits mtiers cooprent avec les entits de configuration client pour savoir quel workflow elles ont  suivre, et  chaque tape, en utilisant par exemple des Design Patterns comme State ou Strategy, les objets mtiers de type document ou collection de document savent ce quils ont  faire ( quelle tape de leur propre workflow ils en sont) et avec qui le faire (avec quel type de client).

Je ne vais pas dtailler plus le systme, mais on peut faire lanalogie avec un systme multi-agents, o chaque document ou collection de documents coopre avec dautres objets mtiers pour savoir quoi faire, selon son tat. 

Je ne sais pas si je suis clair, mais jessaie de faire passer le point suivant : dans la prsentation que jai vue, la responsabilit des traitements tait dans les objets activity, et dans lobjet workflow lui-mme, le cadre gnral qui donne le chemin des diverses activits. Les documents (le data du workflow) avaient un rle passif. Dans le modle objet de mon application, les documents ne sont pas de simple data. Ils contiennent le code qui leur permet dagir avec un client automatique ou manuel, ce sont de vritables objets mtiers (mme sils changent ce code  la vole, selon leurs tats et leurs paramtrages).

Dans ce modle, il ny a pas vraiment dobjet workflow qui soit instanci et qui agisse sur les documents.  Ce sont les documents qui contiennent les rgles mtiers, et qui les excutent dans le cadre de dapplications clientes.

Du coup, jai limpression, quand je regarde la Windows Workflow Foundation, quelle nest pas adapte  ce que je suis en train de faire.

Mais jai peut tre tort. Dabord, on a juste effleur la surface. Ensuite, Dot Net est un magnifique framework, totalement objet et qui tmoigne dune grande matrise de lorient objet. Je me dis donc que je dois louper quelque chose quelque part. 

Des commentaires  ::):  ?


Richard

----------


## Thomas Lebrun

Bonjour,

Il y a une chose qui me surprend dans ce que vous dtes:




> Ce sont les documents qui contiennent les rgles mtiers, et qui les excutent dans le cadre de dapplications clientes.


Pour vous, vos objets mtier contiennent vos rgles mtier ce qui, selon moi (mais ce n'est que mon avis) n'est pas logique.

Un objet mtier doit rester un simple objet.... mtier  ::): 
Si votre objet est un livre par exemple, cet objet n'a pas  savoir qu'il peut-tre lu, achet, vendu, lou, prt, etc... C'est  votre application (ie votre couche metier) de savoir cela et pas  vos objets mtier, qui seront simplement "ballads" au sein de votre code.


Maintenant, il est tout  fait possible que votre architecture conviennent  votre projet et que cela ne rsolve en rien votre problme mais je tenais  souligner ce point qui sera, peut-tre, important pour la suite...


A+



Tom

----------


## Promeneur

> Un objet mtier doit rester un simple objet.... mtier 
> Si votre objet est un livre par exemple, cet objet n'a pas  savoir qu'il peut-tre lu, achet, vendu, lou, prt, etc... C'est  votre application (ie votre couche metier) de savoir cela et pas  vos objets mtier, qui seront simplement "ballads" au sein de votre code.


Je pense que c'est une vue correcte, et qui convient  la majorit des cas.

En ce qui concerne mon application, le choix est ressemble plus  une architecture multi agents, o chaque objet a un but et sait comment l'accomplir, en cooprant avec les autres. Cela n'empche pas le systme d'tre aussi souple qu'une application traditionnelle, dans le sens o les objets mtiers se servent d'autres objets pour savoir quoi faire (les objets de configuration) et savoir comment le faire (grce aux objets qui, d'une certaine manire, correspondent  ce que vous dsignez comme "couche mtier").

En fait, mon modle nest pas si loign de ce vous prconisez. On peut dire que mes objets mtiers ne sont que des objets mtiers. Au dpart, ils n'ont aucune rgle. C'est grce aux objets configurateurs qu'ils acquirent un tat, un workflow, et qu'ils se servent d'objets de la couche mtier. Le point important est quils encapsulent leur comportement (comportement dfini dans les objets de la couche mtier), et que les applications clientes demandent  ces objets mtier dexcuter leur comportement par dfaut, correspondant  ltat dans lequel ils se trouvent. Ils pourraient tre des livres. Et un objet configurateur pourrait crer un workflow de prts dans une bibliothque,  charge pour le dveloppeur de crer les objets de la couche mtier dont les objets  livres  auront besoin pour pouvoir excuter les actions de lapplication mtier.

Mais les mmes objets mtiers peuvent changer de comportement, grce  un autre configurateur, et se servir dobjets dune couche mtier autre, pour une application nayant rien  voir avec une bibliothque, par exemple.

Lide est davoir une application distribue dans lesquels les objets mtiers puissent en quelque sorte se balader,  la recherche de clients coopratifs, qui se content de fournir un environnement dans lequel ces objets mtiers peuvent vivre. Il ya une vague analogie avec des virus  :;):  .


Quelque chose que je ne vois pas comment faire avec la WWF  :;):  .



edit :

Peut tre sera-ce plus clair si lon dit que lapplication que je dveloppe est plus un framework quune application finale. Cest un framework capable daccueillir nimporte quel type de document pour nimporte quel type de workflow. A ce titre, il ne comporte pas vraiment de couche mtier, il se contente de mettre en place une architecture distribue dans laquelle diverses couches mtiers pourront tre dveloppes.

----------


## dev01

Salut .

Comme je l'ai dit, le problme vient peut tre du fait que nous avons abord les workflow squentiels et non pas les diagrammes  tat.

En effet avec diagramme  tat votre objet va passer d'un tat  un autre en fonction des conditions du moment. Cela se rapproche dj plus de votre model.

----------


## Promeneur

Peut-tre, en effet. Mais j'aimerais en savoir plus  :;): 

edit : je tiens  prciser que la prsentation du WWF que l'on nous a faite tait trs intressante, et que sans aucun doute les workflows squentiels sont tout  fait adapts  bon nombre de traitements.

----------


## Mose

Une question : votre modle fait-il la distinction entre le document physique et le processus de validation de ce document ?

A la lecture de vos prcisions, j'ai l'impression que les donnes propre au document (comme sa taille, son auteur, le chemin o on le trouve sur le serveur)  se retrouvent mlanges avec les donnes relative au processus dont ce document est l'objet dans votre entreprise.

C'est une approche possible, mais je prconiserait de dcorreller ces deux aspects. En terme architectural, avec un couplage aussi fort, vous perdez en souplesse.
Exemple : si demain votre processus de validation change compltement, c'est tout votre modle objet qui est  revoir, et a peut tre trs laborieux.

Si nanmoins vous persistez dans cette approche, je vous suggrerais de vous pencher sur la programmation oriente aspect, qui permet d'enrichir des objets existants avec des informations supplmentaires lies  un contexte (en l'occurence les informations concernant la validation du document). Non, malheureusement je ne connais pas d'outils pour a, je ne connais que la thorie.

Pour en revenir  WF, je vois cet outil comme une surcouche de la programmation traditionnelle. De la mme faon que maintenant on spare les accs  la base de donne dans une couche basse (de faon  rendre la persistance totalement indpendante et transparent), on va crer un Workflow pour cacher l'implmentation relle du programme et ne voir que ses grandes tapes.
On peut parler de "mta-programme".

On peut justifier cette approche procdurale par le fait qu'un tre humain comprend intuitivement cette approche, alors que l'approche objet ncessite un apprentissage. Or les workflow sont l pour permettre au managers (qui sont trs mauvais techniques comme chacun sait) de comprendre un programme dans ses grandes lignes.

Maintenant personnellement, je n'accroche pas  WF. Tout a me semble trop compliqu, et la dmo de l'autre jour m'a bien montr le ct contre-intuitif de la chose (dsl ditch). Je pense qu'il faut vraiment penser aux managers et faire un truc encore plus simple.
De plus, pourquoi gnrer du code alors qu'on pourrait utiliser un mta langage ? Le framework sait parfaitement optimiser ce genre de techno.

----------


## Promeneur

En ce qui concerne le modle objet de mon framework, le couplage est trs faible. Les objets  physiques , quand il se baladent sur le rseau dans le cadre du traitement distribu, acquirent  la vole les workflow et comportement ncessaires  ces workflows. Cest dans ce sens que cest un framework, il faut programmer ces workflows et comportements pour chaque couple document / client.  Dons, de fait, les processus de vaklidation changent sans cesse. 

Mais mon modle objet nest pas le sujet pricnipal de ce fil, je ne men suis ervi que pour illustrer une diffrence dapproche avec ce que jai compris des WWF.

Quant  voir le workflow comme un meta langage, pourquoi pas, mais quelle en sont les implications ?

----------


## jab

A mon sens, le workflow est plus proche du mode de travail telle qu'il se pratique au seins d'une entreprise. Il dfinit prcisment un chemin que va suivre dans ton cas un document mais les traitements reste bien dfini  l'extrieur du workflow, soit dans des services (web ou non) pour une approche SOA, soit dans les mthodes de ta classe si tu reste dans une approche strictement objet. 

Donc dans ton cas, le workflow serait quelque chose comme (ici trs simple 3 tapes sans condition)

Attendre un vnement entre d'un document: un objet de type "Mondocument" est crFaire appel  l'OCRFaire un traitement en appelant une mthode de ta classe "MonDocument"

C'est videment trs simplifi. :oops

Tu reste donc bien en orient objet ou en SOA tout en utilisant le workflow.
Bien sur cela pourrait tre tout aussi fficace de manire traditionnel. Le workflow prend vraiment tout son sens pour les long run ou s'il y a plusieurs acteurs.

----------


## Promeneur

Hmm peut-tre. Mais pour l'instant je n'ai rien vu qui illustre cette conception. Il faut peut-tre attendre la sortie d'un bon bouquin sur le WWF.

----------


## jab

> Il faut peut-tre attendre la sortie d'un bon bouquin sur le WWF.


l 

Il en existe dj pas mal mais en anglais.

----------


## Promeneur

> l 
> 
> Il en existe dj pas mal mais en anglais.


En as-tu  conseiller ?

----------


## jab

Un spcialiste m'a consill celui-ci Essential Windows Workflow Foundation

----------


## Promeneur

Merci  ::):

----------


## alicia26

Bonjour
je suis dbutante en workflow et je ne sais pas o commencer pour concevoir une application workflow,avec quels outils,etc....
pouvez vous m'clairer  ::oops::  
merci

----------


## Thomas Lebrun

Nous n'avons pas ( ma connaissance) d'articles sur le Workflow sur Developpez.com mais tu as ce site qui est trs bien: http://www.workflow-foundation.com/  ::):

----------


## Pit2689

Je confirme l'avis donn plus haut :

Essential Windows Workflow Foundation est un trs bon bouquin qui explique en dtail comment fonctionne le WF.

Pour ce qui est d'avoir des exemples sur comment crer des workflows, des Custom Activity, etc... Je conseille Programming Windows Workflow Foundation (Packt Publishing)

----------

