Workflow

Define un tipo de campo con Workflows que contiene transiciones de estado personalizables para entidades de Drupal.

workflow
5,487 sites
75
drupal.org

Install

Drupal 11, 10, 9, 8 v2.2.1
composer require 'drupal/workflow:^2.2'

Overview

El módulo Workflow proporciona una potente implementación de máquina de estados para entidades de Drupal. Permite a los constructores de sitios definir flujos de trabajo personalizados con múltiples estados y transiciones configurables entre esos estados. Cada flujo de trabajo puede adjuntarse a cualquier tipo de entidad (nodes, usuarios, términos de taxonomía, etc.) a través de un tipo de campo dedicado.

El módulo proporciona control granular de permisos, permitiendo a los administradores definir qué roles pueden realizar transiciones de estado específicas. Las transiciones pueden ejecutarse inmediatamente o programarse para ejecución futura a través de cron. Se mantiene un historial completo de transiciones para cada entidad, incluyendo marcas de tiempo, usuarios y comentarios opcionales.

El módulo soporta múltiples opciones de visualización para el widget de flujo de trabajo (lista desplegable, botones de radio, botones de acción o botón desplegable) y puede configurarse para mostrarse en un fieldset con varias opciones de colapso. Los comentarios en las transiciones pueden ocultarse, ser opcionales o requeridos.

Workflow se integra con Views para mostrar el historial de transiciones y soporta el sistema de acceso a nodes de Drupal a través del submódulo Workflow Access. Se proporciona soporte de migración para actualizar desde configuraciones de Workflow de Drupal 7.

Features

  • Definir flujos de trabajo personalizados ilimitados con múltiples estados y transiciones
  • Adjuntar flujos de trabajo a cualquier tipo de entidad a través de un tipo de campo dedicado
  • Configurar permisos de transición por rol con control detallado
  • Programar transiciones de estado para ejecución futura a través de cron
  • Mantener historial completo de transiciones con marcas de tiempo, usuarios y comentarios
  • Múltiples opciones de visualización de widget: lista desplegable, botones de radio, botones de acción o botón desplegable
  • Campo de comentario configurable (oculto, opcional o requerido)
  • Integración con Views para mostrar historial de flujo de trabajo
  • Control de acceso a nodes basado en estados de flujo de trabajo (a través del submódulo Workflow Access)
  • Sistema de eventos para reaccionar a transiciones (eventos pre/post transición)
  • Soporte de migración desde el módulo Workflow de Drupal 7
  • Soporte de operaciones masivas a través de Actions (cambiar al siguiente estado o a uno determinado)
  • Block plugin para mostrar formulario de transición de flujo de trabajo
  • Etiquetas de transición personalizables
  • Registro en Watchdog de cambios de estado

Use Cases

Flujo de trabajo de publicación editorial

Crea un flujo de trabajo con estados como Borrador, Revisión, Aprobado y Publicado. Configura las transiciones para que los autores puedan mover el contenido a Revisión, los editores puedan aprobar o rechazar, y los publicadores puedan publicar. Usa el submódulo Workflow Access para ocultar el contenido no publicado a los usuarios anónimos.

Seguimiento del estado de tickets de soporte

Implementa un flujo de trabajo de tickets con estados: Nuevo, En progreso, Esperando al cliente, Resuelto, Cerrado. Configura el campo de comentario como obligatorio para que los agentes deban documentar cada cambio de estado. Usa la vista del historial de transiciones para mostrar la línea de tiempo completa del ticket.

Proceso de aprobación de documentos

Configura un flujo de trabajo de aprobación con múltiples etapas de aprobación. Usa la programación para publicar automáticamente los documentos aprobados en momentos específicos. Configura los botones de acción para una interfaz más limpia donde cada estado aparezca como un botón de envío distinto.

Gestión del ciclo de vida del producto

Crea estados para las etapas del producto: Concepto, Desarrollo, Pruebas, Lanzado, Obsoleto, Fin de vida. Usa el hook workflow_permitted_state_transitions_alter para aplicar reglas de negocio sobre qué productos pueden avanzar según criterios personalizados.

Moderación de contenido de usuarios

Implementa un flujo de trabajo de moderación donde el contenido enviado por usuarios comienza en Pendiente de revisión, y puede ser Aprobado o Rechazado por los moderadores. Usa la integración con Views para crear una cola de moderación que muestre todo el contenido pendiente de revisión.

Simulación de asistente de formulario multipaso

Usa los estados del flujo de trabajo para rastrear el progreso a través de un proceso de múltiples partes donde las entidades se editan a lo largo del tiempo. Cada estado representa la finalización de un paso, y el flujo de trabajo asegura la secuenciación adecuada del proceso.

