Pasar al contenido principal
Main Image
Imagen
Surrounded by skyscrapers reaching into the sky
10. Septiembre 2025

Adopta ECA: el futuro más allá del desarrollo clásico de módulos

by Richard Papp

Si llevas un tiempo construyendo sitios Drupal, conoces el patrón: llega un nuevo requisito, echas mano de un módulo personalizado o desempolvas un viejo módulo contribuido, y en poco tiempo tu base de código es un mosaico de soluciones estrechamente enfocadas. Con el tiempo, el mantenimiento se convierte en una tarea pesada.

Hay una forma mejor.

Drupal 8 introdujo el sistema de plugins, un gran salto hacia la modularidad. De repente, podíamos escribir clases pequeñas y específicas para añadir funcionalidad de forma limpia y reutilizable:

Drupal plugins

Pero los plugins siguen siendo código. Siguen necesitando ser implementados, desplegados y mantenidos en módulos.

El módulo Evento-Condición-Acción (ECA ) ha cambiado nuestra forma de pensar sobre el desarrollo de Drupal. En lugar de crear módulos a medida o buscar plugins contribuidos que se adapten a cada caso, ECA te permite ensamblar la lógica del sitio a partir de bloques reutilizables -eventos, condiciones y acciones- directamente en la interfaz de usuario (UI). ¿Necesitas una pieza que falta? Sólo tienes que implementar esa pieza en código y conectarla al marco ECA. El resto es configuración, no desarrollo.

De los plugins a los escenarios: Un cambio en el mundo real

ECA da el siguiente salto. Con ECA, tus plugins se convierten en escenarios: flujos de trabajo configurables basados en eventos. Codifica sólo los componentes que faltan y ensambla todo lo demás visualmente:

ECA model with chained plugins

Hace tiempo que la API de Migrate permite encadenar plugins de procesos, pero se limitaba a las migraciones. Desde el lanzamiento de modeler_api de ECA, ahora tenemos una interfaz de usuario visual para encadenar cualquier lógica, en todo el sitio.

Migrate process trim

El módulo migrate_process_trim proporciona un medio rápido y sencillo de eliminar caracteres iniciales o finales (como espacios) en una migración de Drupal. Funcionaba para Drupal 8 y 9, tenía correcciones automatizadas para Drupal 10 y 11, pero ya no recibe soporte.

Una de las aplicaciones de nuestro cliente dependía en gran medida de él para la importación de datos. Para la actualización a Drupal 11, podríamos haber intervenido como mantenedores, pero en lugar de eso, elegimos un camino diferente: sustituirlo completamente por un plugin de proceso de migración impulsado por ECA.

He aquí por qué:

  • La misma funcionalidad de recorte ya existía en Tamper y estaba disponible en ECA a través de ECA Tamper.
  • Al utilizar ECA, podíamos hacer que la lógica de recorte fuera mucho más flexible.

En lugar de un plugin de proceso independiente, creamos un plugin de proceso de migración que activa un evento ECA. El escenario gestiona el recorte -ya sea una eliminación básica de espacios en blanco o una manipulación compleja de cadenas- sin tocar el código de migración.

Resultado: Un módulo contribuido no soportado sustituido por un escenario ECA reutilizable que funciona en múltiples migraciones.

Process migration row values

Sustituir migrate_conditions por condiciones ECA

A veces sólo quieres transformar un valor si se cumplen determinadas condiciones. Tradicionalmente, migrate_conditions se encargaba de eso. Pero con ECA, puedes implementar las mismas condiciones y más, directamente en tu escenario.

Tu plugin de proceso de migración dispara un evento, ECA evalúa las condiciones, y sólo si se cumplen, se ejecuta la acción de transformación. Esto mantiene limpio el YAML de la migración, y te permite gestionar las reglas condicionales en un lugar central y reutilizable.

Este cambio nos ha permitido retirar otro módulo de la pila del cliente y, además, ya no tenemos que preocuparnos de si será portado a futuras versiones de Drupal. Dado el compromiso de Jurgenhaas en la Conferencia Drupal de Portland 2024 de mantener ECA "de por vida", estamos en buenas manos.

Llevar la misma lógica a entity_import

Uno de los mayores puntos fuertes de ECA es la reutilización en distintos contextos.

Entity Import ofrece una interfaz de usuario para importar varias entidades, construida sobre la API de Migrate. Pero:

  • Para reutilizar los plugins del proceso de migración, tienes que envolverlos en plugins configurables.
  • Debido a sus límites de selección de plugins, sólo puedes utilizar el mismo plugin de proceso una vez por propiedad de migración. Para la mayoría de las importaciones eso está bien, pero no siempre.

Con el plugin de proceso de ECA Entity Import, esas restricciones desaparecen. Puedes reutilizar los mismos escenarios de recorte o lógica condicional de tus migraciones en las importaciones de entidades: sin envoltorios adicionales ni código duplicado.

Por qué es importante

El enfoque de bloques de construcción de ECA da sus frutos de múltiples maneras:

  • Creación rápida de prototipos - Crea funciones en minutos, pruébalas inmediatamente e itera sin volver a desplegar el código.
  • Reutilización - Una transformación o condición puede alimentar múltiples funciones en tu sitio web.
  • Colaboración - Los creadores de sitios y las partes interesadas pueden ajustar los escenarios sin tocar el código.
  • Mantenibilidad - Las actualizaciones son más sencillas y seguras: modifica el escenario ECA en lugar de reescribir módulos.

Una nueva mentalidad por defecto

La conclusión es sencilla: deja de pensar por defecto en "escribir un nuevo módulo". Empieza a pensar en términos de eventos, condiciones y acciones.

El código se convierte en un último recurso, utilizado sólo para rellenar las piezas que realmente faltan. ¿Todo lo demás? Configurable en la interfaz de usuario, comprobable sin redespliegues y reutilizable en todo tu sitio.

Si estás cansado de mantener una biblioteca de módulos de propósito único y quieres un flujo de trabajo de desarrollo más limpio y rápido, ECA no es sólo otro módulo contribuido: es la siguiente etapa en la lógica de sitios Drupal.

Tags

Tools

Añadir nuevo comentario

Texto sin formato

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
CAPTCHA
Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.