ECA: Evento - Condición - Acción

Un potente motor de reglas sin código para Drupal que permite construir conjuntos de acciones activadas condicionalmente utilizando eventos, condiciones y acciones a través de una interfaz gráfica de modelado BPMN.

eca
14,645 sites
250
drupal.org

Instalar

Drupal 11 v3.0.9
composer require 'drupal/eca:^3.0'
Drupal 10 v2.1.17
composer require 'drupal/eca:^2.1'

Overview

ECA (Evento - Condición - Acción) es un motor de reglas potente, versátil y fácil de usar para Drupal. Permite a los administradores del sitio orquestar flujos de trabajo automatizados complejos sin escribir código. El módulo principal es un procesador que valida y ejecuta plugins de evento-condición-acción.

Integrado con la interfaz gráfica de usuario BPMN.iO, ECA proporciona un sistema robusto para construir conjuntos de acciones activadas condicionalmente. ECA se activa para cada evento de Drupal, valida estos eventos contra los modelos configurados y procesa todos los modelos coincidentes para el evento actual. Al igual que Drupal Rules, ECA aprovecha los componentes existentes del núcleo de Drupal (eventos y acciones) mientras proporciona su propio gestor de plugins para condiciones.

Los tres componentes (eventos, condiciones, acciones) están disponibles como plugins que pueden ser fácilmente extendidos por otros módulos. Los modelos de ECA se almacenan en configuración, permitiendo importar y exportar a través de la interfaz de administración, Drush o la gestión de configuración.

Features

  • Gestores de plugins para modeladores, eventos, condiciones y acciones con arquitectura extensible
  • Integración con el modelador gráfico BPMN.iO para diseño visual de flujos de trabajo
  • Integración completa con todas las acciones del núcleo de Drupal y acciones de módulos contribuidos
  • Amplio soporte de Token en todas las configuraciones de eventos, condiciones y acciones
  • Soporte de TypedData para trabajar con estructuras de datos complejas
  • Prevención de recursión integrada para evitar bucles infinitos en la ejecución de flujos de trabajo
  • Soporte de caché para mejorar el rendimiento en eventos activados frecuentemente
  • Operaciones de almacenamiento de estado y clave-valor para datos persistentes entre solicitudes
  • Operaciones de cola para ejecución de tareas diferidas y programadas
  • Creación de endpoints personalizados para manejo dinámico de rutas/URLs
  • Sistema de etiquetado para caracterización y organización de eventos
  • Modelos almacenados como entidades de configuración para fácil exportación/importación y control de versiones
  • Soporte para ejecutar modelos como una cuenta de usuario específica
  • Cambio de cuenta de servicio para operaciones privilegiadas
  • Soporte de eventos Cron con notación de frecuencia estilo cron
  • Renderizado y manipulación de formularios personalizados a través de acciones de ECA
  • Personalización de selección de campos de referencia de entidad y opciones

Use Cases

Flujo de trabajo automatizado de publicación de contenido

Crear un flujo de trabajo que envíe automáticamente notificaciones por correo electrónico cuando el contenido se envía para revisión, asigne revisores según el tipo de contenido y publique el contenido después de la aprobación. Usar eventos de entidad de contenido (presave, update) combinados con condiciones de rol de usuario y acciones de envío de correo electrónico.

Modificaciones dinámicas de formularios

Modificar formularios basándose en roles de usuario o valores de Field. Por ejemplo, ocultar ciertos campos de formulario para usuarios anónimos, añadir reglas de validación personalizadas o auto-poblar campos basándose en valores de otros campos usando eventos y condiciones de Form API.

Endpoints de API personalizados

Crear endpoints tipo REST personalizados sin escribir código usando el submódulo Endpoint. Definir rutas que devuelvan datos JSON, procesen envíos de formularios o se integren con servicios externos. Controlar el acceso y construir respuestas completamente a través de modelos de ECA.

Operaciones de contenido programadas

Usar eventos cron con notación de frecuencia para realizar tareas programadas como enviar correos electrónicos de resumen, archivar contenido antiguo, actualizar estadísticas o sincronizar datos con sistemas externos.

Control de acceso a entidades

Implementar lógica de control de acceso compleja que va más allá de los permisos estándar de Drupal. Otorgar o revocar acceso a entidades basándose en valores de Field, propiedades de usuario, hora del día o condiciones personalizadas.

Automatización de registro de usuarios

Automatizar flujos de trabajo de registro de usuarios incluyendo correos electrónicos de bienvenida, asignación de roles basada en datos de registro, recordatorios de completar perfil e integración con sistemas CRM externos.

Notificaciones de moderación de contenido

Enviar notificaciones a autores y editores de contenido cuando el estado del contenido cambia, con mensajes personalizados basados en el tipo de transición y los usuarios involucrados.

Generación dinámica de menús

