- Introducción
- Primeros pasos
- Modelado de procesos con BPMN
- Comprender el modelado del proceso
- Abrir el lienzo de modelado
- Modelar tu proceso
- Alinear y conectar elementos BPMN
- Autopilot para Maestro (vista previa)
- Repositorio de procesos
- Modelado de procesos con gestión de casos
- Diseñar un esquema de entidad de caso persistente
- Definir claves de caso (de sistema o externo)
- Establecer contratos de entrada/salida y de escritura diferida de tareas
- Reglas de salida y terminación temprana de etapas
- Modelar las etapas principal y secundaria
- Iniciar un caso desde Data Fabric
- Implementar perfiles y permisos a nivel de etapa
- Establecer SLA y reglas de escalado automatizadas
- Configurar un bucle de reprocesamiento (reingreso)
- Gestionar instancias de casos en ejecución: pausar, migrar y reintentar
- Diccionario de componentes de la gestión de casos de Maestro
- Modelado de procesos con Flow
- Implementación del proceso
- Depuración
- Simular
- Publicar y actualizar procesos de agente
- Escenarios de implementación comunes
- Extracción y validación de documentos
- Operaciones de proceso
- Supervisión de procesos
- Optimización de procesos
- Información de referencia
Sintaxis de expresión JavaScript para variables, operadores y condiciones en flujos de trabajo de Flow.
Las expresiones de flujo son JavaScript. Hacen referencia a variables con el prefijo $vars y calculan valores en campos de configuración, condiciones de decisión y cambio, y código de script.
Para saber cómo se mueven los datos entre los nodos y el modelo de variables en profundidad, consulta Variables y flujo de datos.
Referencias de variables
Cada valor al que haces referencia se encuentra en $vars:
$vars.httpRequest1.output.body // node output
$vars.orderTotal // variable
$vars.manualTrigger1.output.userId // trigger input
$vars.httpRequest1.output.body // node output
$vars.orderTotal // variable
$vars.manualTrigger1.output.userId // trigger input
- Salida del nodo:
$vars.<nodeName>.output. Cada nodo expone su resultado en.output. La forma de ese objeto depende del nodo, así que consulta la página de referencia de cada nodo para ver sus campos de salida. - Variables:
$vars.<name>. - Entradas de desencadenador:
$vars.<triggerName>.output.<inputName>.
Para las propiedades anidadas, utiliza la notación de puntos; para los elementos de la matriz, utiliza la notación de corchetes:
$vars.httpRequest1.output.body.customer.email
$vars.httpRequest1.output.body.items[0].id
$vars.httpRequest1.output.body.customer.email
$vars.httpRequest1.output.body.items[0].id
Dónde se escriben las expresiones
El flujo tiene dos modos, dependiendo del campo:
Campos (de texto) literales : incrusta una expresión en el texto circundante con llaves dobles. Usa esto solo cuando se espere texto de solicitud o plantilla:
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
Campos de expresión (condiciones de Decisión y Cambio, la sección Actualizar variable) y código de script : escribe la expresión directamente, sin llaves:
$vars.httpRequest1.output.statusCode === 200
$vars.httpRequest1.output.statusCode === 200
Operadores
Se admiten los operadores JavaScript estándar:
| Operador | Ejemplo | Resultado |
|---|---|---|
| Igualdad | $vars.status === "active" | true o false |
| Desigualdad | $vars.count !== 0 | true o false |
| Comparación | $vars.price > 100 | true o false |
| Lógico y | $vars.isVerified && $vars.isActive | true o false |
| Lógico o | $vars.role === "admin" || $vars.role === "owner" | true o false |
| Ternario | $vars.count > 0 ? "has items" : "empty" | String |
Operaciones de cadena
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
Los literales de plantilla combinan variables y texto estático:
`Hello ${firstName}, your order #${orderId} has shipped.`
`Hello ${firstName}, your order #${orderId} has shipped.`
Encadenamiento opcional
Usa ?. para acceder de forma segura a propiedades que pueden no estar definidas:
$vars.httpRequest1.output.body?.items?.[0]?.id
$vars.httpRequest1.output.body?.items?.[0]?.id
undefined en lugar de generar un error de runtime si cualquier propiedad intermedia es nula o no está definida.
Fusión nula
Usa ?? para proporcionar un valor predeterminado cuando un valor es nulo o indefinido:
$vars.userName ?? "Anonymous"
$vars.userName ?? "Anonymous"
Errores comunes
| Síntoma | Causa | Qué hacer |
|---|---|---|
Una expresión se resuelve en undefined | Hizo referencia a la salida de un nodo antes de que se ejecute ese nodo, o a un campo que no existe en la salida | Salida de referencia solo de nodos ascendentes; consulta la página de referencia del nodo para ver sus campos de salida reales. Utilice el encadenamiento opcional (?.) para las propiedades que puedan faltar. |
| Una condición de decisión o cambio se comporta de forma inesperada o falla | La condición no es una expresión booleana simple, por ejemplo, está escrita como una declaración return | Escribe una expresión simple que se resuelva en true o false, por ejemplo $vars.order1.output.total > 1000. No utilices return. |
Cannot find name '$vars' (o '$self') | La variable no está dentro del ámbito de este nodo, o $self se utiliza en un nodo que no produce salida propia | Referencia solo a las variables mostradas en el selector de variables para ese nodo. $vars se resuelve solo en variables dentro del ámbito; $self solo está disponible en los nodos que producen salida. |
| Un valor de otro nodo no está disponible para hacer referencia | El ámbito es solo ascendente: un nodo no puede ver nodos descendentes, nodos de ramas hermanas o nodos dentro de un bucle del que ya ha salido | Reestructura para que el nodo productor esté más arriba de donde lo referencias, o transmite el valor a través de una variable que esté dentro del ámbito. |
$vars.<node>.error no está disponible | La salida de error de un nodo solo está dentro del ámbito cuando la gestión de errores está habilitada en él (o su ruta de error está conectada) | Habilita la gestión de errores en el nodo o conecta su gestor de errores y luego haz referencia a $vars.<node>.error. |
{{ }} se muestra como texto literal o un campo de texto no se resuelve | Falta de coincidencia de modos: {{ }} solo funciona en campos literales (texto) | Usar {{ $vars.x }} solo en campos de texto sin formato; en los campos de expresión y en las condiciones de Decisión y Cambio, escribe $vars.x directamente sin llaves. |
Las condiciones de decisión y cambio se ejecutan como expresiones en runtime. Una instrucción return solo es válida en el código del nodo Script.
Notas
- Las expresiones se evalúan en tiempo de ejecución, no en tiempo de diseño. Los errores de sintaxis surgen cuando se ejecuta el nodo.
- Una expresión en un campo de configuración debe resolverse en el tipo que espera el campo: un campo de condición debe resolverse en
trueofalse. - Los prefijos
=y=js:que puedes ver en un archivo.flowson formatos de serialización internos. Nunca se escriben en el editor. - La comprobación de tipos es el mejor esfuerzo. Las referencias a salidas poco escritas (objetos o matrices escritos como
any) no se validan por completo, por lo que un error tipográfico en un nombre de campo anidado puede pasar sin una advertencia: comprueba las rutas anidadas con la salida del nodo.