- Comience ya
- Crear
- El lienzo
- Variables y flujo de datos
- Sintaxis de expresión
- Flujo de control
- Administración de errores
- Salida simulada
- Evaluaciones
- 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
Variables y flujo de datos
Cómo fluyen los datos entre nodos a través de la salida del nodo y las variables, con reglas de ámbito para subflujos y ramas.
Los nodos de un flujo de trabajo no comparten datos automáticamente. Cuando un nodo produce una salida, como una respuesta HTTP o un valor calculado, los nodos posteriores, llamados nodos descendentes, leen esa salida a través de expresiones. Una expresión es una pequeña porción de JavaScript que lee o calcula un valor. El flujo de datos es cómo un flujo de trabajo pasa valores entre nodos y los mantiene durante una ejecución.
Los datos se mueven a través de un flujo de trabajo de dos maneras:
- Salida del nodo: cada nodo produce una salida a la que los nodos posteriores pueden hacer referencia.
- Variables: valores en el nivel de flujo de trabajo que defines para almacenar y pasar valores entre nodos.
La sintaxis de la expresión describe la gramática completa, los operadores y cómo escribir referencias $vars .
Cómo funciona
Salida del nodo
Cada nodo que produce datos los pone a disposición a través de $vars.<nodeName>.output. El nombre de nodo se asigna automáticamente a partir del tipo de nodo. Por ejemplo, el primer nodo de solicitud HTTP se llama httpRequest1 y el segundo se llama httpRequest2.
El nombre de la variable de un nodo es su ID, que se muestra en la pestaña Avanzado del panel de propiedades cuando se selecciona el nodo. El icono del lápiz junto a ID lo cambia.
// Access HTTP Request response
$vars.httpRequest1.output.body
$vars.httpRequest1.output.code
// Access Script return value
$vars.script1.output
// Access a second HTTP Request
$vars.httpRequest2.output.body
// Access HTTP Request response
$vars.httpRequest1.output.body
$vars.httpRequest1.output.code
// Access Script return value
$vars.script1.output
// Access a second HTTP Request
$vars.httpRequest2.output.body
La estructura de salida depende del tipo de nodo. Cada página de la referencia del nodo enumera la salida de su nodo.
Errores de nodo
Cuando un nodo falla y su controlador de errores está conectado, los detalles del fallo están $vars.<nodeName>.error, junto a la salida del nodo. Léelos en los nodos de la ruta de error, por ejemplo, en un nodo de Script que registra el fallo:
// Read the error of a failed HTTP Request
$vars.httpRequest1.error.message // what went wrong
$vars.httpRequest1.error.status // the HTTP status, for example 404
// Read the error of a failed HTTP Request
$vars.httpRequest1.error.message // what went wrong
$vars.httpRequest1.error.status // the HTTP status, for example 404
El objeto de error solo existe en la ruta de error. En la ruta correcta, $vars.<nodeName>.error no está definido. El objeto de error enumera todos sus campos.
Variables
Las variables son valores en el nivel de flujo de trabajo que persisten durante una sola ejecución. Las defines en el panel Variables , que se abre desde la pestaña Variables junto a la pestaña Propiedades a la derecha. El panel enumera las Entradas, Salidas y Variables del flujo de trabajo, y la salida de cada nodo. Una alternancia cambia entre Todas las variables y Nodo seleccionado. El icono Centrarse en el nodo en la fila de un nodo amplía el lienzo a ese nodo. Con Nodo seleccionado activado, el panel se limita al nodo seleccionado, y su encabezado muestra el nombre de ese ámbito, por ejemplo Ámbito: desencadenador manual.
El + junto a Variables en el panel abre el cuadro de diálogo Añadir variable . Cada variable tiene:
- Nombre: cómo se hace referencia a él en las expresiones, por ejemplo
$vars.orderTotal. - Tipo de datos: cadena, número, booleano, objeto o matriz.
- Descripción: una nota opcional sobre lo que representa el valor.
- Valor predeterminado: un valor de partida opcional.
Las variables en el nivel de flujo de trabajo son siempre bidireccionales: cualquier nodo puede leerlas o escribirlas. No hay ajustes de dirección para configurar. Un valor de solo lectura o de solo escritura proviene de una entrada de desencadenador o una variable de salida, como se describe a continuación.
Los tres tipos de datos difieren según el lugar donde los definas:
| Clase | Definido en | Dirección | Sintaxis de referencia |
|---|---|---|---|
| Variable | Panel de variables , junto a Variables | Bidireccional (lectura y escritura) | $vars.<name> |
| EntradaDeDesencadenador | En el nodo del desencadenador o en el panel Variables junto al desencadenador | SOLO LECTURA | $vars.<triggerName>.output.<name> |
| Variable de salida | En un nodo final o en el panel Variables junto a Salidas | Solo escritura | $vars.<name> |
Cuándo utilizar cada uno:
- La salida del nodo se ajusta a los datos que pasan de un nodo al siguiente. Este es el patrón más común.
- Las variables se ajustan a valores que deben ser accesibles en todo el flujo de trabajo.
- Las entradas y salidas se ajustan a valores que definen lo que el propio flujo de trabajo recibe o devuelve, como se describe en Entradas de desencadenador y Variables de salida a continuación.
Los nombres descriptivos de camelCase, como customerEmail, invoiceTotal y apiResponse, siguen siendo legibles en los seguimientos de ejecución a lo largo del tiempo. Los nombres de una sola letra y las abreviaturas pierden significado rápidamente.
Entradas de desencadenador
Las variables de entrada no están definidas en la sección Variables . Se añaden como argumentos de entrada en el panel de propiedades del desencadenador, o con el + junto al desencadenador en el panel Variables , que abre el cuadro de diálogo Añadir variable de entrada . Ambas formas las convierten en de solo lectura. Cuando se activa un desencadenador, sus entradas están disponibles como $vars.<triggerName>.output.<inputName>:
// Access an input defined on a Manual Trigger named "manualTrigger1"
$vars.manualTrigger1.output.userId
// Access an input defined on a Manual Trigger named "manualTrigger1"
$vars.manualTrigger1.output.userId
Esto se aplica a todos los tipos de desencadenador. Si tu flujo de trabajo tiene varios desencadenadores, cada desencadenador posee sus propias entradas, y los nodos posteriores hacen referencia al desencadenador específico que inició la ejecución.
Variables de salida
Las variables de salida representan el resultado del flujo de trabajo. Se añaden con Añadir variable de salida en la pestaña Parámetros de un nodo final, o con el + junto a Salidas en el panel Variables . Son de solo escritura.
// Access an output variable named "finalStatus"
$vars.finalStatus
// Access an output variable named "finalStatus"
$vars.finalStatus
Cada variable de salida tiene:
- Nombre: cómo se hace referencia a él en las expresiones, por ejemplo
$vars.finalStatus. - Tipo de datos: cadena, número, booleano, objeto o matriz.
- Descripción: una nota opcional sobre lo que representa el valor.
- Valor predeterminado: un recurso alternativo opcional utilizado cuando nada establece la variable.
El valor de una variable de salida se establece de la misma manera que cualquier otra variable: desde la sección Actualizar variable de un nodo, o como valor de retorno de un nodo de Script.
Definiciones de variables
Las definiciones de variables se encuentran en el panel Variables . Cada definición almacena el nombre y el tipo de variable para que se pueda hacer referencia al valor de forma coherente durante una ejecución.
Actualizaciones de variables
Las variables pueden actualizarse por configuración de nodo o por salida de nodo de Script.
Desde cualquier nodo
Cada nodo tiene una sección Actualizar variable en la pestaña Avanzado del panel de propiedades, donde Añadir actualización de variable añade una asignación. La sección almacena un destino de variable de escritura, que es una variable de flujo de trabajo o una variable de salida, y la expresión JavaScript asignada a ella. La expresión se evalúa después de que se complete el nodo.
Desde un nodo de Script
Se puede acceder al valor devuelto de un nodo de script en sentido descendente como $vars.<scriptName>.output. El nodo Script también tiene la misma sección Actualizar variable que otros nodos para escrituras directas de variables:
// The return value becomes $vars.script1.output
return {
orderTotal: $vars.httpRequest1.output.body.price * $vars.httpRequest1.output.body.quantity
};
// The return value becomes $vars.script1.output
return {
orderTotal: $vars.httpRequest1.output.body.price * $vars.httpRequest1.output.body.quantity
};
Reglas de ámbito
Un nodo puede acceder a la salida desde:
- Nodos ascendentes en el mismo ámbito: nodos en el mismo nivel que se ejecutaron antes.
- Nodos contenedores principales: si el nodo está dentro de un subflujo o bucle, puede acceder al ámbito del principal.
Ámbito significa la parte de un flujo de trabajo donde se puede leer un nombre. Un nodo no puede acceder a la salida de:
- Nodos en una rama diferente: si una Decisión o Switch envió la ejecución por una ruta diferente, la salida de esos nodos no está disponible.
- Nodos que no se han ejecutado: la salida solo existe después de que se ejecuta un nodo.
Ámbito de subflujo
Los subflujos crean su propio ámbito de variable. Los nodos dentro de un subflujo pueden acceder a:
- Otros nodos dentro del mismo subflujo
- El ámbito del flujo de trabajo principal
Las variables actualizadas dentro de un subflujo tienen espacio de nombres, lo que significa que van prefijadas con el nombre del subflujo, para evitar colisiones con el flujo de trabajo principal. Por ejemplo, una variable counter dentro de un subflujo llamado subflow1 se referencia como $vars.subflow1.counter desde fuera del subflujo.
El valor devuelto del subflujo es accesible para el flujo de trabajo principal como $vars.<subflowName>.output.
Ramas paralelas
Cada rama paralela tiene sus propias variables. Mutar una variable dentro de una rama no hace que el cambio sea visible en otra rama. Un nodo Fusionar consolida las salidas de rutas paralelas cuando las rutas necesitan volver a unirse.
Patrones
Crear cadenas dinámicas
Los literales de plantilla en un nodo de Script combinan variables y texto estático:
return `Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`;
return `Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`;
Acumular valores en un bucle
Un patrón acumulador utiliza una matriz inicializada antes del nodo Bucle y anexada dentro del cuerpo del bucle:
// Script node inside the Loop body
results.push(item.processedValue);
return results;
// Script node inside the Loop body
results.push(item.processedValue);
return results;
Mantener los valores secretos fuera de los registros
Los valores de las variables secretas están enmascarados en la IU, pero pueden aparecer en los datos de seguimiento exportados. Registrarlos es un riesgo de exposición de datos.
Ejemplo práctico
Un flujo de trabajo que obtiene un usuario de una API y lo enruta en función de su rol tiene tres nodos:
- Solicitud HTTP (
httpRequest1): envía una solicitud GET ahttps://api.example.com/users/42. - Script (
script1): extrae el rol del usuario, con este código:
const user = $vars.httpRequest1.output.body;
return {
name: user.name,
role: user.role,
isAdmin: user.role === "admin"
};
const user = $vars.httpRequest1.output.body;
return {
name: user.name,
role: user.role,
isAdmin: user.role === "admin"
};
- Decisión (
decision1): se ramifica en estado de administrador, con esta expresión:
$vars.script1.output.isAdmin === true
$vars.script1.output.isAdmin === true
La rama Verdadero otorga acceso de administrador y la rama Falso otorga acceso estándar.
Próximos pasos
- Sintaxis de las expresiones: gramática
$vars, operadores, dónde se escriben las expresiones y errores comunes. - Nodo de script: escritura de JavaScript, valores devueltos y acceso
$vars. - Nodo de decisión: ramificación en expresiones.
- El lienzo Flujo: el panel de propiedades y el panel Variables.
- Comunidad: haz preguntas y comparte flujos de trabajo con otros constructores en UiPath Forum.
- Cómo funciona
- Salida del nodo
- Errores de nodo
- Variables
- Entradas de desencadenador
- Variables de salida
- Definiciones de variables
- Actualizaciones de variables
- Desde cualquier nodo
- Desde un nodo de Script
- Reglas de ámbito
- Ámbito de subflujo
- Ramas paralelas
- Patrones
- Crear cadenas dinámicas
- Acumular valores en un bucle
- Mantener los valores secretos fuera de los registros
- Ejemplo práctico
- Próximos pasos