doc/book/fr/06-define-workflows.fr.txt
author Sylvain Thénault <sylvain.thenault@logilab.fr>
Fri, 25 Sep 2009 11:27:01 +0200
changeset 3473 d8bc02158efc
parent 3322 a522f86ab617
permissions -rw-r--r--
[rtags] ease overriding
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
     1
.. -*- coding: utf-8 -*-
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
     2
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
     3
Définition de workflow
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
     4
======================
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
     5
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
     6
Avant-propos
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
     7
------------
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
     8
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
     9
Un worflow décrit comment les entités vont être utilisés à travers différents états. Nous avons donc pour un workflow donné un ensemble d'états, un "graphe de transition" c'est-à-dire la liste des transitions possibles d'un état à un autre.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    10
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    11
Nous allons définir ici un simple workflow pour l'exemple du blog avec seulement deux états: `en attente` et `publié`. Il est nécessaire d'avoir préalablement créé une application simple *CubicWeb* en dix minutes (voir :ref:`BlogFiveMinutes`).
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    12
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    13
Mise en place du workflow
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    14
-------------------------
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    15
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    16
Nous allons créer un workflow pour contrôler la qualité des BlogEntry soumis à l'instance. Lorsque un BlogEntry est créé par un utilisateur, son état doit être `en attente`. Pour être visible par tous, il doit être ensuite mis à l'état `publié`. Pour le changement d'état d'`en attente` à `publié`, nous avons besoin d'une transition que nous appellerons `approuve_blogentry`.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    17
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    18
Un état BlogEntry ne doit pas pouvoir être modifiable par les utilisateurs. Nous allons donc créé un groupe de modération `moderateurs` et ce groupe aura les permissions idoines pour publier un BlogEntry.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    19
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    20
Il existe deux manières de créer un workflow: depuis l'interface utilisateur ou en le définissant dans le fichier ``migration/postcreate.py``.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    21
Ce script est exécuté à chaque lancement de la commande ``cubicweb-ctl db-init``.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    22
Nous encourageons vivement la création dans ``migration/postcreate.py`` que nous allons vous montrer ici. Lire `Sous le capot`_ pour en comprendre les raisons.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    23
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    24
L'état d'une entité est sauvegardé par l'attribut `in_state` qui peut être ajouté à votre schéma d'entité par deux façons:
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    25
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    26
* héritage direct en utilisant la classe `cubicweb.schema.WorkflowableEntityType`
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    27
* par délégation en utilisant `cubicweb.schema.make_worflowable` (utilisable comme un décorateur également)
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    28
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    29
Pour notre exemple de BlogEntry, nous devons avoir:
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    30
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    31
.. sourcecode:: python
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    32
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    33
  from cubicweb.schema import WorkflowableEntityType
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    34
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    35
  class BlogEntry(EntityType, WorkflowableEntityType):
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    36
      ...
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    37
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    38
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    39
Création des états, transitions et les permissions de groupe
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    40
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    41
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    42
Le script ``postcreate.py`` est exécuté dans un environnement spécial où plusieurs primitives *CubicWeb* peuvent être utilsées.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    43
Elles sont toutes définies dans ``class ServerMigrationHelper``.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    44
Nous allons maintenant voir dans le prochain example celles utilisées pour créer un workflow.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    45
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    46
Pour définir notre workflow pour BlogDemo, veuillez ajouter les lignes suivantes au script ``migration/postcreate.py``:
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    47
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    48
.. sourcecode:: python
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    49
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    50
  _ = unicode
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    51
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    52
  moderators = add_entity('CWGroup', name=u"modérateurs")
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    53
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    54
Cela va ajouter le groupe utilisateur `moderators`.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    55
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    56
.. sourcecode:: python
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    57
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    58
  wf = add_workflow(u'une description succincte de votre workflow', 'BlogEntry')
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    59
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    60
Ceci va premièrement instancier un nouvel objet workflow avec une description sommaire mais pertinente et le type d'entité concerné (un tuple pour être utilisé pour des valeurs multiples).
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    61
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    62
.. sourcecode:: python
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    63
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    64
  submitted = wf.add_state(_('submitted'), initial=True)
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    65
  published = wf.add_state(_('published'))
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    66
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    67
``add_state`` attend comme premier argument le nom de l'état que vous voulez créer et un argument optionnel pour signifier si c'est l'état initial supposé pour ce type d'entité.
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    68
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    69
.. sourcecode:: python
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    70
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    71
  wf.add_transition(_('approuve_blogentry'), (submitted,), published, ('moderators', 'managers'),)
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    72
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    73
``add_transition`` attend:
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    74
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    75
  * comme premier argument le nom de la transition
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    76
  * ensuite la liste des états pour lesquels les transitions peuvent être tirées,
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    77
  * l'état attendu en fin de transition,
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    78
  * et les permissions
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    79
    (c'est-à-dire la liste des goupes utilisateurs qui peuvnet appliquer la transition; l'utilisateur devant appartenir à l'un des groupes listés pour être autoriser à exécuter l'action).
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    80
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    81
.. sourcecode:: python
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    82
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    83
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    84
  checkpoint()
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    85
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    86
.. note::
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    87
  Dans le script de création d'un workflow, penser à mettre `_()` autour des noms d'états et de transitions pour que ceux si soient pris en compte par les scripts de gestion des catalogues i18n.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    88
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    89
En complément de condition sur des groupes utilisateur dont l'utilisateur doit appartenir à l'in d'entre eux, vous pouvez utiliser une RQL condition.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    90
Dans ce cas, l'utilisateur peut seulement exécuter une action si les deux conditions sont satisfaites.
0
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    91
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    92
Pour la condition RQL sur une transition, on peut y mettre les substitutions suivantes :
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    93
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    94
* `%(eid)s`, eid de l'objet
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    95
* `%(ueid)s`, eid de l'utilisateur qui fait la requête
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    96
* `%(seid)s`, eid de l'état courant de l'objet
b97547f5f1fa Showtime !
Adrien Di Mascio <Adrien.DiMascio@logilab.fr>
parents:
diff changeset
    97
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
    98
