Saltar a contenido

Condiciones

Una condición es una expresión que decide si algo ocurre. Se evalúa como verdadera o falsa, y esa respuesta decide si se muestra un paso, a qué tarea pasa el caso o si se ejecuta un desencadenador.

Dónde se usan las condiciones

Lugar Qué decide Dónde se escribe
Condición del paso Si un formulario, un documento de entrada o uno de salida aparece en la tarea Propiedades de la tarea → Pasos
Condición del desencadenador Si se ejecuta un desencadenador adjunto a un paso Con el desencadenador, en el paso que lo ejecuta
Regla de enrutamiento A qué tarea pasa el caso Compuertas y eventos → Reglas de enrutamiento
Condición de formulario Si un control se muestra u oculta El editor de mostrar/ocultar del formulario
Dentro del código de un desencadenador Cualquier verificación que necesites en el código evaluateFunction()

Las tres primeras se ejecutan en el servidor, con el mismo motor, y usan el lenguaje de expresión que se describe abajo. Las condiciones de formulario se ejecutan en el navegador, en JavaScript, y tienen su propia sintaxis: ver Condiciones de formulario.

El lenguaje de expresión

Una condición del servidor es una expresión PHP. Todo lo que PHP evalúa como verdadero deja que la ejecución continúe; lo que evalúa como falso la detiene. Eso incluye comparaciones, aritmética, los operadores lógicos and, or, xor y !, y paréntesis para agrupar términos.

(@#Amount >= 1000 and @@Priority == "high") or @@Approved == "yes"

El texto va entre comillas. Una palabra suelta se lee como constante y casi nunca es lo que quieres.

Leer una variable

Las variables del caso se escriben con un prefijo de dos caracteres. El prefijo decide cómo se lee el valor guardado:

Prefijo Lee el valor como Ejemplo
@@ Texto @@Priority == "high"
@% Número entero @%Days > 3
@# Número decimal @#Amount >= 1500.75
@? Texto preparado para una URL @?Search == "open"
@$ Texto escapado para SQL @$Name == "O'Brien"
@= El valor original, sin conversión @=Count == 0

@? y @$ importan cuando el valor se usa para armar un enlace o una consulta, no cuando solo comparas dos valores. @= es la opción segura cuando la variable ya tiene el tipo que necesitas, por ejemplo un número guardado en una columna de una grilla.

El prefijo se elige al escribir la condición

El prefijo es parte de la expresión, no una propiedad de la variable. La misma variable puede leerse como texto en una condición y como número en otra.

Comparar una grilla

Una grilla guarda filas, no un valor único. Lee una celda con corchetes: la grilla, la fila y luego la columna. La primera fila es 0:

@#Items[0]['Price'] > 100

Las condiciones de formulario leen la misma celda con un punto en lugar de corchetes: ver Condiciones de formulario.

Una variable que no existe

Si la condición nombra una variable que el caso todavía no guardó, el motor la reemplaza por una cadena vacía y continúa. La condición simplemente resulta falsa.

Eso es cómodo mientras armas un proceso y peligroso en producción: un error de tipeo en el nombre de una variable no genera un error, cambia la ruta en silencio. Cuando un caso toma un camino inesperado, revisa la ortografía de cada variable de la condición antes de buscar en otro lado.

Reglas de enrutamiento

Las reglas de enrutamiento se evalúan en el orden que muestra la ventana, y ese orden es el que fijas arrastrando las filas.

Compuerta Cuando varias condiciones son verdaderas
Exclusiva (regla de enrutamiento de evaluación) Gana la primera regla de la lista; las demás no se toman
Paralela por evaluación Se toma cada regla cuya condición sea verdadera
Flujo por defecto Se usa solo cuando ninguna regla coincidió

Si ninguna regla coincide y no hay flujo por defecto, el caso no puede avanzar y se detiene con Error de definición de proceso: Las condiciones en la regla de derivación se evaluaron como falso, el flujo se detuvo. Cambiar la definición de la evaluación de la regla de derivación. El arreglo está en la definición del proceso, no en el caso: agrega un flujo por defecto o amplía una condición.

Ver Compuertas y eventos para el comportamiento completo de cada compuerta.

Condiciones de formulario

Mostrar y ocultar un control usa otro editor y otro motor: la condición se evalúa en el navegador, en JavaScript, y solo afecta lo que ve el usuario. El valor guardado no cambia.

  • Referencia el valor de un control con @#campo, y una celda de grilla con @#grilla.columna.
  • Una regla indica qué hace —mostrar, ocultar, mostrar solo, ocultar solo, mostrar todo, ocultar todo— y a qué controles aplica.
  • Una regla se ejecuta con un evento: al cargar el formulario, al cambiar un campo, o ambos. Un campo de texto se dispara al salir de él, una casilla al hacer clic y una lista al elegir otra opción.
  • El editor permite probar la condición antes de guardar. Guardar una condición sin probar pregunta No ha probado la condición. ¿Desea guardarla de todos modos?; guardar una con error pregunta Tiene un error en la condición. ¿Desea guardarlo de todos modos? Ambas son confirmaciones, no bloqueos: léelas.

Condiciones en el código de un desencadenador

evaluateFunction() ejecuta una expresión desde dentro de un desencadenador, con una grilla como fuente de datos. Es la forma de aplicar las mismas reglas a cada fila de una grilla sin escribir el bucle.

Relacionado