# Workflow (Cycle de vie)

Le cycle de vie (workflow) permet de gérer la vie d'un Smart Element en lui imposant un ensemble d'étapes pour aller de sa création jusqu'à sa fin (moment à partir duquel le Smart Element n'évolue plus).

# Vocabulaire

Les éléments de vocabulaire utilisés dans la définition d'un cycle de vie sont les suivants :

L'étape : c'est un moment clef de la vie Smart Element.
Elle peut être caractérisée par une activité ou un état.

L'activité : Elle désigne ce qui doit être fait sur un Smart Element pour une étape donnée.

L'état : Il désigne le statut du Smart Element.
On parle d'état lorsque le Smart Element est inerte, soit parce que l'on consulte d'anciennes révisions du Smart Element soit parce qu'on est sur un état final. Il est à noter qu'ici, final ne désigne pas forcément un état en bout de cycle, mais plutôt un état pour lequel il n'y a rien à faire. Dans notre exemple, diffusé est un état final, sans activité, car le Smart Element reste inerte, même s'il finira à terme par être archivé.

On peut résumer ces concepts comme suit :

Pour une étape donnée,
l'état désigne comment le Smart Element est arrivé à cette étape
l'activité désigne ce qui doit être fait.

# Définition du cycle de vie

Un cycle de vie est structuré au moyen d'une Smart Structure de workflow et d'un Smart Element de workflow.

La Smart Structure de workflow permet de spécifier :

  • le graphe du cycle :
    • la liste des étapes,
    • la liste des méthodes déclenchées par chaque transition,
  • les Smart Fields spécifiques au cycle. Ces Smart Fields peuvent être utilisés dans les traitements des transitions et sont différents pour chaque instance de cycle de vie.
  • les paramètres de Smart Structures qui seront utilisables lors des traitements spécifiques liés aux cycles : pour chaque étape et chaque transition, un ensemble de paramètres est généré à partir de la structure.

Le Smart Element de workflow permet de spécifier le paramétrage :

  • des minuteurs, mails, etc. déclenchés à chaque étape ou transition
  • des acteurs et de leurs droits au fil des différentes étapes du cycle

Généralement une Smart Structure de workflow ne produit qu'un seul Smart Element workflow. Ce Smart Element workflow est ensuite utilisé pour gérer la vie de tous les Smart Elements d'une Smart Structure. Il est toutefois possible de créer plusieurs Smart Elements workflow issus d'une même Smart Structure avec des paramétrages différents. Ils auront en commun la définition du cycle mais pourront avoir des paramétrages différents. Ainsi, par exemple :

  • sur une étape E1,
    • un courriel sera envoyé au directeur pour le cycle C1
    • un courriel sera envoyé au contrôleur pour le cycle C2.

De plus chacun des Smart Elements workflow possède sa propre définition de droits. Ainsi, ce ne sont pas les mêmes acteurs qui jouent les différents rôles de contrôleur, ou de rédacteur.

# Les transitions

Un type de transition est composé  :

Lors de l'utilisation de l'IHM, une transition se déroule en plusieurs transactions :

  1. L'utilisateur demande la liste des transitions disponibles. Pour chaque transition :

    1. Anakeen Platform vérifie que l'utilisateur est autorisé à effectuer cette transition
    2. Anakeen Platform vérifie que les conditions préalables à la transition sont remplies (m0) :
      • si les conditions sont remplies, la transition est disponible
      • sinon, le message d'erreur est disponible au clic et au survol de la transition, et cette dernière est grisée

    Processus d'affichage du menu des transitions

  2. L'utilisateur clique sur une des transitions :

    1. Si une confirmation de passage de transition ou des informations de transition sont requis, une IHM est présentée pour les demander (dans le cas contraire, on passe directement au point suivant) :

      Processus de demande des paramètres

    2. la transition à proprement parler est lancée :

      Processus de transition

# Précondition m0

m0 fait référence à une méthode de la classe de workflow. Cette méthode sert à déterminer si le Smart Element est tel qu'il permet d'envisager la transition.

C'est la toute première méthode appelée lors d'une demande de transition.

En cas d'erreur, la transition est abandonnée, et le message d'erreur est retourné à l'utilisateur.

Attention : ce traitement est déclenché lors de l'affichage de la liste des transition et à chaque passage de transition, il peut donc être déclenché assez souvent et il faut lui réserver des analyses peu consommatrices en ressources.

# Informations de transition ask

Les informations de transition référencent des paramètres ou des Smart Fields du cycle de vie, qui sont demandés à l'utilisateur lors de la transition. Ils doivent être définis sur la Smart Structure de cycle de vie, et référencés dans la transition au moyen de la clé ask. Cette clé contient un tableau des identifiants de tous les paramètres à utiliser.

Comme dans un Smart Element, l'interface correspondant à ces paramètres sera générée par Anakeen Platform; les paramètres sont demandés par l'intermédiaire d'une fenêtre modale.

# Confirmation nr

si nr n'est pas positionné à true, alors une confirmation est demandée. Cette confirmation demande la raison de la transition. Cette raison est facultative.

Cette raison est affichée dans la même fenêtre que les informations de transition. Elle est enregistrée dans l'historique du Smart Element.

# Condition m1

m1fait référence à une méthode de la classe de workflow. Cette méthode sert à modifier le Smart Element juste avant le changement d'état. C'est le Smart Element tel qu'il est à l'issue de la méthode m1 qui sera sauvegardé dans l'historique du Smart Element.

Puisque m1 est appelée après la demande des informations de transition, elle peut servir à valider les valeurs saisies par l'utilisateur.

# Post-traitement m2

m2 fait référence à une méthode de la classe de workflow. Cette méthode sert à modifier le Smart Element juste après le changement d'état. C'est le Smart Element tel qu'il est à la suite de m2 qui sera soumis aux minuteurs et envoyé par mail.

Puisque m2 intervient après le changement d'état, cette méthode n'est pas bloquante. Aussi, retourner un message n'interrompt pas le processus (mais le message d'information sera bien affiché à l'utilisateur à l'issue de la transition).

# Traitement final m3

m3 fait référence à une méthode de la classe de workflow. Cette méthode est la dernière exécutée au cours de la transition (c'est à dire qu'elle intervient après les différents traitements automatiques effectués par Anakeen Platform).

Elle n'est utile que dans de très rares cas, et est en particulier utilisée lorsqu'une seconde transition doit être déclenchée automatiquement à l'issue de la première.

# Le graphe

Le graphe est constitué d'un ensemble de triplets

  • État de départ
  • État d'arrivée
  • Une transition