Tips

  • Usa botones de acción o el tipo de widget dropbutton para flujos de trabajo con pocos estados - proporciona una interfaz más limpia e intuitiva que los desplegables.
  • Habilita el registro de watchdog durante el desarrollo para rastrear los cambios de estado, pero considera deshabilitarlo en producción para sitios de alto tráfico.
  • Cuando uses múltiples flujos de trabajo por bundle de entidad, usa la visualización del historial basada en Views en lugar de la pestaña Workflow incorporada.
  • El pseudo-rol 'Author' en los permisos de transición permite a los creadores de contenido realizar transiciones específicas en su propio contenido.
  • Usa hook_workflow_permitted_state_transitions_alter para lógica de permisos compleja que no pueda expresarse mediante la configuración basada en roles.
  • Considera usar el campo de comentario como obligatorio para propósitos de auditoría, especialmente en entornos sensibles al cumplimiento normativo.
  • Al migrar desde D7, personaliza los archivos YAML de migración para mapear tus tipos de entidad específicos y configuraciones de campos.

Technical Details

Admin Pages 9
Workflows /admin/config/workflow/workflow

Lista todos los workflows definidos en el sistema. Desde esta página, los administradores pueden ver los workflows existentes, acceder a la configuración de workflows, gestionar estados, transiciones y etiquetas de transición. Cada workflow muestra su ID, etiqueta y estado con operaciones para editar, eliminar y gestionar estados/transiciones.

Añadir workflow /admin/config/workflow/workflow/add

Formulario para crear un nuevo workflow. Permite definir el nombre del workflow, nombre de máquina y varias configuraciones incluyendo opciones de visualización del formulario, configuración de programación, manejo de comentarios y registro en watchdog.

Editar workflow /admin/config/workflow/workflow/{workflow_type}

Formulario para editar la configuración de un workflow existente. Proporciona las mismas opciones que el formulario de añadir para modificar el comportamiento del workflow.

Estados del Workflow /admin/config/workflow/workflow/{workflow_type}/states

Lista arrastrable para gestionar estados del workflow. Permite añadir nuevos estados, editar etiquetas, activar/desactivar estados, reordenar mediante arrastrar y soltar, y reasignar contenido de estados desactivados a otros estados.

Transiciones del Workflow /admin/config/workflow/workflow/{workflow_type}/transition_roles

Formulario de matriz para configurar qué rol puede realizar qué transiciones de estado. Muestra una cuadrícula con estados de origen como filas y estados de destino como columnas, con casillas de verificación para cada rol que puede realizar la transición.

Etiquetas de transición /admin/config/workflow/workflow/{workflow_type}/transition_labels

Formulario para personalizar las etiquetas mostradas para cada transición. Permite sobrescribir las etiquetas predeterminadas 'Estado origen → Estado destino' con texto personalizado.

Configuración de acceso /admin/config/workflow/workflow/access

Configuración global para el submódulo Workflow Access. Configura la prioridad de acceso a nodos usada al calcular los permisos de acceso.

Roles de acceso del Workflow /admin/config/workflow/workflow/{workflow_type}/access

Formulario para configurar qué roles pueden ver, editar o eliminar contenido en cada estado del workflow. Solo disponible cuando el submódulo Workflow Access está habilitado.

Limpieza /admin/config/workflow/workflow/cleanup

Herramienta administrativa para limpiar estados de workflow huérfanos e inactivos. Lista estados que ya no pertenecen a un workflow existente y estados que han sido marcados como inactivos. Solo habilitar este submódulo cuando sea necesario para mantenimiento.

Permissions 11
Administrar workflows

Administrar todas las configuraciones y ajustes de Workflow. Este es un permiso restringido.

{Workflow name}: Omitir control de acceso a transiciones de Workflow

Ver, editar y eliminar todas las transiciones independientemente de las restricciones de permisos. Este es un permiso restringido. Generado por tipo de workflow.

{Workflow name}: Participar en workflow

El rol está habilitado para crear transiciones de estado. Determina permisos específicos de transición en la página de administración de workflow. Generado por tipo de workflow.

{Workflow name}: Programar transición de estado de Workflow

El rol está habilitado para programar transiciones de estado. Generado por tipo de workflow.

{Workflow name}: Acceder a la pestaña de historial de Workflow del contenido propio

El rol está habilitado para ver la pestaña de historial de transiciones de estado de Workflow en entidades propias. Generado por tipo de workflow.

{Workflow name}: Acceder a la pestaña de historial de Workflow de cualquier contenido

El rol está habilitado para ver la pestaña de historial de transiciones de estado de Workflow en cualquier entidad. Generado por tipo de workflow.