.. image:: ../../images/03-transitions-view.en.png
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
    99
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   100
Vous pouvez remarqué que dans la boîte d'action d'un BlogEntry, l'état est maintenant listé ainsi que les possibles transitions définis pour l'état en cours dans le workflow. Les transitions ne sont seulement affichées pour les utilisateurs ayant les bonnes permissions.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   101
Dans notre exemple, la transition `approuve_blogentry` sera seulement affichée pour les utilisateurs appartenant au groupe `moderators` or `managers`.
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   102
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   103
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   104
Sous le capot
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   105
~~~~~~~~~~~~~
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   106
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   107
Un workflow est une collection d'entités de type `State`` et ``Transition`` qui sont des types d'entités standards de *CubicWeb*.
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   108
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   109
Par exemple, les lignes précédentes:
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   110
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   111
.. sourcecode:: python
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   112
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   113
  submitted = wf.add_state(_('en attente'), initial=True)
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   114
  published = wf.add_state(_('publié'))
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   115
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   116
vont créé deux entités de type ``State``, l'une avec le nom 'submitted' et l'autre avec le nom 'published'. Tandis que:
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   117
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   118
.. sourcecode:: python
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   119
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   120
  wf.add_transition(_('approuve_blogentry'), (submitted,), published, ('moderators', 'managers'),)
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   121
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   122
va créé une entité de type ``Transition`` avec le nom `approuve_blogentry` qui sera relié aux entités ``State`` créées précédemment.
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   123
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   124
Dès lors, nous pouvons utiliser l'interface d'administration pour ces opérations. Mais ce n'est pas recommandé à cause de la complexité superflue et du fait que ces changements ne seront locaux qu'à cette instance.
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   125
3322
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   126
En effet, si vous créez les états et les transitions à travers l'interface utilisateur, la prochaine initialisation de la base de données vous oblige à recréer toutes les entités.
a522f86ab617 [D] book: define a workflow
Julien Jehannet <julien.jehannet@logilab.fr>
parents: 1398
diff changeset
   127
L'interface utilisateur devrait être seulement connu par vous pour la visualisation des états et transitions, mais ce n'est pas celle appropriée pour définir vos workflows applicatifs.
71
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   128
69a4bf8f5e49 Moved content from tutoriel to introduction and to wrokflow chapter.
Sandrine Ribeau <sandrine.ribeau@logilab.fr>
parents: 50
diff changeset
   129