Maestro
Un motor de orquestación de flujos de trabajo completo para Drupal que permite la creación, gestión y ejecución de plantillas de flujo de trabajo complejas con lógica condicional, ejecución de tareas en paralelo/serie y asignaciones de tareas basadas en roles.
maestro
Install
composer require 'drupal/maestro:^4.3'
Overview
Maestro es un sistema de automatización de flujos de trabajo de nivel empresarial para Drupal que proporciona una solución completa para la gestión de procesos de negocio (BPM) y la orquestación de flujos de trabajo. El módulo permite a los administradores del sitio y desarrolladores diseñar, implementar y ejecutar flujos de trabajo complejos a través de un constructor visual de plantillas con arrastrar y soltar.
En su núcleo, Maestro cuenta con un motor de orquestación que procesa continuamente instancias de flujo de trabajo, ejecutando tareas, evaluando condiciones y enrutando flujos de trabajo basándose en acciones del usuario o lógica automatizada. El sistema admite múltiples tipos de tareas, incluyendo tareas interactivas que requieren entrada del usuario, funciones por lotes para procesamiento automatizado, tareas de Content Type para la creación/edición de Node, y puertas de lógica condicional (IF, AND, OR) para la bifurcación de flujos de trabajo.
Los flujos de trabajo pueden asignarse a usuarios o roles, con soporte para asignación dinámica a través de variables. El módulo incluye capacidades de notificación completas, funciones de reasignación de tareas, gestión de variables de proceso y seguimiento detallado del flujo de trabajo para propósitos de auditoría. Una Consola de Tareas dedicada proporciona a los usuarios finales una interfaz centralizada para ver y ejecutar sus tareas asignadas.
Features
- Constructor visual de plantillas de flujo de trabajo basado en SVG utilizando la librería Raphael.js para diseño de flujos de trabajo con arrastrar y soltar
- 11 tipos de tareas integrados: Start, End, Interactive, Batch Function, Content Type, If (condicional), And (puerta de sincronización), Or (puerta de primero en llegar), Manual Web, Set Process Variable y Spawn Sub Flow
- Motor orquestador en segundo plano que procesa instancias de flujo de trabajo, evalúa condiciones y enruta tareas automáticamente
- Consola de Tareas para que los usuarios finales vean las tareas asignadas y ejecuten flujos de trabajo interactivos
- Asignación de tareas basada en roles y usuarios con soporte para asignación dinámica mediante variables de proceso
- Sistema de variables de proceso para almacenar y manipular datos del flujo de trabajo durante la ejecución
- Seguimiento del flujo de trabajo y barra de estado de línea de tiempo para monitorear el progreso del proceso
- Sistema de notificaciones completo con notificaciones de asignación, recordatorio y escalamiento
- Ejecución segura de tareas basada en tokens para acceso externo a las tareas del flujo de trabajo
- Submódulo de integración con Webform para incorporar envíos de formularios web en los flujos de trabajo
- Integración de tareas de Content Type para crear y editar Node de Drupal dentro de los flujos de trabajo
- Capacidad Spawn Sub Flow para crear instancias de flujo de trabajo hijas con herencia de variables
- Views preconstruidas para tareas pendientes, todas las tareas en producción, tareas completadas y todas las instancias de flujo de trabajo
- Sistema extenso de hooks para personalizar el comportamiento del flujo de trabajo, notificaciones, ejecución de tareas y visualización de la consola
- Sistema de validación de plantillas para verificar la configuración del flujo de trabajo antes del despliegue
Use Cases
Flujo de trabajo de aprobación de documentos
Crea un proceso de aprobación de documentos en múltiples etapas donde el contenido se envía, es revisado por uno o más aprobadores, potencialmente se revisa y finalmente se publica. Usa tareas Content Type para la edición de documentos, tareas Interactive para decisiones de aprobación y tareas IF para enrutar según el estado de aprobación.
Incorporación de empleados
Automatiza la incorporación de nuevos empleados con tareas asignadas a recursos humanos, TI y gerencia. Las rutas de tareas paralelas pueden manejar el aprovisionamiento de equipos, la creación de cuentas y la documentación simultáneamente, con compuertas AND para sincronizar antes de completar.
Procesamiento de solicitudes de compra
Enruta las solicitudes de compra a través de las cadenas de aprobación apropiadas según el monto. Usa variables de proceso para almacenar los montos de las solicitudes, tareas IF para enrutar a diferentes aprobadores según los umbrales y notificaciones para mantener informados a los solicitantes sobre el estado.
Pipeline de publicación de contenido
Implementa un flujo de trabajo de publicación de contenido en múltiples etapas con creación de borradores, revisión editorial, verificación de cumplimiento legal y publicación final. Usa la tarea Spawn Sub Flow para activar flujos de trabajo relacionados como la promoción en redes sociales.
Escalamiento de soporte al cliente
Crea flujos de trabajo de soporte por niveles donde los problemas pueden escalarse a través de los niveles de soporte. Usa compuertas OR para manejar la resolución en cualquier nivel y tareas Set Process Variable para rastrear el historial de escalamiento.
Procesos impulsados por Webform
Usa la integración con Webform para crear flujos de trabajo activados por envíos de formularios. Ideal para procesamiento de solicitudes, recopilación de comentarios o solicitudes de servicio donde los datos del formulario impulsan el flujo de trabajo.
Tips
- Comienza con el módulo 'Maestro Form Approval Flow Example' para entender los conceptos de flujo de trabajo antes de construir templates personalizados.
- Usa variables de proceso extensivamente para pasar datos entre tareas y tomar decisiones de enrutamiento.
- La función de validación de templates ayuda a detectar errores de configuración antes de desplegar flujos de trabajo a producción.
- Considera usar la tarea Spawn Sub Flow para dividir flujos de trabajo complejos en subflujos manejables y reutilizables.
- Usa Views para crear visualizaciones de tareas personalizadas filtradas por tipo de proceso, rol de usuario u otros criterios.
- Implementa batch handlers personalizados para tareas automatizadas que se integren con sistemas externos o realicen lógica compleja.
- Aprovecha los hooks para personalizar la visualización de Task Console, las notificaciones y el comportamiento del flujo de trabajo sin modificar el código principal de Maestro.
- Para flujos de trabajo de alto volumen, configura el orquestador para ejecutarse frecuentemente vía cron y ajusta el tiempo de bloqueo de ejecución apropiadamente.
Technical Details
Admin Pages 6
/admin/config/workflow/maestro
Configura los ajustes principales del motor de flujo de trabajo Maestro, incluyendo el token del orquestador, configuración de notificaciones y opciones del modo de desarrollo.
/admin/config/workflow/maestro_template_builder
Configura los ajustes del constructor visual de plantillas de flujo de trabajo, particularmente la ubicación de la biblioteca Raphael JS utilizada para la edición de flujos de trabajo basada en SVG.
/maestro/templates/list
Lista todas las plantillas de flujo de trabajo definidas en el sistema. Desde aquí los administradores pueden ver, editar, iniciar, validar y eliminar plantillas de flujo de trabajo.
/template-builder/{templateMachineName}
Editor visual de flujos de trabajo con arrastrar y soltar usando gráficos SVG. Añade, edita y conecta tareas del flujo de trabajo para diseñar el flujo. Configura propiedades de tareas, asignaciones, notificaciones y enrutamiento del flujo de trabajo.
/taskconsole
Interfaz de usuario final para ver y ejecutar tareas de flujo de trabajo asignadas. Los usuarios pueden ver todas las tareas asignadas a ellos, expandir los detalles de la tarea, ver el estado del flujo de trabajo y ejecutar o rechazar tareas.
/maestro/trace/{processID}
Interfaz de seguimiento de flujo de trabajo que muestra el historial completo de ejecución de un proceso de flujo de trabajo. Visualiza todas las tareas que se han ejecutado, su estado de finalización, quién las completó y cuándo.
Permissions 14
Hooks 17
hook_maestro_post_variable_save
Se dispara después de guardar una variable de proceso, permitiendo a los módulos reaccionar a los cambios de variables.
hook_maestro_post_fetch_assigned_queue_tasks
Permite a los módulos añadir IDs de tareas de cola adicionales a la lista de tareas asignadas a un usuario.
hook_maestro_can_user_execute_task_alter
Hook de alteración para modificar si un usuario puede ejecutar una tarea específica.
hook_maestro_template_validation_check
Permite a los módulos añadir comprobaciones de validación personalizadas durante la validación de plantillas.
hook_maestro_post_production_assignments
Se dispara después de realizar una asignación de tarea de producción, permitiendo la personalización posterior a la asignación.
hook_maestro_pre_task_save
Se dispara antes de guardar una tarea, permitiendo la modificación de la configuración de la tarea.
hook_maestro_production_NOTIFICATIONTYPE_notification
Crea o altera notificaciones de tipos específicos (asignación, recordatorio, escalamiento).
hook_maestro_zero_user_notification
Gestiona las notificaciones cuando un rol no tiene usuarios asignados. Permite mecanismos de notificación personalizados.
hook_maestro_task_console_interactive_link_alter
Altera el texto de los enlaces de ejecución de tareas en la consola de tareas.
hook_maestro_task_console_interactive_url_alter
Altera la URL de ejecución para tareas en la consola de tareas.
hook_maestro_task_console_custominformation_alter
Añade información personalizada a las filas de tareas en la consola de tareas.
hook_maestro_task_console_taskdetails_alter
Altera el contenido de expansión de detalles de tarea en la consola de tareas.
hook_maestro_interactive_handlers
Registra manejadores de formularios de tareas interactivas que aparecen en la lista de autocompletado.
hook_maestro_batch_handlers
Registra manejadores de funciones por lotes que aparecen en la lista de autocompletado.
hook_maestro_process_status_alter
Altera la visualización del estado del proceso en el bloque de estado.
hook_maestro_task_console_status_bar_alter
Altera la visualización de la barra de estado del flujo de trabajo.
hook_maestro_get_entity_token_value
Proporciona resolución personalizada de valores de tokens para tokens de entidad.
Troubleshooting 6
Asegúrate de que el token del orquestador esté configurado en la configuración de Maestro. Para pruebas, habilita 'Run Orchestrator on Task Console Refreshes'. Para producción, verifica que cron o las llamadas HTTP externas a /orchestrator/{token} estén funcionando.
Verifica que el usuario tenga el permiso 'view maestro task console' y que las tareas estén correctamente asignadas al usuario o sus roles. Verifica que el orquestador se haya ejecutado para crear las entradas en la cola.
Usa la función Validity Check en el constructor de templates para identificar problemas de configuración. Los problemas comunes incluyen handlers faltantes, tareas no conectadas o asignaciones faltantes en tareas interactivas.
La compuerta AND espera a que TODAS las ramas entrantes se completen. Verifica que todas las rutas paralelas se estén ejecutando y completando. Revisa si hay tareas que puedan estar esperando indefinidamente.
Asegúrate de que 'Send out notifications' esté habilitado en la configuración de Maestro. Verifica que los usuarios asignados a las tareas tengan direcciones de correo electrónico válidas. Para asignaciones de rol, verifica que el rol tenga miembros.
Verifica que la biblioteca Raphael.js sea accesible. Revisa la configuración del Template Builder para la URL correcta de la biblioteca o la ruta de la biblioteca local. Limpia la caché de Drupal después de cambiar la configuración de la biblioteca.
Security Notes 4
- El token del orquestador debe ser un valor único y fuerte para prevenir la ejecución no autorizada de flujos de trabajo.
- Los usuarios con el permiso 'administer maestro templates' pueden crear flujos de trabajo que ejecuten código PHP a través de batch handlers - restringe este permiso cuidadosamente.
- Las URLs de ejecución de tareas basadas en token pueden usarse para completar tareas externamente - asegura una validación adecuada en los handlers personalizados.
- El permiso 'administer maestro queue entities' permite la reasignación de tareas, lo cual podría usarse para redirigir tareas del flujo de trabajo.