Workflows, états et modèles
Un workflow est le graphe des tâches d'un élément (un plan, un asset) : chaque tâche attend celles qui la précèdent. Cette page explique comment une tâche change d'état, comment construire et modifier un workflow, et comment une modification se propage aux éléments déjà créés. La vue qui l'affiche est décrite dans Vue nodale.
Modèles et références
Un studio ne construit pas chaque plan à la main. Il définit des modèles (un modèle de plan, un modèle d'asset, un modèle de projet…) qui portent la structure, les propriétés, le workflow et les fichiers. Chaque objet créé à partir d'un modèle en est une référence : il reçoit une copie de tout ce que porte le modèle, et reste relié à lui.
- Le workflow d'un élément est celui de son modèle d'élément (Project Item Model). Les workflows ne se trouvent pas à la racine du studio : ils appartiennent à des éléments, donc à des projets.
- Sur un modèle, chaque propriété est en mode Local (chaque référence garde sa valeur) ou Global (la valeur du modèle s'impose à toutes les références). Voir Personnaliser Bernard.
- Les tâches d'un modèle ne « travaillent » pas : elles restent Waiting ou Aborted.
Les états d'une tâche
Une tâche a un des sept états suivants.
| État | Sens |
|---|---|
| Waiting | la tâche attend que ce qui la précède soit terminé |
| Ready | elle peut démarrer |
| WIP | quelqu'un travaille dessus (ou, pour une tâche script, elle s'exécute) |
| Pause | le travail est interrompu |
| Done | terminée |
| Aborted | annulée : la tâche est ignorée, comme si elle n'existait pas |
| Failed | échec d'une tâche script |
Tous les types de tâche n'ont pas tous les états :
| Type de tâche | Pour qui | États possibles |
|---|---|---|
| Task | le travail d'un artiste (temps passé, estimations, instructions) | tous sauf Failed |
| Task Validation | un point d'arrêt « go / no go » : un lead ou un superviseur valide | tous sauf Failed |
| Task Script | un travail fait par un poste, sans personne | tous sauf Pause |
Un compound n'a pas d'état que l'on choisit : son état est calculé (voir plus bas). Le workflow a une porte d'entrée (Input) et une porte de sortie (Output), créées avec lui.
Qui décide. Le serveur calcule l'état de chaque tâche, l'état résultant, la progression et le temps passé. Les règles liées à votre rôle (droits, assignation, corrections) sont vérifiées par l'application avant d'envoyer la demande. Si le serveur refuse une demande, l'affichage revient à l'état précédent.
Comment une tâche devient Ready
Vous n'avez pas à passer les tâches en Ready à la main : Bernard le fait en suivant les liens du workflow.
- Une tâche passe Ready quand toutes les tâches qui la précèdent directement sont terminées (Done) et qu'au moins une d'elles est vraiment Done. La première tâche d'un nouveau workflow est Ready tout de suite.
- Une tâche Aborted est transparente : si ce qui la précède est terminé, ses suivantes avancent.
- Si une tâche déjà Done est rouverte (Ready, WIP ou Pause), toutes les tâches qui la suivent repassent Waiting, même celles qui étaient Done. Quand elle redevient Done, ses suivantes redeviennent Ready.
- Des tâches en parallèle (deux branches qui partent de la même tâche) travaillent en même temps ; une tâche qui attend plusieurs branches est un goulot d'étranglement.
Approbations et retakes
Une correction (retake) est une note de type correction posée sur une tâche, depuis Add Correction or Note (clic droit sur la tâche) ou depuis une revue.
- Quand une correction arrive sur une tâche qui n'est pas en WIP, la tâche repasse Ready : une tâche Done se rouvre, et ses suivantes repassent Waiting. Fermer une correction ne change pas l'état.
- Tant qu'une correction est active, la tâche ne passe pas Done : l'artiste coche la correction pour dire qu'il l'a traitée.
- Une revue dans Bernard Review publie un verdict : Not Approved crée une correction (donc la tâche repasse Ready) ; Approved clôt les corrections et demande Done, une étape par approbation (la tâche de travail, puis la validation du lead, du superviseur…, sans jamais dépasser la tâche de travail suivante) ; Pending ne laisse qu'une note, sans changement d'état.
Voir aussi Notes.
Pause, WIP et temps passé
- Une seule tâche en WIP par personne. Passer une tâche en WIP met la précédente tâche en cours de la même personne en Pause.
- Quand vous ouvrez un fichier d'une tâche Ready ou Pause, Bernard demande « Do you want to change … state to WIP ? » et rappelle les instructions de la tâche (pas pour les scripts, les validations ni Bernard Review).
- Une tâche en WIP passe en Pause quand vous restez inactif, quand vous fermez Bernard (au démarrage suivant, Bernard propose de la remettre en WIP), quand votre connexion est perdue au-delà du délai d'inactivité du studio, ou quand ses assignés changent. Le menu de la zone de notification propose aussi Pause current tasks.
- À chaque sortie de WIP, la durée écoulée est ajoutée au temps passé de chaque assigné de la tâche. Les tâches script n'ont pas de temps passé humain.
État résultant, tâche en cours et progression
- État résultant d'un compound ou d'un workflow : Waiting s'il n'a pas de tâche ; sinon l'état commun si toutes les tâches (hors Aborted) sont dans le même état ; WIP si au moins une est WIP, Pause, Failed ou Done au milieu d'autres états ; sinon Ready. Le workflow recopie son état et sa progression sur l'élément : ce sont les colonnes du tableur.
- Tâche en cours : les tâches Ready, WIP, Pause ou Failed, et les tâches Waiting dont tout ce qui les précède est terminé. Plusieurs tâches peuvent être en cours en même temps (branches parallèles). Un compound a aussi sa tâche en cours, affichée dans Spreadsheet Multi.
- Progression : chaque tâche non annulée pèse la même part ; Done compte en entier, WIP et Pause pour moitié. Les tâches annulées ne comptent pas, ni dans la progression, ni dans le temps cumulé, ni dans la somme des budgets.
Changer l'état d'une tâche : ce qui peut vous bloquer
Vous changez l'état dans l'onglet Properties, dans le tableur, dans l'onglet Instructions (boutons WIP et Done), ou par un clic droit sur une sélection de tâches. Bernard affiche State Error (refus) ou State Warning avec « Do you want to continue anyway ? » dans les cas suivants.
| Situation | Message |
|---|---|
| tâche de modèle : seulement Waiting ou Aborted | « Warning You can't change the state on Model or Template » |
| vous n'êtes pas assigné et n'avez pas le droit Can modify the state of tasks assigned to others (override assignees) | « Warning you can't change this state because you are not assigned to the task » |
| Aborted sans le droit Can manually abort tasks | « Warning You can't change the state to 'aborted' because your role does not allow it » |
| WIP sur la tâche d'un autre | autorisé seulement s'il n'y a qu'un assigné et qu'il est en ligne |
| Done avec une correction active | « Warning: you can't change the state to Done because there is still active correction » |
| Done avec une checklist incomplète | « Warning: you can't change the state to Done because at least one of the checklist element is not checked: » et la liste ; un administrateur peut passer outre après confirmation |
| état d'un script en cours | « Please wait Script until Script finished for change State » |
Le serveur refuse aussi un état que le graphe ne permet pas (par exemple Done alors qu'une tâche précédente n'est pas terminée). Les droits sont réglés dans Rôles, droits et assignation.
Les tâches script
Une tâche Task Script est exécutée par un poste, sans intervention humaine. Ses propriétés : Command (la commande, une expression), Launch On (le poste), Task Priority, Log et Files.
- Pas de bouton « Run » : le script démarre quand la tâche passe Ready, automatiquement quand ses tâches précédentes sont terminées, ou à la main. Pour le relancer, remettez-la Ready.
- Quel poste l'exécute ? Si Launch On désigne un poste, c'est le Bernard ouvert sur ce poste, à condition que la tâche ait exactement un assigné. Si Launch On est vide (Assigned User's Computer), c'est le Bernard de l'assigné, sur son poste courant. Avec plusieurs assignés, ou si le poste est éteint, le script ne s'exécute pas et la tâche reste Ready, avec un avertissement. Le cas typique est un utilisateur « robot » seul dans son couple département × rôle.
- File d'attente : au plus 3 scripts en même temps par poste (Local Settings › Max Simultaneous Script). Les autres attendent par priorité (Task Priority, de 1 à 99 : la plus haute passe en premier).
- Résultat : la tâche passe WIP au démarrage. Un code de sortie 0 la passe Done (« Finished SuccessFully »), sinon Failed (« Failed with exit Code N »). Le Log garde la sortie du script, réduite aux dernières lignes.
- Arrêts : si Bernard se ferme ou si le poste perd sa connexion, les scripts en cours passent Failed.
Un script est un exemple d'automatisation propre au studio : Bernard ne livre pas de commande toute prête. Voir Scripts et API.
Actions, déclencheurs et événements
Une action (Action) est une commande que l'on lance sur des objets. Un déclencheur (Trigger) la lance quand une propriété change. Un événement (Event) la lance à une date.
Actions. Une action a une commande (une expression), une icône, un département (pour la ranger dans les menus), Read Access (qui la voit), Show Action Log et Start Up (lancée au démarrage de Bernard). Pour l'utiliser :
- Assignez-la à des objets : onglet Actions, bouton Assign actions (sur un modèle, elle vaut pour ses références). Il faut les droits Can assign actions et Can remove assigned actions.
- Lancez-la : clic droit sur la sélection (sous-menus par département) ou boutons de l'onglet Actions.
- Suivez-la dans la vue Action Log : « Running », « Success », « Failed ».
Trois actions s'exécutent en même temps au plus (Local Settings › Max Simultaneous Action). Une action réussit si elle n'écrit rien sur sa sortie d'erreur ; le code de sortie n'est pas regardé.
Déclencheurs. Réservé aux rôles qui ont le droit Can edit event triggers.
- Clic droit sur la propriété à surveiller › Edit Trigger. La fenêtre Triggers Edition on '…' s'ouvre.
- Create New Trigger, puis Add Condition : =, !=, >, >=, <, <= (dates et nombres), Changed, Contains (textes et listes).
- Choisissez l'action à lancer.
Plusieurs conditions fonctionnent en « OU » : la première remplie lance l'action. Une propriété qui a un déclencheur s'affiche en rouge. Sur un modèle, le déclencheur est recopié sur les références. Les propriétés surveillables sont les textes, dates, nombres, durées, booléens, listes, ainsi que l'état et la version.
Événements. Un événement lance une action à une date : Launch At, Launch For (des utilisateurs ou des rôles), Is Active, Launch Action, et Loop (Never, Every Day, Every Week, Every Hour).
Créer un workflow
Réservé aux administrateurs et aux rôles qui ont accès aux réglages de projet (Has access to projects settings).
Un workflow se construit sur un modèle d'élément : tous les éléments créés ensuite avec ce modèle l'auront.
- Dans la Tree View, ouvrez les Project Settings du projet (voir Project Settings).
- Clic droit sur Project Item Model › Create › Project Item Model. Donnez-lui un nom (par exemple « Shot », « Character ») et cliquez sur Create.
- Affichez la Vue nodale : un nœud Input et un nœud Output vides, avec la couleur des modèles.
- Dans le panneau Propriétés, réglez le nom, la couleur, l'icône et les estimations du modèle. Pour ajouter des propriétés, clic droit sur le modèle › Assign › Property.
- Cliquez sur le bouton Edit Workflow. La bordure change de couleur et les boutons Save et Cancel apparaissent.
- Créez les tâches : clic droit dans le fond de la vue › Create › Task (travail), Task Validation ou
Task Script, ou la touche
Tabsous le curseur. Les sous-menus Task Templates, Task Validation Templates et Task Script Templates proposent des tâches déjà préparées (département, rôle…). - Reliez les tâches : tirez d'un port de sortie (à droite) vers un port d'entrée (à gauche). Pour insérer une tâche au milieu d'un lien, déposez-la dessus. Les boucles sont refusées.
- Sur chaque tâche, vous pouvez déjà régler le département, le rôle attendu (Assign To), les estimations et les instructions : les éléments créés les recevront.
- Cliquez sur Save.
Ensuite, créez un élément avec ce modèle : il reçoit le workflow. Pour qu'une tâche ou un workflow d'un élément soit réutilisable, clic droit sur la tâche › Copy To Template (confirmation demandée) l'ajoute aux modèles de tâches.
Les compounds
Un compound regroupe les tâches d'une grande étape (Layout, Animation, Compositing…) : c'est un simple regroupement, les liens vont toujours de tâche à tâche, à travers ses bords. Il a un nom, un département et une couleur.
Créer un compound (en édition) :
- sélectionnez plusieurs tâches, puis clic droit › Create › Compound from selected items, ou
Ctrl+G; - ou clic droit › Create › Compound pour un compound vide.
Une fois créé :
- double-cliquez pour entrer dans le compound ; double-cliquez de nouveau (ou cliquez sur le nom du workflow principal) pour revenir ;
- sélectionnez le compound pour choisir son département et sa couleur dans le panneau Propriétés (la couleur du département peut servir de modèle) ;
- l'état du compound est calculé à partir de ses tâches (voir État résultant).
Limites : un compound ne peut pas contenir un autre compound, et la création depuis la sélection est refusée si la sélection contient déjà un compound ou une tâche déjà rangée dans un compound.
Modifier un workflow et propager le changement
Le workflow d'un élément est une copie du workflow de son modèle. Pour le modifier :
- Placez-vous sur le workflow d'un modèle, ou d'un élément : dans ce cas, Bernard prévient que tous les éléments du même modèle seront modifiés en même temps (« Warning, all '…' will be modified at the same time »).
- Cliquez sur Edit Workflow, faites vos changements, puis Save. Pour tout abandonner, Cancel.
Si quelqu'un d'autre édite déjà ce workflow, Bernard le signale et demande si vous voulez continuer.
La propagation. À l'enregistrement, Bernard applique le changement au modèle et à toutes ses références : création, modification et suppression des tâches et des liens, par lots. La fenêtre Workflow Propagation montre la progression, le débit et le temps restant, et propose Pause after current batch. Il est déconseillé de l'interrompre : les références non traitées restent en retard sur le modèle, et seul l'utilisateur qui a lancé la mise à jour peut la reprendre, au prochain démarrage de Bernard.
Ajouter une tâche à un workflow déjà en production. Une tâche ajoutée devant du travail terminé ferait repasser les éléments en arrière. Bernard choisit donc l'état de la nouvelle tâche pour chaque élément :
- si une tâche qui la suit est déjà Done, WIP, Pause ou Failed, la nouvelle tâche naît Aborted (elle est ignorée) ;
- sinon elle naît Waiting.
La fenêtre indique « Aborted on N reference(s) (work already started after it) » et « Waiting on N reference(s) ». Un élément terminé reste donc terminé. Pour activer la tâche sur un élément précis, passez-la de Aborted à Waiting sur cet élément (ou sur plusieurs en les sélectionnant ensemble).
Supprimer une tâche ou un compound du modèle le supprime des références ; les tâches suivantes sont réévaluées.
Propager une valeur. Après avoir modifié une propriété sur un modèle, clic droit sur la propriété › Set this value on all references applique la valeur à toutes les références (réservé aux rôles qui ont Can propagate property values to all child references). Bernard annonce le nombre d'éléments touchés et demande confirmation.
Templates de projet
Un template de projet (Project Template) est un projet-patron : créer un projet depuis un template copie sa structure, ses réglages, ses modèles et ses workflows, mais pas ses éléments de production (ni leurs fichiers).
- Créer un template (administrateurs) : dans la Tree View, clic droit sur un projet › Copy To Template, puis confirmez. Le template porte le nom du projet suivi de « Template ».
- Créer un projet depuis un template : clic droit sur Project › Create, puis choisissez le template dans la fenêtre de création. Le projet garde les couleurs, les images et les workflows du template.
- Modifier un template : ouvrez-le comme un projet et changez ses workflows ou ses réglages ; les projets créés ensuite en profitent. Les projets déjà créés ne sont pas modifiés.
- Supprimer un template : dans les Root Settings, dossier des templates de projet, Delete.
Sans template, le projet est créé à partir du modèle de projet par défaut.
Les instructions
Une instruction est une consigne affichée sur une tâche : une ligne de texte, éventuellement à cocher, avec des images ou des GIF animés. Les instructions orientent l'artiste, et servent de liste de contrôle à celui qui valide.
- Elles existent sur les tâches de travail et de validation. Pas sur les tâches script, les compounds ni les éléments.
- Elles se lisent dans l'onglet Instructions du panneau Propriétés. Chaque personne coche ce qu'elle a fait ; Bernard garde qui a coché quoi.
Créer ou modifier des instructions (rôles qui ont le droit de créer ou supprimer des instructions, et administrateurs) :
- Sélectionnez la tâche (sur le modèle du workflow pour que tous les éléments les reçoivent).
- Dans l'onglet Instructions, ouvrez le menu du bouton d'édition (Edition Mode) : Edit modifie les instructions de cette tâche, Edit Model celles du modèle.
- Pour chaque instruction, écrivez le texte (« Write Instruction ... »), activez Is Checkable si elle doit être cochée, et glissez-déposez une image ou un GIF si besoin. Les flèches Move Up et Move Down changent l'ordre.
- Validez avec le bouton OK.
Les boutons de copie permettent de Copy Instructions, Copy Text et Paste Instructions ; un clic droit propose Clear All Instructions. Add Correction crée une correction depuis l'onglet.
Sur une tâche de validation, le lead peut marquer chaque instruction comme correcte ou non, puis ajouter une correction : elle est rattachée à une tâche précédente ou à tout le compound, avec une catégorie de correction (voir Catégories), et notifie les rôles prévus par cette catégorie.
Une tâche peut exiger que toutes ses instructions soient cochées avant de passer Done (voir Changer l'état). Pour créer beaucoup d'instructions d'un coup, voir Instructions From Table dans Instructions.