Modificar elementos de menú basándose en el contexto del usuario, disponibilidad de contenido o condiciones externas usando el submódulo Menu.

Gestión de Cache

Implementar estrategias inteligentes de invalidación de Cache que limpien cachés específicos cuando el contenido relacionado cambia, mejorando el rendimiento del sitio mientras se asegura la frescura del contenido.

Procesamiento basado en Queue

Descargar tareas de procesamiento pesado a colas para ejecución en segundo plano, previniendo problemas de timeout y mejorando la experiencia del usuario para operaciones como importaciones por lotes o actualizaciones masivas.

Tips

  • Comienza con los submódulos ECA Base y ECA Content para la mayoría de los casos de uso, luego añade otros según sea necesario.
  • Usa el nivel de registro de depuración (7) durante el desarrollo para ver información detallada de ejecución.
  • Prueba los modelos de ECA en un entorno de desarrollo antes de desplegarlos a producción.
  • Exporta los modelos como configuración y confírmalos en control de versiones para un despliegue adecuado.
  • Usa etiquetas significativas para eventos, condiciones y acciones en tus modelos para mejor mantenibilidad.
  • Aprovecha el sistema de eventos personalizados para modularizar flujos de trabajo complejos a través de múltiples modelos de ECA.
  • Usa Tokens consistentemente para pasar datos entre acciones en un flujo de trabajo.
  • Considera usar operaciones de Queue para tareas de larga duración para prevenir problemas de timeout.
  • La Guía de ECA en https://ecaguide.org proporciona documentación completa, tutoriales y modelos de ejemplo.

Technical Details

Admin Pages 1
Configuración de ECA /admin/config/workflow/eca/settings

Configura los ajustes globales de ECA incluyendo nivel de registro, dominio de documentación, configuración de ejecución de usuario y opciones de cálculo de dependencias.

Permisos 1
Administrar ECA

Permite a los usuarios administrar la configuración y los modelos de ECA

Hooks 1
hook_eca_token_data_provider

Registrar un proveedor de datos de Token para suministrar datos de Token personalizados a ECA.

Drush Commands 3
drush eca:subscriber:rebuild

Reconstruye el estado de eventos suscritos. Usa esto cuando los modelos de ECA no están respondiendo a eventos correctamente.

drush eca:doc:plugins

Exporta documentación para todos los plugins de ECA (eventos, condiciones, acciones). Solo módulo de desarrollo.

drush eca:doc:models

Exporta documentación para todos los modelos de ECA incluyendo archivos de modelo y recetas. Solo módulo de desarrollo.

Troubleshooting 6
Los modelos de ECA no se activan

Ejecuta 'drush eca:subscriber:rebuild' para reconstruir el estado de suscripción de eventos. También verifica que el modelo de ECA esté habilitado y que los eventos estén correctamente configurados con tipos de entidad/bundles coincidentes.

Errores de recursión infinita

ECA incluye prevención de recursión integrada. Si ves errores de recursión, revisa tus modelos para activación circular de eventos (ej. un evento de guardado que activa otro guardado). Usa condiciones para romper el ciclo o aumenta el parámetro de umbral de recursión 'eca.max_recursion_level'.

Los valores de Token no se resuelven

Asegúrate de que los Tokens estén formateados correctamente con corchetes. Verifica que el Token exista en el contexto actual. Habilita el registro de depuración (nivel de registro 7) para ver los Tokens disponibles en cada paso de ejecución.

Las acciones no se ejecutan como se espera

Revisa el registro de ECA para mensajes de error. Verifica que todas las condiciones requeridas se cumplan. Asegúrate de que los Tokens dependientes tengan valores antes de que se usen en configuraciones de acciones.

Endpoints personalizados devuelven 404

Asegúrate de que el submódulo Endpoint esté habilitado. El endpoint necesita tanto un evento de acceso (para otorgar acceso) como un evento de respuesta (para construir contenido). Limpia todas las cachés después de crear modelos de endpoint.

Los eventos cron no se ejecutan

Verifica que la sintaxis de frecuencia cron siga la notación cron. Comprueba que el Cron de Drupal esté ejecutándose. La primera ejecución se programa después de que el modelo se guarda, así que los modelos nuevos no se ejecutarán inmediatamente.

Security Notes 6
  • El permiso 'administer eca' otorga poder significativo - solo asígnalo a administradores de confianza.
  • Los modelos ejecutados como un usuario específico (a través de configuración) evitan las verificaciones de permisos normales - usar con precaución.
  • La función de cuenta de servicio debe usar una cuenta dedicada con solo los permisos necesarios.
  • Los endpoints personalizados necesitan configuración de acceso explícita - nunca asumas que están protegidos por defecto.
  • Los valores de Token en los registros pueden contener datos sensibles - restringe el acceso a los registros de ECA apropiadamente.
  • Revisa cuidadosamente los modelos importados antes de habilitarlos en sitios de producción.