- Démarrer
- Construire
- Ajouter un agent d'IA à un workflow
- Appeler une API externe
- Traiter les e-mails entrants
- Créer un workflow de notification Slack
- Ajouter une approbation humaine à un workflow
- Créer un workflow d’agent de chat
- Gérer les erreurs
- Principes de base du débogage
- L'humain dans la boucle: escalade ou étape humaine
- Évaluation de vos workflows
- Déployer et exécuter
- Exemples
- Référence (Reference)
Syntaxe de l'expression
Syntaxe des expressions JavaScript pour les variables, les opérateurs et les conditions dans les workflows.
Une expression est un court élément de JavaScript, un langage de programmation largement utilisé, qui lit ou calcule une valeur. Les expressions d'un workflow font référence aux valeurs avec le préfixe $vars et sont utilisées dans les champs de configuration, les conditions de Décision et de Bascule et le code de Script.
Le rapport Variables et flux de données décrit comment les données sont déplacées entre les nœuds et le fonctionnement des variables.
Références de variables
Chaque valeur à laquelle vous faites référence est disponible sous $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
- Sortie du nœud:
$vars.<nodeName>.outputChaque nœud expose son résultat sous.output. La forme de cet objet dépend du nœud, de sorte que chaque page de la référence du nœud répertorie les champs de sortie de son nœud. - Variables :
$vars.<name>. - Entrées de déclencheur :
$vars.<triggerName>.output.<inputName>.
Les propriétés imbriquées utilisent la notation pointée et les éléments de tableau utilisent la notation crochet:
$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
Où vous écrivez des expressions
La règle en bref: écrivez $vars… directement dans le code de script, dans les conditions et dans les champs définis sur Expression et encapsulez-le dans {{ $vars… }} à l'intérieur des champs de texte définis sur Valeur fixe.
La plupart des champs de configuration peuvent contenir une valeur fixe ou une expression. Une icône à l’extrémité droite du champ ouvre un menu avec trois options:
- Valeur fixe: saisissez directement une valeur.
- Expression: écrivez une expression JavaScript. L'éditeur propose IntelliSense, qui suggère des noms et des propriétés au fur et à mesure que vous saisissez. Dans ce mode, le champ affiche un
=avant l'expression. - Valeur claire: vide le champ.
Le menu Insérer à côté du libellé du champ ouvre une liste consultable des valeurs disponibles à ce nœud. La liste est une arborescence sous $vars, avec une entrée pour chaque nœud, son output et les champs à l'intérieur, et chaque champ affiche son type, tel que string ou object. La liste dispose également d'un groupe $metadata avec les entrées FolderKey, InstanceId, ProcessKey et ElementCount.
Champs de valeur fixes
Un champ défini sur Valeur fixe contient du texte. Pour intégrer une expression dans le texte, sélectionnez une valeur dans le menu Insérer , qui encapsule la référence entre deux accolades. L'éditeur vérifie la référence et signale un problème en dessous du champ, par exemple lorsqu'une propriété n'existe pas sur la sortie du nœud:
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
Champs d’expression et code Script
Un champ défini sur Expression, Décision et Basculer, la section Mettre à jour la variable et le code Script prennent l'expression directement, sans crochets:
$vars.httpRequest1.output.code === 200
$vars.httpRequest1.output.code === 200
Dans un champ d'expression, le texte et une valeur sont combinés en les joignant à + ou en utilisant un modèle littéral. Les deux éléments suivants produisent le même résultat:
"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}`
Opérateurs
Les opérateurs JavaScript standard sont pris en charge :
| Opérateur | Exemple | Résultat |
|---|---|---|
| Égalité | $vars.status === "active" | true ou false |
| Inégalité | $vars.count !== 0 | true ou false |
| Comparaison | $vars.price > 100 | true ou false |
| Et logique | $vars.isVerified && $vars.isActive | true ou false |
| Ou logique | $vars.role === "admin" || $vars.role === "owner" | true ou false |
| Ternaire | $vars.count > 0 ? "has items" : "empty" | string |
Chaîne d'opérations
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
Les littéraux de modèle combinent des variables et du texte statique :
`Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`
`Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`
Chaînage optionnel
L'opérateur ?. lit en toute sécurité les propriétés qui peuvent être indéfinies:
$vars.httpRequest1.output.body?.items?.[0]?.id
$vars.httpRequest1.output.body?.items?.[0]?.id
Le résultat est undefined, au lieu d'une erreur de runtime, si une propriété intermédiaire est nulle ou non définie.
Coalescence nulle
L'opérateur ?? fournit une valeur par défaut lorsqu'une valeur est nulle ou indéfinie:
$vars.userName ?? "Anonymous"
$vars.userName ?? "Anonymous"
Erreurs courantes
| Symptôme | Origine | Que faire |
|---|---|---|
Une expression se résout par undefined | Vous avez fait référence à la sortie d'un nœud avant que ce nœud ne s'exécute, ou un champ qui n'existe pas sur la sortie | Référencez la sortie uniquement à partir des nœuds en amont ; vérifiez la page de référence du nœud pour connaître ses champs de sortie réels. Utilisez l'enchaînement facultatif (?.) pour les propriétés qui peuvent être manquantes. |
| Une condition de décision ou de bascule se comporte de manière inattendue ou échoue | La condition n'est pas une expression booléenne nue, par exemple, elle est écrite comme une déclaration return | Écrivez une expression simple qui se résout par true ou false, par exemple $vars.order1.output.total > 1000. N'utilisez pas return. |
Cannot find name '$vars' (ou '$self' ) | La variable n'est pas dans l'étendue de ce nœud ou $self est utilisée sur un nœud qui ne produit aucune sortie | Utilisez uniquement les variables affichées dans le sélecteur de variables pour ce nœud. $vars se résout uniquement aux variables de l'étendue ; $self est disponible uniquement sur les nœuds qui produisent une sortie. |
| Une valeur d’un autre nœud n’est pas disponible pour la référence | L'étendue est en amont uniquement: un nœud ne peut pas voir les nœuds en aval, les nœuds d'une branche frères ou les nœuds à l'intérieur d'une boucle qu'il a déjà quittée | Restructurez afin que le nœud de production soit en amont de l'endroit où vous le référencez ou transmettez la valeur via une variable qui est dans l'étendue. |
$vars.<node>.error n'est pas disponible | La sortie d'erreur d'un nœud est dans l'étendue uniquement lorsque la gestion des erreurs est activée (ou que son chemin d'erreur est connecté) | Activez la gestion des erreurs sur le nœud ou connectez sa gestion des erreurs, puis faites référence à $vars.<node>.error. |
Failed to evaluate expression =js:(https://...): Unexpected token ':' | Une valeur simple, telle qu’une URL, se trouve dans un champ défini sur Expression sans guillemets, de sorte qu’elle est lue en JavaScript | Définissez le champ sur Valeur fixe ou placez le texte entre guillemets, par exemple "https://api.example.com/users". |
{{ }} s’affiche sous forme de texte littéral, ou un champ de texte ne résout pas | Incompatibilité du mode: {{ }} fonctionne uniquement dans les champs définis sur Valeur fixe | Utilisez {{ $vars.x }} uniquement dans les champs à valeur fixe. Dans les champs d'expression et dans les conditions de Décision et de Bascule, écrivez $vars.x directement sans crochets. |
Les conditions Décisions et Basculer s'exécutent comme des expressions lors du runtime. Une instruction return est valide uniquement dans le code du nœud Script.
Remarques
- Les expressions sont évaluées lors du runtime, et non au moment de la conception. Les erreurs de syntaxe apparaissent lorsque le nœud s'exécute.
- Une expression dans un champ de configuration doit résoudre le type attendu par le champ. Un champ de condition doit se résoudre à
trueoufalse. - Un champ d’expression affiche un
=avant l’expression pour marquer le mode d’expression. Le préfixe=js:qui apparaît dans un fichier.flowest un format de sérialisation interne et vous ne le saisissez jamais dans l'éditeur. - La vérification du type est partielle. Les références dans les sorties sans structure fixe ne sont pas entièrement validées, de sorte qu’une saisie de texte dans un nom de champ imbriqué peut être transmise sans avertissement. Comparez les chemins imbriqués avec les champs de sortie répertoriés dans la référence du nœud.
Prochaines étapes
- Variables et flux de données: comment les données se déplacent entre les nœuds.
- Script: écrivez JavaScript dans un nœud.
- Community (Communauté): posez des questions et partagez des workflows avec d'autres développeurs sur le forum UiPath.