Rules

Un motor de reglas de negocio que permite a los administradores del sitio definir acciones ejecutadas condicionalmente basadas en eventos que ocurren (reglas ECA).

rules
92,683 sites
228
drupal.org

Install

Drupal 11, 10 v4.0.0
composer require 'drupal/rules:^4.0'

Overview

El módulo Rules proporciona un marco potente y flexible para automatizar acciones en tu sitio Drupal basándose en eventos que ocurren. Usando un patrón Evento-Condición-Acción (ECA), los administradores del sitio pueden crear lógica de negocio sofisticada sin escribir código.

Rules opera a través de dos conceptos principales: Reglas de Reacción que se activan automáticamente cuando ocurren eventos específicos (como guardar contenido, inicio de sesión de usuario o ejecuciones de cron), y Componentes que son conjuntos de reglas reutilizables que pueden ser llamados desde otras reglas o invocados programáticamente.

El módulo proporciona un extenso sistema de plugins con numerosos eventos integrados (CRUD de Entity, acciones de usuario, eventos del sistema), condiciones (comparación de datos, verificaciones de Entity, verificación de roles de usuario) y acciones (enviar correo electrónico, modificar Entities, mostrar mensajes, redirigir páginas). Los desarrolladores pueden extender estos con plugins personalizados.

Rules cuenta con un sofisticado sistema de contexto y selección de datos usando datos tipados, permitiendo manipulación compleja de datos a través de selectores como 'node.uid.entity.name.value'. El módulo incluye capacidades completas de depuración con registro en pantalla e integración con el registro del sistema.

Features

  • Automatización basada en eventos con reglas de reacción que se activan en eventos de Drupal (guardar Entity, eliminar, inicio/cierre de sesión de usuario, cron, vista de página)
  • Lógica condicional con contenedores AND/OR, soporte de negación y condiciones anidadas complejas
  • Extensa biblioteca de acciones incluyendo envío de correo electrónico, operaciones CRUD de Entity, gestión de usuarios, redirecciones de página y mensajes del sistema
  • Componentes de reglas reutilizables que pueden ser invocados desde otras reglas o programáticamente
  • Sistema de selector de datos para acceder y manipular datos anidados de Entity usando rutas de datos tipados
  • Proveedores de contexto integrados para fecha actual, ruta actual e información del sitio
  • Registro de depuración con verbosidad configurable e integración opcional con el registro del sistema
  • Funcionalidad de importación/exportación para reglas mediante gestión de configuración
  • Comandos de Drush para gestionar reglas desde la línea de comandos
  • Filtrado de eventos específico por Bundle para eventos de Entity
  • Arquitectura de plugins extensible para eventos, condiciones y acciones personalizadas
  • Funcionalidad de auto-guardado que agrupa guardados de Entity para mejor rendimiento

Use Cases

Enviar correo de bienvenida al registrarse un usuario

Crea una reaction rule activada por 'After saving a new entity' filtrada a entidades User. Añade una acción 'Send email' con el correo del nuevo usuario en el campo 'To', un asunto de bienvenida y un mensaje personalizado usando tokens como [user:display-name].

Notificar a administradores cuando se publica contenido

Crea una reaction rule activada por 'After updating an entity' para entidades Node. Añade una condición 'Node is published' y opcionalmente filtra por tipo de contenido. Añade la acción 'Send email to users of role' dirigida al rol 'administrator'.

Asignación automática de rol de usuario basada en campo de perfil

Crea una reaction rule para 'After updating an entity' en entidades User. Añade una condición que verifique el valor de un campo de perfil (por ejemplo, estado de verificación). Añade la acción 'Add user role' para otorgar el rol apropiado cuando se cumplan las condiciones.

Redirigir usuarios después del inicio de sesión según su rol

Crea una reaction rule activada por 'User has logged in'. Añade condiciones que verifiquen 'User has role' para diferentes roles. Usa la acción 'Page redirect' para enviar a los administradores al panel de control y a los usuarios regulares a su perfil.

Despublicar contenido que contiene palabras clave específicas

