¿Qué son las reglas automáticas?
Las reglas automáticas permiten que una etapa de aprobación tome una decisión sin intervención humana. Se configuran dentro de cada etapa y se evalúan automáticamente cada vez que una solicitud llega a ella.
Hay tres acciones disponibles:
- Aprobar automáticamente — la etapa avanza sin aprobación manual.
- Devolver automáticamente — la solicitud regresa a la etapa anterior.
- Rechazar automáticamente — la solicitud se rechaza definitivamente.
Solo puede existir una regla por tipo de acción dentro de una misma etapa.
Dónde se configura
Al seleccionar una etapa de aprobación en la plantilla, el panel derecho muestra la pestaña Reglas Automáticas, donde se activan y configuran las reglas.
Fig. 1 — Panel de Reglas Automáticas. La etapa seleccionada (izquierda) muestra sus configuraciones en el panel derecho. La pestaña "Reglas Automáticas" lista las tres acciones posibles. En este ejemplo, "Rechazar automáticamente" está activa (toggle azul) con la fórmula configurada.
- 1Toggle de activación: cada regla tiene un interruptor propio. Solo se evalúa si está activa (azul). Una regla sin fórmula se desactiva automáticamente al guardar.
- 2Orden de prioridad: el ícono de puntos (⠿) a la izquierda permite arrastrar las tarjetas. Se ejecuta la primera cuya fórmula sea verdadera; el resto se omite.
- 3Vista previa de la fórmula: cuando la regla está activa y configurada, la fórmula aparece inline junto al badge Si. El botón ✎ abre el editor.
El editor de fórmulas
Al hacer clic en el botón de lápiz (✎) se abre el modal de fórmula. Aquí se construye la condición combinando variables del flujo con operadores.
Fig. 2 — Editor de fórmulas. Panel izquierdo: selector de categoría (Solicitud / Colaborador afectado). Panel derecho: variables disponibles como chips, operadores de acceso rápido, y editor de código con la fórmula activa.
-
1Categorías de variables: "Solicitud" expone datos del proceso (
process.*); "Colaborador afectado" expone datos del empleado (affected_employee.*). Se pueden mezclar en la misma fórmula. - 2Chips de variables: muestran el nombre legible del campo. Al hacer clic se inserta el nombre técnico normalizado en el editor. Los campos dinámicos del formulario del flujo aparecen automáticamente.
-
3Variables dinámicas del formulario: todos los campos del formulario se exponen como chips. El nombre técnico se genera normalizando el nombre del campo (espacios y caracteres especiales →
_). Ejemplo: "Cantidad de horas extras" →process.flex_cantidad_de_horas_extras. - 4Operadores de acceso rápido: los botones insertan el símbolo directamente en el cursor del editor. También pueden escribirse a mano.
affected_employee.first_name == process.creator_display_nameCombina con
&& (y) y || (o) para crear condiciones compuestas.Variables disponibles
Solicitud (process.*)
Variables fijas, siempre disponibles en cualquier flujo:
| Variable | Label en UI | Descripción |
|---|---|---|
process.id | Id | Identificador de la solicitud |
process.title | Título | Título de la solicitud |
process.creator_display_name | Solicitante | Nombre del usuario que inició la solicitud |
process.actual_stage_name | Nombre de la etapa actual | Nombre de la etapa en que se evalúa la regla |
Además, todos los campos del formulario del flujo se exponen automáticamente como variables. El nombre técnico se construye normalizando el nombre del campo: espacios y caracteres especiales se reemplazan por _.
_id no se exponen como variables.Colaborador afectado (affected_employee.*)
| Variable | Descripción |
|---|---|
affected_employee.id | ID del empleado |
affected_employee.rut | RUT |
affected_employee.first_name | Nombre |
affected_employee.last_name | Apellido |
affected_employee.email | Correo electrónico |
affected_employee.sueldo_base | Sueldo base del contrato vigente |
affected_employee.liquido_teorico | Líquido teórico del contrato vigente |
Operadores
| Operador | Tipo | Descripción |
|---|---|---|
== | Comparación | Igual a |
!= | Comparación | Distinto de |
> | Comparación | Mayor que |
< | Comparación | Menor que |
&& | Lógico | Y — ambas condiciones deben cumplirse |
|| | Lógico | O — al menos una condición debe cumplirse |
+ - * / | Aritmético | Suma, resta, multiplicación, división |
Casos de uso y ejemplos
Rechazar si se supera un límite de horas extra
# Rechazar si la cantidad de horas extra es 2 o más
process.flex_cantidad_de_horas_extras = 2Aprobar automáticamente aumentos dentro de rango
# Aprobar si el aumento es menor al 5% del sueldo base
process.monto_aumento < affected_employee.sueldo_base * 0.05Condición compuesta
# Rechazar si supera límite Y el colaborador tiene sueldo base bajo process.monto_solicitado > 500000 && affected_employee.sueldo_base < 800000 # O entre condiciones: rechazar si monto cero O sin título process.monto == 0 || process.title == ""