Monday, December 14, 2009

Le worflow

On appelle workflow la modélisation et la gestion informatique de l'ensemble des tâches à accomplir et des différents acteurs impliqués dans la réalisation d'un processus métier (aussi appelé processus opérationnel ou bien procédure d'entreprise). Le terme de « workflow » pourrait donc être traduit en français par « gestion électronique des processus métier ». De façon plus pratique, le workflow décrit le circuit de validation, les tâches à accomplir entre les différents acteurs d'un processus, les délais, les modes de validation, et fournit à chacun des acteurs les informations nécessaires pour la réalisation de sa tâche. Pour un processus de publication en ligne par exemple, il s'agit de la modélisation des tâches de l'ensemble de la chaîne éditoriale.

Il permet généralement un suivi et identifie les acteurs en précisant leur rôle et la manière de le remplir au mieux.

1 - Définir un worflow :
* name: nom du workflow .
* osv: nom de l'objet .
* on_create: instancie en création .

2 - Définier une liste de noeuds :
* wkf_id
* flow_start
* flow_stop
* kind
- dummy (ne fait rien)
- function (appelle une methode objet )
- subflow (appelle un subworkflow)
* Action (= nom de methode)
- si kind est une “function” ou un “subflow”
* subflow_id
- si kind = “subflow”
- < name="subflow_id" search="[('name','=','account.invoice.basic')]">

3 - Définier une liste de transactions :
* Champs :
- act_from: id de l'activité source .
- act_to: id de activité destination .
- condition: expression python .
- signal: nom d'un bouton attendu .
- role_id: role necessaire pour l'execution de la transition .

** Exemple :
Commencez par créer un fichier nom_module_worflow.xml dans le dossier qui contient les .py et les vues que vous avez créer déja .
Dans la partie qui suit, on déclare les activités workflow où on spécifie l'id du workflow, la nature de l'activité ainsi que l'action qui doit s'exécuter .

< record model="workflow" id="account">
< field name="name">budget.account.basic< /field>
< field name="osv">budget.account< /field>
< field name="on_create">True< /field>
< /record>
< record model="workflow.activity" id="retour">
< field name="wkf_id" ref="account">
< field name="flow_start">True< /field>
< field name="name">draft< /field>
< field name="kind">function< /field>
< field name="action">budget_confirm()< /field>
< /record>


Ensuite on déclare les transactions, c'est ici que se manifeste le fonctionnement du workflow .

< record model="workflow.transition" id="valide_account">
< field name="act_from" ref="non_valide"/ >
< field name="act_to" ref="valide"/ >
< field name="signal">valider< /field>
< /record>


Dans la partie act_from, on mets l'activité à partir de laquelle le flux commence, et dans act_to ç'est là où mène le flux .

Enfin, voici un petit shéma explicatif qui résume le fonctionnement d'un workflow au sein d'une opération sur OpenERP .

1 comment:

  1. bonjour. je crois que vous y connaissez très bien sur openerp.
    Comment appliquer un workflow pour les anciens enregistrements openerp 7?
    J'ai créé un nouveau "workflow" qui s'appelle "stock.move.basic" pour l'objet "stock.move", tout fonctionne parfaitement . Mais lorsque j'ajoute de nouvelles activités et de nouvelles transitions dans le workflow, il y a un problème, le workflow marche pour les nouveaux enregistrements créés mais pour les anciens enregistrements rien ne fonctionne, les boutons du workflow ne font plus rien. Je voudrais savoir comment appliquer mon "workflow" sur tous mes enregistrements que ce soient ancien ou nouveau . Je vous remercie déjà pour vos réponses.

    ReplyDelete