Crea una reaction rule para 'Before saving an entity' en entidades Node. Añade una condición 'Text comparison' que verifique si el campo body contiene palabras prohibidas. Añade la acción 'Unpublish content' y 'Show message' para notificar al autor.

Acciones programadas de contenido mediante cron

Crea una reaction rule activada por 'Cron maintenance tasks are performed'. Usa 'Fetch entities by field' para encontrar contenido que coincida con criterios (por ejemplo, fecha expirada). Recorre los resultados y realiza acciones como despublicar o enviar notificaciones.

Crear componente de notificación reutilizable

Crea un Rules component que acepte un usuario y un mensaje como contexto. Configura acciones para enviar correo electrónico y mostrar mensaje en pantalla. Referencia este componente desde múltiples reaction rules para mantener un comportamiento de notificación consistente.

Bloquear direcciones IP después de intentos fallidos de inicio de sesión

Crea una reaction rule activada por 'System log entry is created'. Añade una condición que verifique el mensaje de registro en busca de patrones de inicio de sesión fallido. Usa la acción 'Ban IP address' (requiere el módulo Ban) para bloquear a los infractores reincidentes.

Tips

  • Comienza con el registro de depuración habilitado cuando desarrolles nuevas reglas para entender el flujo de ejecución
  • Usa los comandos de Drush para listar rápidamente los eventos, condiciones y acciones disponibles
  • Crea componentes reutilizables para secuencias de acciones comunes para mantener la consistencia
  • Usa eventos específicos de bundle (por ejemplo, 'After saving a node of type Article') para mejor rendimiento que filtrar con condiciones
  • El autocompletado del selector de datos es invaluable - presiona Tab para explorar las rutas disponibles
  • Considera el orden de las condiciones: coloca primero las condiciones rápidas de evaluar para cortocircuitar verificaciones costosas
  • Usa 'Force saving immediately' con moderación - los guardados por lotes al final de la regla son más eficientes
  • Exporta reglas mediante Configuration Management para versionar tu lógica de negocio
  • Prueba las reglas exhaustivamente en un entorno de desarrollo antes de desplegar a producción

Technical Details

Admin Pages 5
Rules - Reglas de reacción /admin/config/workflow/rules

Lista todas las reglas de reacción configuradas con sus eventos asociados, estado (habilitado/deshabilitado), y proporciona operaciones para agregar, editar, eliminar, habilitar o deshabilitar reglas. Incluye enlaces rápidos para importar y exportar reglas a través de la gestión de configuración.

Componentes de Rules /admin/config/workflow/rules/components

Lista todos los componentes de reglas reutilizables. Los componentes son conjuntos de reglas que pueden invocarse desde otras reglas o llamarse programáticamente. Pueden definir requisitos de contexto de entrada y proporcionar contexto de salida.

Configuración de Rules /admin/config/workflow/rules/settings

Configurar ajustes globales para el módulo Rules incluyendo el nivel de detalle del registro del sistema y opciones de registro de depuración para desarrollo.

Agregar regla de reacción /admin/config/workflow/rules/reactions/add

Formulario para crear una nueva regla de reacción. Requiere seleccionar al menos un evento activador.

Editar regla de reacción /admin/config/workflow/rules/reactions/edit/{rules_reaction_rule}

Interfaz completa de edición de reglas con gestión de eventos, construcción de condiciones con lógica AND/OR, y configuración de acciones. Soporta condiciones anidadas y múltiples acciones con ordenamiento mediante arrastrar y soltar.

Permissions 5
Administrar Rules

Administrar todas las configuraciones y ajustes de Rules. Este es el permiso maestro para acceso completo a toda la funcionalidad de Rules.

Administrar reacciones de Rules

Administrar las configuraciones y ajustes de reacciones de Rules. Permite crear, editar y eliminar reglas de reacción sin acceso a componentes o configuraciones globales.

Administrar componentes de Rules

Administrar las configuraciones y ajustes de componentes de Rules. Permite crear, editar y eliminar componentes de reglas reutilizables.

Omitir control de acceso de Rules

