Edición Pasiva Condicional (passive_conditional_edit)
La automatización passive_conditional_edit se ejecuta inmediatamente antes de persistir una fila en la base de datos (durante un evento BEFORE INSERT o BEFORE UPDATE). Evalúa una condición lógica sobre los datos de la fila y sobrescribe una columna objetivo (target_field) según el resultado.
Cómo Funciona
Section titled “Cómo Funciona”- Evaluación de Condición: Al guardar la fila, el motor evalúa la regla en la propiedad
condition. - Asignación Condicional:
- Si se cumple: El campo
target_fieldse completa con el valor definido enthen_value. - Si NO se cumple: El campo
target_fieldse completa con el valor definido enelse_value.
- Si se cumple: El campo
- Resolución de Valores Dinámicos: Los términos de la condición (
var_a,var_b) y los resultados (then_value,else_value) pueden ser literales fijos o extraerse dinámicamente del registro medianteprop(columna).
Resolución de Expresiones y Propiedades Virtuales
Section titled “Resolución de Expresiones y Propiedades Virtuales”Para evaluar condiciones y resolver los valores en prop(...), el motor cuenta con soporte para evaluar las siguientes reglas de modelado avanzado configuradas en las propiedades:
- Lookups Recursivos (
lookup): Resuelve valores de columnas en tablas foráneas siguiendo relaciones definidas. Por ejemplo,t6c7,t2c1indicará al motor que lea el ID ent6c7, busque esa fila en su respectiva tabla y traiga el valor de la columnat2c1. - Fórmulas Matemáticas (
math): Resuelve operaciones aritméticas estándar (ej.t14c12 + t14c2). Admite la palabra clave{snapshot:columna}para hacer referencia al valor anterior del campo antes de ser editado (solo en actualizaciones). - Sumatoria Externa (
sum_from): Suma dinámicamente valores de una columna en una tabla externa que coincidan con ciertos criterios (ej. sumar facturas asociadas a un cliente). - Sumatoria por Partición (
sum_over_partition): Suma valores de una o varias columnas de la misma tabla, agrupados por criterios y excluyendo la fila actual. - Sumatoria de Objetos en Lista (
sum_obj_list): Suma los valores de registros relacionados mediante una lista de objetos (ObjectList), resolviendo la unión a través de su tabla junction correspondiente.
Configuración de Reglas JSON
Section titled “Configuración de Reglas JSON”Estructura de propiedades requeridas dentro de rules para una automatización de tipo passive_conditional_edit:
Propiedades Requeridas
Section titled “Propiedades Requeridas”condition: Objeto que define la comparación lógica:var_a: Primer término de la comparación. Admite literales oprop(columna).operator: Operador lógico. Soportados:eq(=),neq(<>),lt(<),lte(<=),gt(>),gte(>=).var_b: Segundo término de la comparación. Admite literales oprop(columna).
target_field: Columna física del registro actual que se va a actualizar con el resultado.then_value: Valor a asignar si la condición es verdadera. Admite literales oprop(...).else_value: Valor a asignar si la condición es falsa. Admite literales oprop(...).
Ejemplo de Configuración Completa
Section titled “Ejemplo de Configuración Completa”En este ejemplo, comparamos el valor de la columna t0c1 con el de t0c2. Si t0c1 es menor que t0c2 (t0c1 < t0c2), la columna destino t0c3 se completará con "valor A". De lo contrario, se guardará "valor B":
{ "condition": { "var_a": "prop(t0c1)", "operator": "lt", "var_b": "prop(t0c2)" }, "target_field": "t0c3", "then_value": "valor A", "else_value": "valor B"}