{Workflow name}: Acceder al formulario de transición de estado de Workflow en la página de vista de entidad

El rol está habilitado para ver un bloque/widget de transición de estado de Workflow y agregar una transición de estado en la página de entidad. Generado por tipo de workflow.

{Workflow name}: Editar comentarios de Workflow propios

Editar el comentario de transiciones de estado propias ejecutadas. Este es un permiso restringido. Generado por tipo de workflow.

{Workflow name}: Editar cualquier comentario de Workflow

Editar el comentario de cualquier transición de estado ejecutada. Este es un permiso restringido. Generado por tipo de workflow.

{Workflow name}: Revertir transición de estado de Workflow propia

Permitir al usuario revertir la última transición de estado propia ejecutada en la entidad. Este es un permiso restringido. Generado por tipo de workflow.

{Workflow name}: Revertir cualquier transición de estado de Workflow

Permitir al usuario revertir cualquier última transición de estado ejecutada en la entidad. Este es un permiso restringido. Generado por tipo de workflow.

Hooks 7
hook_workflow_operations

Permite a los módulos añadir operaciones adicionales a los constructores de listas de entidades de workflow. Puede añadir operaciones para workflows, estados o transiciones.

hook_workflow

Permite reaccionar a eventos de workflow incluyendo pre/post ejecución de transiciones, operaciones de reversión y verificaciones de permisos. Puede residir en el archivo del módulo o en module.workflow.inc.

hook_workflow_comment_alter

Permite a los módulos modificar el comentario de la transición antes de que se guarde.

hook_workflow_history_alter

Permite a los módulos añadir operaciones o modificar la visualización del historial de workflow. En D8+, se prefiere usar ListBuilder::getDefaultOperations y hook_workflow_operations.

hook_workflow_permitted_state_transitions_alter

Permite añadir, eliminar o modificar las transiciones de estado permitidas. Se invoca al construir la lista de estados de destino disponibles.

hook_form_workflow_transition_form_alter

Permite modificar el formulario de transición de workflow. Útil para personalizar el formulario según el tipo de entidad, bundle o estado actual.

hook_field_widget_single_element_workflow_default_form_alter

Hook específico de widget para modificar el elemento de formulario del widget de campo workflow_default.

Troubleshooting 6
El campo Workflow no aparece en el formulario de la entidad

Asegúrate de que el campo Workflow esté añadido al bundle de la entidad y que la visualización del formulario esté configurada para mostrar el widget workflow_default. Verifica que el usuario tenga el permiso 'create {workflow} workflow_transition'.

No hay transiciones disponibles en el desplegable

Verifica que las transiciones estén configuradas en la pestaña Transitions del flujo de trabajo. Asegúrate de que el rol del usuario tenga permiso para al menos una transición desde el estado actual. Comprueba si hook_workflow_permitted_state_transitions_alter está eliminando transiciones.

Las transiciones programadas no se ejecutan

Asegúrate de que cron se esté ejecutando regularmente. El módulo ejecuta las transiciones programadas durante las ejecuciones de cron. Verifica que el permiso 'schedule {workflow} workflow_transition' esté otorgado y que la programación esté habilitada en la configuración del flujo de trabajo.

Workflow Access no está restringiendo el contenido

Después de configurar los ajustes de acceso, debes reconstruir los permisos de acceso a nodos en /admin/reports/status/rebuild. Verifica que workflow_access_priority esté configurado apropiadamente si estás usando otros módulos de control de acceso.

No se puede eliminar un flujo de trabajo

Los flujos de trabajo no pueden eliminarse si algún campo los referencia. Elimina primero todos los campos de flujo de trabajo que usen este flujo de trabajo, luego elimina el flujo de trabajo.

El estado de creación aparece en la lista de estados pero no se puede usar

El estado de creación se crea automáticamente y representa el estado inicial antes de cualquier transición. No debería mostrarse a los usuarios como un estado de destino. Configura tu primer estado real y una transición desde creación hacia ese estado.

Security Notes 5
  • El permiso 'administer workflow' está marcado como restringido y solo debe otorgarse a administradores de confianza.
  • El permiso 'bypass {workflow} workflow_transition access' permite a los usuarios ignorar todas las restricciones de transición - otorgar con extrema precaución.
  • Los permisos de editar y revertir transiciones están restringidos ya que permiten la modificación del historial de auditoría.
  • Cuando uses Workflow Access, siempre reconstruye los permisos de nodo después de los cambios de configuración para asegurar la aplicación adecuada del acceso.
  • Los comentarios de transición pueden contener información sensible sobre por qué ocurrieron los cambios de estado - considera quién tiene acceso para ver el historial del flujo de trabajo.