Controlar todas las configuraciones independientemente de las restricciones de permisos de eventos, condiciones o acciones. Este es un permiso restringido que debe otorgarse con cuidado.

Ver registro de depuración de Rules

Acceder a la salida del registro de depuración de Rules mostrada en pantalla durante la ejecución de reglas. Requerido para ver información de depuración cuando el registro de depuración está habilitado.

Hooks 3
hook_rules_action_info_alter

Modifica la definición de los plugins de acción de Rules.

hook_rules_condition_info_alter

Modifica la definición de los plugins de condición de Rules.

hook_rules_event_info_alter

Modifica la definición de los plugins de evento de Rules.

Drush Commands 10
drush rules:list

Lista todas las reglas activas e inactivas de tu sitio. Puede filtrar por tipo.

drush rules:enable

Habilita una Reaction Rule deshabilitada.

drush rules:disable

Deshabilita una Reaction Rule habilitada.

drush rules:delete

Elimina permanentemente una regla o componente.

drush rules:export

Exporta una configuración de regla individual en formato YAML.

drush rules:revert

Revierte una regla a su estado original proporcionado por el módulo.

drush rules:events

Muestra una lista de todos los eventos de Rules disponibles agrupados por categoría.

drush rules:conditions

Muestra una lista de todas las condiciones de Rules disponibles agrupadas por categoría.

drush rules:actions

Muestra una lista de todas las acciones de Rules disponibles agrupadas por categoría.

drush rules:expressions

Muestra una lista de todos los tipos de expresiones de Rules disponibles.

Troubleshooting 6
Las reglas no se ejecutan cuando se espera

Habilita el registro de depuración en /admin/config/workflow/rules/settings y revisa la salida de depuración. Verifica que la regla esté habilitada, que el evento esté configurado correctamente y que todas las condiciones se cumplan. Revisa el registro del sistema en busca de mensajes de error.

Las acciones de correo electrónico no envían mensajes

Verifica que el sistema de correo de tu sitio esté configurado correctamente. Revisa el registro del sistema en busca de errores de correo. Asegúrate de que el campo 'To' contenga direcciones de correo válidas. Prueba con el módulo Contact del núcleo para verificar que el correo funciona.

Los selectores de datos no encuentran los valores esperados

Usa la función de autocompletado en el campo del selector de datos para explorar las rutas de datos disponibles. Asegúrate de que el contexto proporcione el tipo de entidad esperado. Verifica que los campos existan en el bundle de entidad con el que estás trabajando.

Las condiciones siempre evalúan como falsas

Habilita el registro de depuración para ver los resultados de evaluación de condiciones. Verifica que el selector de datos devuelva los valores esperados. Busca discrepancias de tipo (comparaciones de string vs integer). Prueba con condiciones negadas para verificar la evaluación.

Problemas de rendimiento con muchas reglas

Usa eventos específicos de bundle en lugar de eventos genéricos de entidad. Combina reglas similares donde sea posible. Evita operaciones costosas en eventos que se activan frecuentemente. Considera usar reglas activadas por cron para tareas que no son críticas en tiempo.

La configuración de reglas no se exporta correctamente

Usa Configuration Management o el comando de exportación de Drush. Asegúrate de que todas las configuraciones dependientes (entidades referenciadas, etc.) también se exporten. Verifica los permisos de archivos en el directorio de sincronización de configuración.

Security Notes 6
  • El permiso 'Bypass Rules access control' está restringido y solo debe otorgarse a administradores altamente confiables
  • Las acciones de correo electrónico pueden usarse para spam si las reglas no están aseguradas adecuadamente - limita los permisos de administración de reglas
  • Las acciones de redirección de página podrían usarse para phishing - revisa cuidadosamente las reglas de redirección
  • Las acciones de establecimiento de datos pueden modificar cualquier dato de entidad - audita las reglas que usan esta acción
  • Las reglas que se ejecutan en eventos activados por usuarios pueden ser explotadas para denegación de servicio si no tienen límite de tasa
  • Siempre verifica que el módulo PHP filter esté deshabilitado si existe - nunca uses código PHP en Rules