Lógica Dinámica y Expresiones

Expresiones de Lógica Dinámica

Esta guía explica cómo escribir y usar expresiones con el motor de Lógica Dinámica de Fluid.

Las expresiones de Lógica Dinámica se utilizan en todo Fluid para calcular valores, evaluar reglas e impulsar comportamientos como verificaciones de gobernanza, campos calculados, automatización y lógica condicional.

Este artículo explica los conceptos fundamentales, la sintaxis y los patrones comunes, con ejemplos prácticos que puede reutilizar.


1. ¿Qué es una expresión de Lógica Dinámica?

Una expresión de Lógica Dinámica es una pequeña fórmula que se evalúa contra un contexto, es decir, un conjunto de campos y valores con nombre disponibles en el momento en que se ejecuta la expresión.

Las expresiones se utilizan en todo Fluid para calcular valores, evaluar reglas e impulsar comportamiento condicional. Se usan comúnmente para:

  • Calcular el valor de propiedades personalizadas (por ejemplo, derivar una puntuación, estado o categoría en un formulario)

  • Aplicar reglas de negocio y lógica de gobernanza basada en datos de proyectos o tarjetas

  • Categorizar datos usando umbrales o condiciones (por ejemplo, bandas de riesgo o rangos de duración)

  • Controlar resultados en automatización y lógica de flujo de trabajo

  • Derivar valores de fechas, números y campos de texto sin actualizaciones manuales

Una expresión puede:

  • Comparar valores

  • Combinar texto

  • Realizar operaciones aritméticas

  • Tomar decisiones (usando IF o CASE)

  • Trabajar con fechas (por ejemplo, duraciones y categorización)

Las expresiones se evalúan de forma dinámica, lo que significa que el resultado se actualiza automáticamente cada vez que cambian los datos subyacentes.


2. Referencia a campos

Los valores de los campos se referencian usando corchetes:

[FieldName]

Los nombres de los campos no distinguen entre mayúsculas y minúsculas.

Las expresiones pueden referenciar tanto propiedades de primera clase (como atributos de proyecto) como propiedades personalizadas. Las propiedades personalizadas se exponen usando múltiples formatos de referencia.

Para una propiedad personalizada con la clave Score y la etiqueta Priority Score, están disponibles las siguientes referencias:

[Score] // nombre de clave
[Priority Score] // nombre de etiqueta
[_Score] //Alias con guion bajo para el nombre de clave

Se recomienda usar el alias con guion bajo (por ejemplo [_Score]) porque:

  • Deja claro de inmediato que el valor proviene de una propiedad personalizada

  • Reduce el riesgo de conflictos de nombres con campos estándar (de primera clase)

  • Mejora la legibilidad en expresiones más largas o complejas

Cuando existe algún riesgo de ambigüedad o conflicto, el alias con guion bajo proporciona la referencia más predecible y fácil de mantener.


3. Operadores

Aritméticos

+ - * / %

Comparación

= <> < <= > >=

Lógicos

AND OR NOT

Agrupación

( ... )

Cadenas de texto

La concatenación de cadenas usa +.
Si alguno de los lados no es numérico, el resultado se trata como texto.

[Tier] + "-" + [_RiskLevel]


4. Funciones de decisión: IF y CASE

IF

Use IF para una decisión simple de sí/no.

IF(condition, whenTrue, whenFalse)

Ejemplo:

IF([Tier] = "Gold", "Premium", "Standard")

CASE

Use CASE cuando tenga múltiples condiciones ordenadas.

CASE(
  condition1, result1,
  condition2, result2,
  ...
  defaultResult
)

Ejemplo:

CASE(
  [Prop.Score] >= 90, "Gold",
  [Prop.Score] >= 80, "Silver",
  "Bronze"
)

Las condiciones se evalúan de arriba hacia abajo, y se devuelve la primera coincidencia.


5. COALESCE – Primer valor no nulo

COALESCE devuelve el primer valor no nulo y no vacío.

COALESCE([Missing], [Tier], "Unknown")

Esta es la forma recomendada de manejar campos opcionales de forma segura.


6. Funciones de coincidencia de texto (CONTAINS, STARTSWITH, ENDSWITH)

CONTAINS

Determina si un término de búsqueda dado (term) aparece en una cadena de destino (value). Devuelve un booleano (TRUE / FALSE).

Sintaxis:

CONTAINS(value, term, {case insensitive}, {whole word match})

value (requerido): El texto en el que buscar.

term (requerido): El término de búsqueda a buscar.

case insensitive (opcional, predeterminado TRUE): Si es TRUE, la comparación no distingue mayúsculas de minúsculas. Si es FALSE, la comparación distingue mayúsculas de minúsculas.

whole word match (opcional, predeterminado FALSE): Si es TRUE, solo se consideran coincidencias de palabras completas. Si term = 'here', entonces el valor 'are you here' coincidirá, pero el término 'are you there' NO coincidirá


Ejemplo:

CONTAINS([Value], "risk")         -- TRUE si aparece 'risk' (sin distinción de mayúsculas por defecto)

Was this article helpful?