Workflows, estados y plantillas
Un workflow es el grafo de las tareas de un elemento (un plano, un asset): cada tarea espera a las que la preceden. Esta página explica cómo cambia de estado una tarea, cómo construir y modificar un workflow, y cómo se propaga una modificación a los elementos ya creados. La vista que lo muestra se describe en Vista de nodos.
Plantillas y referencias
Un estudio no construye cada plano a mano. Define plantillas (una plantilla de plano, una plantilla de asset, una plantilla de proyecto…) que contienen la estructura, las propiedades, el workflow y los archivos. Cada objeto creado a partir de una plantilla es una referencia de ella: recibe una copia de todo lo que contiene la plantilla, y sigue vinculado a ella.
- El workflow de un elemento es el de su plantilla de elemento (Project Item Model). Los workflows no se encuentran en la raíz del estudio: pertenecen a elementos, y por tanto a proyectos.
- En una plantilla, cada propiedad está en modo Local (cada referencia conserva su valor) o Global (el valor de la plantilla se impone a todas las referencias). Ver Personalizar Bernard.
- Las tareas de una plantilla no «trabajan»: permanecen en Waiting o Aborted.
Los estados de una tarea
Una tarea tiene uno de los siete estados siguientes.
| Estado | Significado |
|---|---|
| Waiting | la tarea espera a que termine lo que la precede |
| Ready | puede empezar |
| WIP | alguien trabaja en ella (o, en una tarea de script, se está ejecutando) |
| Pause | el trabajo está interrumpido |
| Done | terminada |
| Aborted | cancelada: la tarea se ignora, como si no existiera |
| Failed | fallo de una tarea de script |
No todos los tipos de tarea tienen todos los estados:
| Tipo de tarea | Para quién | Estados posibles |
|---|---|---|
| Task | el trabajo de un artista (tiempo invertido, estimaciones, instrucciones) | todos salvo Failed |
| Task Validation | un punto de parada «go / no go»: un lead o un supervisor valida | todos salvo Failed |
| Task Script | un trabajo hecho por un puesto, sin nadie | todos salvo Pause |
Un compound no tiene un estado que se elija: su estado se calcula (ver más abajo). El workflow tiene una puerta de entrada (Input) y una puerta de salida (Output), creadas con él.
Quién decide. El servidor calcula el estado de cada tarea, el estado resultante, el progreso y el tiempo invertido. Las reglas ligadas a tu rol (permisos, asignación, correcciones) las comprueba la aplicación antes de enviar la solicitud. Si el servidor rechaza una solicitud, la pantalla vuelve al estado anterior.
Cómo pasa una tarea a Ready
No tienes que pasar las tareas a Ready a mano: Bernard lo hace siguiendo los enlaces del workflow.
- Una tarea pasa a Ready cuando todas las tareas que la preceden directamente están terminadas (Done) y al menos una de ellas está realmente Done. La primera tarea de un workflow nuevo está Ready de inmediato.
- Una tarea Aborted es transparente: si lo que la precede está terminado, sus siguientes avanzan.
- Si se reabre una tarea que ya estaba Done (Ready, WIP o Pause), todas las tareas que la siguen vuelven a Waiting, incluso las que estaban Done. Cuando vuelve a estar Done, sus siguientes vuelven a estar Ready.
- Las tareas en paralelo (dos ramas que parten de la misma tarea) trabajan al mismo tiempo; una tarea que espera a varias ramas es un cuello de botella.
Aprobaciones y retakes
Una corrección (retake) es una nota de tipo corrección puesta en una tarea, desde Add Correction or Note (clic derecho en la tarea) o desde una revisión.
- Cuando llega una corrección a una tarea que no está en WIP, la tarea vuelve a Ready: una tarea Done se reabre, y sus siguientes vuelven a Waiting. Cerrar una corrección no cambia el estado.
- Mientras una corrección esté activa, la tarea no pasa a Done: el artista marca la corrección para decir que la ha tratado.
- Una revisión en Bernard Review publica un veredicto: Not Approved crea una corrección (así que la tarea vuelve a Ready); Approved cierra las correcciones y pide Done, una etapa por aprobación (la tarea de trabajo, luego la validación del lead, del supervisor…, sin pasar nunca de la siguiente tarea de trabajo); Pending solo deja una nota, sin cambio de estado.
Ver también Notas.
Pause, WIP y tiempo invertido
- Una sola tarea en WIP por persona. Pasar una tarea a WIP pone en Pause la tarea en curso anterior de la misma persona.
- Cuando abres un archivo de una tarea Ready o Pause, Bernard pregunta «Do you want to change … state to WIP ?» y recuerda las instrucciones de la tarea (no para los scripts, las validaciones ni Bernard Review).
- Una tarea en WIP pasa a Pause cuando te quedas inactivo, cuando cierras Bernard (en el siguiente arranque, Bernard propone volver a ponerla en WIP), cuando se pierde tu conexión más allá del tiempo de inactividad del estudio, o cuando cambian sus asignados. El menú del área de notificación también ofrece Pause current tasks.
- Cada vez que sale de WIP, la duración transcurrida se suma al tiempo invertido de cada asignado de la tarea. Las tareas de script no tienen tiempo invertido humano.
Estado resultante, tarea en curso y progreso
- Estado resultante de un compound o de un workflow: Waiting si no tiene tareas; si no, el estado común si todas las tareas (salvo Aborted) están en el mismo estado; WIP si al menos una está en WIP, Pause, Failed o Done entre otros estados; si no, Ready. El workflow copia su estado y su progreso en el elemento: son las columnas de la hoja de cálculo.
- Tarea en curso: las tareas Ready, WIP, Pause o Failed, y las tareas Waiting cuyas predecesoras están todas terminadas. Puede haber varias tareas en curso al mismo tiempo (ramas paralelas). Un compound también tiene su tarea en curso, que se muestra en Spreadsheet Multi.
- Progreso: cada tarea no cancelada pesa la misma parte; Done cuenta entera, WIP y Pause cuentan la mitad. Las tareas canceladas no cuentan, ni en el progreso, ni en el tiempo acumulado, ni en la suma de los presupuestos.
Cambiar el estado de una tarea: lo que puede bloquearte
Cambias el estado en la pestaña Properties, en la hoja de cálculo, en la pestaña Instructions (botones WIP y Done), o con un clic derecho en una selección de tareas. Bernard muestra State Error (rechazo) o State Warning con «Do you want to continue anyway ?» en los casos siguientes.
| Situación | Mensaje |
|---|---|
| tarea de plantilla: solo Waiting o Aborted | «Warning You can't change the state on Model or Template» |
| no estás asignado y no tienes el permiso 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 sin el permiso Can manually abort tasks | «Warning You can't change the state to 'aborted' because your role does not allow it» |
| WIP en la tarea de otro | permitido solo si hay un único asignado y está en línea |
| Done con una corrección activa | «Warning: you can't change the state to Done because there is still active correction» |
| Done con una checklist incompleta | «Warning: you can't change the state to Done because at least one of the checklist element is not checked: » y la lista; un administrador puede saltárselo tras confirmar |
| estado de un script en curso | «Please wait Script until Script finished for change State» |
El servidor también rechaza un estado que el grafo no permite (por ejemplo Done cuando una tarea anterior no está terminada). Los permisos se configuran en Roles, permisos y asignación.
Las tareas de script
Una tarea Task Script la ejecuta un puesto, sin intervención humana. Sus propiedades: Command (la orden, una expresión), Launch On (el puesto), Task Priority, Log y Files.
- No hay botón «Run»: el script arranca cuando la tarea pasa a Ready, automáticamente cuando terminan sus tareas anteriores, o a mano. Para volver a lanzarlo, vuelve a poner la tarea en Ready.
- ¿Qué puesto lo ejecuta? Si Launch On designa un puesto, es el Bernard abierto en ese puesto, siempre que la tarea tenga exactamente un asignado. Si Launch On está vacío (Assigned User's Computer), es el Bernard del asignado, en su puesto actual. Con varios asignados, o si el puesto está apagado, el script no se ejecuta y la tarea se queda en Ready, con un aviso. El caso típico es un usuario «robot» solo en su pareja departamento × rol.
- Cola: como máximo 3 scripts a la vez por puesto (Local Settings › Max Simultaneous Script). Los demás esperan por prioridad (Task Priority, de 1 a 99: la más alta pasa primero).
- Resultado: la tarea pasa a WIP al arrancar. Un código de salida 0 la pasa a Done («Finished SuccessFully»), si no a Failed («Failed with exit Code N»). El Log guarda la salida del script, reducida a las últimas líneas.
- Paradas: si Bernard se cierra o el puesto pierde su conexión, los scripts en curso pasan a Failed.
Un script es un ejemplo de automatización propia del estudio: Bernard no entrega ninguna orden ya preparada. Ver Scripts y API.
Acciones, disparadores y eventos
Una acción (Action) es una orden que se lanza sobre objetos. Un disparador (Trigger) la lanza cuando cambia una propiedad. Un evento (Event) la lanza en una fecha.
Acciones. Una acción tiene una orden (una expresión), un icono, un departamento (para clasificarla en los menús), Read Access (quién la ve), Show Action Log y Start Up (se lanza al arrancar Bernard). Para usarla:
- Asígnala a objetos: pestaña Actions, botón Assign actions (en una plantilla, vale para sus referencias). Hacen falta los permisos Can assign actions y Can remove assigned actions.
- Lánzala: clic derecho en la selección (submenús por departamento) o botones de la pestaña Actions.
- Síguela en la vista Action Log: «Running», «Success», «Failed».
Como máximo se ejecutan tres acciones a la vez (Local Settings › Max Simultaneous Action). Una acción tiene éxito si no escribe nada en su salida de error; no se mira el código de salida.
Disparadores. Reservado a los roles que tienen el permiso Can edit event triggers.
- Clic derecho en la propiedad que se quiere vigilar › Edit Trigger. Se abre la ventana Triggers Edition on '…'.
- Create New Trigger, y luego Add Condition: =, !=, >, >=, <, <= (fechas y números), Changed, Contains (textos y listas).
- Elige la acción que se lanzará.
Varias condiciones funcionan como un «O»: la primera que se cumple lanza la acción. Una propiedad que tiene un disparador se muestra en rojo. En una plantilla, el disparador se copia en las referencias. Las propiedades vigilables son los textos, fechas, números, duraciones, booleanos, listas, así como el estado y la versión.
Eventos. Un evento lanza una acción en una fecha: Launch At, Launch For (usuarios o roles), Is Active, Launch Action, y Loop (Never, Every Day, Every Week, Every Hour).
Crear un workflow
Reservado a los administradores y a los roles que tienen acceso a los ajustes de proyecto (Has access to projects settings).
Un workflow se construye sobre una plantilla de elemento: todos los elementos que se creen después con esa plantilla lo tendrán.
- En la Tree View, abre los Project Settings del proyecto (ver Project Settings).
- Clic derecho en Project Item Model › Create › Project Item Model. Ponle un nombre (por ejemplo «Shot», «Character») y haz clic en Create.
- Muestra la Vista de nodos: un nodo Input y un nodo Output vacíos, con el color de las plantillas.
- En el panel de Propiedades, ajusta el nombre, el color, el icono y las estimaciones de la plantilla. Para añadir propiedades, clic derecho en la plantilla › Assign › Property.
- Haz clic en el botón Edit Workflow. El borde cambia de color y aparecen los botones Save y Cancel.
- Crea las tareas: clic derecho en el fondo de la vista › Create › Task (trabajo), Task Validation o
Task Script, o la tecla
Tabbajo el cursor. Los submenús Task Templates, Task Validation Templates y Task Script Templates ofrecen tareas ya preparadas (departamento, rol…). - Enlaza las tareas: arrastra desde un puerto de salida (a la derecha) hasta un puerto de entrada (a la izquierda). Para insertar una tarea en medio de un enlace, suéltala encima. Los bucles se rechazan.
- En cada tarea, ya puedes ajustar el departamento, el rol esperado (Assign To), las estimaciones y las instrucciones: los elementos creados las recibirán.
- Haz clic en Save.
Después, crea un elemento con esa plantilla: recibe el workflow. Para que una tarea o un workflow de un elemento sea reutilizable, clic derecho en la tarea › Copy To Template (se pide confirmación) la añade a las plantillas de tareas.
Los compounds
Un compound agrupa las tareas de una gran etapa (Layout, Animation, Compositing…): es una simple agrupación, los enlaces siguen yendo de tarea a tarea, a través de sus bordes. Tiene un nombre, un departamento y un color.
Crear un compound (en edición):
- selecciona varias tareas, y luego clic derecho › Create › Compound from selected items, o
Ctrl+G; - o clic derecho › Create › Compound para un compound vacío.
Una vez creado:
- haz doble clic para entrar en el compound; haz doble clic de nuevo (o haz clic en el nombre del workflow principal) para volver;
- selecciona el compound para elegir su departamento y su color en el panel de Propiedades (el color del departamento puede servir de plantilla);
- el estado del compound se calcula a partir de sus tareas (ver Estado resultante).
Límites: un compound no puede contener otro compound, y la creación a partir de la selección se rechaza si la selección ya contiene un compound o una tarea ya incluida en un compound.
Modificar un workflow y propagar el cambio
El workflow de un elemento es una copia del workflow de su plantilla. Para modificarlo:
- Colócate en el workflow de una plantilla, o de un elemento: en ese caso, Bernard avisa de que todos los elementos de la misma plantilla se modificarán a la vez («Warning, all '…' will be modified at the same time»).
- Haz clic en Edit Workflow, haz tus cambios y luego Save. Para abandonarlo todo, Cancel.
Si otra persona ya está editando ese workflow, Bernard lo indica y pregunta si quieres continuar.
La propagación. Al guardar, Bernard aplica el cambio a la plantilla y a todas sus referencias: creación, modificación y eliminación de tareas y enlaces, por lotes. La ventana Workflow Propagation muestra el progreso, el caudal y el tiempo restante, y ofrece Pause after current batch. No se aconseja interrumpirla: las referencias sin procesar se quedan por detrás de la plantilla, y solo el usuario que lanzó la actualización puede reanudarla, en el siguiente arranque de Bernard.
Añadir una tarea a un workflow que ya está en producción. Una tarea añadida delante de trabajo terminado haría retroceder a los elementos. Por eso Bernard elige el estado de la nueva tarea para cada elemento:
- si una tarea que la sigue ya está Done, WIP, Pause o Failed, la nueva tarea nace Aborted (se ignora);
- si no, nace Waiting.
La ventana indica «Aborted on N reference(s) (work already started after it)» y «Waiting on N reference(s)». Así, un elemento terminado sigue terminado. Para activar la tarea en un elemento concreto, pásala de Aborted a Waiting en ese elemento (o en varios seleccionándolos a la vez).
Eliminar una tarea o un compound de la plantilla lo elimina de las referencias; las tareas siguientes se reevalúan.
Propagar un valor. Tras modificar una propiedad en una plantilla, clic derecho en la propiedad › Set this value on all references aplica el valor a todas las referencias (reservado a los roles que tienen Can propagate property values to all child references). Bernard anuncia el número de elementos afectados y pide confirmación.
Plantillas de proyecto
Una plantilla de proyecto (Project Template) es un proyecto modelo: crear un proyecto desde una plantilla copia su estructura, sus ajustes, sus plantillas y sus workflows, pero no sus elementos de producción (ni sus archivos).
- Crear una plantilla (administradores): en la Tree View, clic derecho en un proyecto › Copy To Template, y confirma. La plantilla lleva el nombre del proyecto seguido de «Template».
- Crear un proyecto desde una plantilla: clic derecho en Project › Create, y elige la plantilla en la ventana de creación. El proyecto conserva los colores, las imágenes y los workflows de la plantilla.
- Modificar una plantilla: ábrela como un proyecto y cambia sus workflows o sus ajustes; los proyectos que se creen después se benefician. Los proyectos ya creados no se modifican.
- Eliminar una plantilla: en los Root Settings, carpeta de las plantillas de proyecto, Delete.
Sin plantilla, el proyecto se crea a partir de la plantilla de proyecto por defecto.
Las instrucciones
Una instrucción es una consigna que se muestra en una tarea: una línea de texto, que puede ser marcable, con imágenes o GIF animados. Las instrucciones orientan al artista, y sirven de lista de control a quien valida.
- Existen en las tareas de trabajo y de validación. No en las tareas de script, los compounds ni los elementos.
- Se leen en la pestaña Instructions del panel de Propiedades. Cada persona marca lo que ha hecho; Bernard guarda quién marcó qué.
Crear o modificar instrucciones (roles que tienen el permiso de crear o eliminar instrucciones, y administradores):
- Selecciona la tarea (en la plantilla del workflow para que todos los elementos las reciban).
- En la pestaña Instructions, abre el menú del botón de edición (Edition Mode): Edit modifica las instrucciones de esa tarea, Edit Model las de la plantilla.
- Para cada instrucción, escribe el texto («Write Instruction ...»), activa Is Checkable si debe poder marcarse, y arrastra y suelta una imagen o un GIF si hace falta. Las flechas Move Up y Move Down cambian el orden.
- Valida con el botón OK.
Los botones de copia permiten Copy Instructions, Copy Text y Paste Instructions; un clic derecho ofrece Clear All Instructions. Add Correction crea una corrección desde la pestaña.
En una tarea de validación, el lead puede marcar cada instrucción como correcta o no, y luego añadir una corrección: se asocia a una tarea anterior o a todo el compound, con una categoría de corrección (ver Categorías), y notifica a los roles previstos por esa categoría.
Una tarea puede exigir que todas sus instrucciones estén marcadas antes de pasar a Done (ver Cambiar el estado). Para crear muchas instrucciones de una vez, ver Instructions From Table en Instrucciones.