- Comience ya
- Crear
- Añadir un agente de IA a un flujo de trabajo
- Llamar a una API externa
- Procesar correos electrónicos entrantes
- Crear un flujo de trabajo de notificación de Slack
- Añadir aprobación humana a un flujo de trabajo
- Crear un flujo de trabajo de agente de chat
- Gestionar errores
- Fundamentos de la depuración
- Intervención humana: escalada o paso humano
- Evaluar tus flujos de trabajo
- Implementar y ejecutar
- Ejemplos
- Referencia
Sintaxis de expresión
Sintaxis de expresión JavaScript para variables, operadores y condiciones en flujos de trabajo.
Una expresión es una pequeña porción de JavaScript, un lenguaje de programación ampliamente utilizado, que lee o calcula un valor. Las expresiones en un flujo de trabajo hacen referencia a valores con el prefijo $vars , y se utilizan en los campos de configuración, las condiciones de decisión y cambio y el código de script.
Las variables y el flujo de datos describen cómo se mueven los datos entre nodos y cómo funcionan las variables.
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, por lo que cada página de la referencia del nodo enumera los campos de salida de su nodo. - Variables:
$vars.<name>. - Entradas de desencadenador:
$vars.<triggerName>.output.<inputName>.
Las propiedades anidadas utilizan la notación de puntos y los elementos de la matriz utilizan 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
La regla en resumen: escribe $vars… directamente en el código de script, en las condiciones y en los campos establecidos en Expresión y envuélvela {{ $vars… }} dentro de los campos de texto establecidos en Valor fijo.
La mayoría de los campos de configuración pueden contener un valor fijo o una expresión. Un icono en el extremo derecho del campo abre un menú con tres opciones:
- Valor fijo: introduce un valor directamente.
- Expresión: escribe una expresión JavaScript. El editor ofrece IntelliSense, que sugiere nombres y propiedades a medida que escribes. En este modo, el campo muestra un
=antes de la expresión. - Borrar valor: vacía el campo.
El menú Insertar junto a la etiqueta del campo abre una lista de búsqueda de los valores disponibles en ese nodo. La lista es un árbol en $vars, con una entrada para cada nodo, su output y los campos dentro de ella, y cada campo muestra su tipo, como string o object. La lista también tiene un grupo $metadata con las entradas FolderKey, InstanceId, ProcessKey y ElementCount.
Campos de valor fijo
Un campo establecido en Valor fijo contiene texto. Para incrustar una expresión en el texto, selecciona un valor en el menú Insertar , que envuelve la referencia entre llaves dobles. El editor comprueba la referencia e informa de un problema debajo del campo, por ejemplo, cuando una propiedad no existe en la salida del nodo:
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
Campos de expresión y código de script
Un campo establecido en las condiciones Expresión, Decisión y Interruptor, la sección Actualizar variable y el código de script toman la expresión directamente, sin llaves:
$vars.httpRequest1.output.code === 200
$vars.httpRequest1.output.code === 200
En un campo de expresión, el texto y un valor se combinan uniéndolos con + o utilizando un literal de plantilla. Ambas de las siguientes producen el mismo resultado:
"https://api.example.com/users/" + $vars.manualTrigger1.output.userId
`https://api.example.com/users/${$vars.manualTrigger1.output.userId}`
"https://api.example.com/users/" + $vars.manualTrigger1.output.userId
`https://api.example.com/users/${$vars.manualTrigger1.output.userId}`
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 ${$vars.firstName}, your order #${$vars.orderId} has shipped.`
`Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`
Encadenamiento opcional
El operador lee de ?. segura propiedades que pueden no estar definidas:
$vars.httpRequest1.output.body?.items?.[0]?.id
$vars.httpRequest1.output.body?.items?.[0]?.id
El resultado es undefined en lugar de un error de runtime, si cualquier propiedad intermedia es nula o no está definida.
Fusión nula
El operador proporciona un valor ?? 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 en una rama hermana 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. |
Failed to evaluate expression =js:(https://...): Unexpected token ':' | Un valor plano, como una URL, está en un campo establecido en Expresión sin comillas, por lo que se lee como JavaScript | Cambia el campo a Valor fijo o pon el texto entre comillas, por ejemplo "https://api.example.com/users". |
{{ }} se muestra como texto literal o un campo de texto no se resuelve | Falta de coincidencia de modos: {{ }} solo funciona en campos establecidos en Valor fijo | Usa {{ $vars.x }} solo en campos de valor fijo. 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 ese campo. Un campo de condición debe resolverse como
trueofalse. - Un campo de expresión muestra un
=antes de la expresión para marcar el modo de expresión. El prefijo=js:que aparece en un archivo.flowes un formato de serialización interno y nunca se escribe en el editor. - La comprobación de tipos es parcial. Las referencias a salidas sin una estructura fija no se validan por completo, por lo que un error tipográfico en un nombre de campo anidado puede pasar sin una advertencia. Compara las rutas anidadas con los campos de salida enumerados en la referencia del nodo.
Próximos pasos
- Variables y flujo de datos: cómo se mueven los datos entre nodos.
- Script: escribe JavaScript en un nodo.
- Comunidad: haz preguntas y comparte flujos de trabajo con otros constructores en UiPath Forum.