- Introduction
- Démarrage
- Créer avec Maestro BPMN
- Compréhension de la modélisation BPMN de Maestro
- Ouverture du canevas de modélisation
- Modéliser votre processus
- Alignement et connexion des éléments BPMN
- Autopilot pour Maestro (aperçu)
- Référentiel de processus
- Implémenter un processus BPMN simple
- Implémenter un processus BPMN complexe
- Débogage
- Simulation
- Evaluations (Preview)
- Scénarios de mise en œuvre courants
- Building with Maestro Case
- Présentation de Maestro Case
- Maestro BPMN vs. Maestro Case : quand utiliser la gestion des incidents
- Le cycle de vie de Maestro Case : du déclencheur d'événement à l'expérience de l'application
- Créer votre premier incident avec Maestro Case
- Build a Maestro Case with a coding agent (preview)
- Définition des clés de cas (système vs. externe)
- Établissement des contrats d'E/S et de réécriture de la tâche
- Règles de sortie et fin de l’étape précoce
- Modélisation des étapes primaires et secondaires
- Déclencher un cas à partir de Data Fabric
- Implémentation des personas et des autorisations au niveau de l'étape
- Définition des SLA et des règles d'escalade automatisées
- Configuration d'une boucle de retraitement (renouvellement)
- Configuring and testing the Case Manager Agent (preview)
- Contrat d’entrée et de sortie du gestionnaire de cas
- Dictionnaire des composants de Maestro Case
- Créer avec Maestro Flow
- Maestro Automate
- Intégrations
- Opérations
- Surveillance
- Optimisation
- Informations de référence
Syntaxe de l'expression JavaScript pour les variables, les opérateurs et les conditions dans les workflows Flow.
Les expressions Flow sont JavaScript. Ils font référence aux variables avec le préfixe $vars et calculent les valeurs dans les champs de configuration, les conditions de décision ou de bascule, et le code de script.
Pour savoir comment les données se déplacent entre les nœuds et le modèle de variables en profondeur, consultez la section Variables et flux de données.
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>.output. Chaque nœud expose son résultat sous.output. La forme de cet objet dépend du nœud, consultez donc la page de référence de chaque nœud pour ses champs de sortie. - Variables :
$vars.<name>. - Entrées de déclencheur :
$vars.<triggerName>.output.<inputName>.
Pour les propriétés imbriquées, utilisez la notation par points ; pour les éléments du tableau, utilisez la notation entre crochets :
$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
Flow a deux modes, en fonction du champ :
Champs littéraux (texte) - intégrez une expression dans le texte environnant avec des doubles accolades. Utilisez cette option uniquement lorsqu'un texte d'invite ou modélisé est attendu :
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
Champs d'expression (conditions de décision et de basculie, section Mettre à jour la variable) et code de script - écrivez l'expression directement, sans parenthèses :
$vars.httpRequest1.output.statusCode === 200
$vars.httpRequest1.output.statusCode === 200
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 ${firstName}, your order #${orderId} has shipped.`
`Hello ${firstName}, your order #${orderId} has shipped.`
Chaînage optionnel
Utilisez ?. pour accéder en toute sécurité aux propriétés qui peuvent être non définies :
$vars.httpRequest1.output.body?.items?.[0]?.id
$vars.httpRequest1.output.body?.items?.[0]?.id
Renvoie undefined au lieu de générer une erreur de runtime si une propriété intermédiaire est nulle ou non définie.
Coalescence nulle
Utilisez ?? pour fournir une valeur par défaut lorsqu'une valeur est nulle ou non dé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 être référencée | L'étendue est en amont uniquement - un nœud ne peut pas voir les nœuds en aval, les nœuds de branche sœur ou les nœuds dans 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. |
{{ }} s'affiche comme texte littéral ou un champ de texte ne se résout pas | Incompatibilité du mode : {{ }} fonctionne uniquement dans les champs littéraux (texte) | Utilisez {{ $vars.x }} uniquement dans les champs en texte brut ; dans les champs d'expression et dans les conditions Décision et Basculer, écrivez $vars.x directement sans accolades. |
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 d'un champ de configuration doit se résoudre avec le type que le champ attend - un champ de condition doit se résoudre avec
trueoufalse. - Les préfixes
=et=js:que vous pouvez voir dans un fichier.flowsont des formats de sérialisation internes. Vous ne les tapez jamais dans l'éditeur. - La vérification du type est effectuée au mieux. Les références dans les sorties à typage souple (objets ou tableaux typés comme
any) ne sont pas entièrement validées, de sorte qu'une erreur de frappe dans un nom de champ imbriqué peut passer sans avertissement - revérifiez les chemins imbriqués par rapport à la sortie du nœud.