- Erste Schritte
- Erstellen
- Fügen Sie einen KI-Agent zu einem Workflow hinzu
- Rufen Sie eine externe API auf
- Eingehende E-Mails verarbeiten
- Einen Slack-Benachrichtigungs-Workflow erstellen
- Eine menschliche Genehmigung zu einem Workflow hinzufügen
- Erstellen Sie einen Chat Agent-Workflow
- Fehler behandeln
- Grundlagen des Debuggens
- Human-in-the-Loop: Eskalation oder menschlicher Schritt
- Auswerten Ihrer Workflows
- Bereitstellen und ausführen
- Beispiele
- Referenz (Reference)
Ausdruckssyntax
JavaScript-Ausdruckssyntax für Variablen, Operatoren und Bedingungen in Workflows.
Ein Ausdruck ist ein kurzes Teil von JavaScript, einer weit verbreiteten Programmiersprache, das einen Wert liest oder berechnet. Ausdrücke in einem Workflow verweisen auf Werte mit dem Präfix $vars und werden in Konfigurationsfeldern, Entscheidungs- und Switch-Bedingungen sowie Skriptcode verwendet.
Der Variablen- und Datenfluss beschreibt, wie Daten zwischen Knoten verschoben werden und wie Variablen funktionieren.
Variablenreferenzen
Jeder Wert, auf den Sie verweisen, befindet sich unter $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
- Knotenausgabe:
$vars.<nodeName>.output. Jeder Knoten zeigt sein Ergebnis unter.outputan. Die Form dieses Objekts hängt vom Knoten ab, sodass auf jeder Seite der Knotenreferenz die Ausgabefelder seines Knotens aufgeführt sind. - Variablen:
$vars.<name>. - Trigger-Eingaben:
$vars.<triggerName>.output.<inputName>.
Verschachtelte Eigenschaften verwenden die Punktnotation und Array-Elemente verwenden die Klammernotation:
$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
Wo Sie Ausdrücke schreiben
Die kurze Regel: Schreiben Sie $vars… direkt in Skriptcode, in Bedingungen und in Felder, die auf Expression festgelegt sind, und umschließen Sie sie mit {{ $vars… }} innerhalb von Textfeldern, die auf Fester Wert festgelegt sind.
Die meisten Konfigurationsfelder können entweder einen festen Wert oder einen Ausdruck enthalten. Ein Symbol am rechten Ende des Felds öffnet ein Menü mit drei Optionen:
- Fester Wert: Geben Sie direkt einen Wert ein.
- Ausdruck: Schreiben Sie einen JavaScript-Ausdruck. Der Editor bietet IntelliSense, das Namen und Eigenschaften während der Eingabe vorschlägt. In diesem Modus zeigt das Feld ein
=vor dem Ausdruck an. - Wert löschen: Leeren Sie das Feld.
Das Menü Einfügen neben der Feldbeschriftung öffnet eine durchsuchbare Liste der Werte, die an diesem Knoten verfügbar sind. Die Liste ist eine Struktur unter $vars mit einem Eintrag für jeden Knoten, seiner output und den darin enthaltenen Feldern. Jedes Feld zeigt seinen Typ an, z. B. string oder object. Die Liste hat auch eine $metadata -Gruppe mit den Einträgen FolderKey, InstanceId, ProcessKey und ElementCount.
Felder mit festen Werten
Ein auf Fester Wert festgelegtes Feld enthält Text. Um einen Ausdruck in den Text einzubetten, wählen Sie einen Wert aus dem Menü Einfügen aus, wodurch die Referenz in doppelte geschweifte Klammern gesetzt wird. Der Editor überprüft die Referenz und meldet ein Problem unter dem Feld, z. B. wenn eine Eigenschaft in der Ausgabe des Knotens nicht vorhanden ist:
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
Ausdrucksfelder und Skriptcode
Ein Feld, das auf Ausdrucks-, Entscheidungs- und Wechselbedingungen festgelegt ist, der Abschnitt Variable aktualisieren und Skriptcode verwenden den Ausdruck direkt ohne eckige Klammern:
$vars.httpRequest1.output.code === 200
$vars.httpRequest1.output.code === 200
In einem Ausdrucksfeld werden Text und ein Wert kombiniert, indem sie mit + verbunden werden oder ein Vorlagenliteral verwendet wird. Beide Methoden führen zum gleichen Ergebnis:
"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}`
Operatoren
Standard-JavaScript-Operatoren werden unterstützt:
| Operator | Beispiel | Ergebnis |
|---|---|---|
| Gleichheit | $vars.status === "active" | true oder false |
| Ungleichung | $vars.count !== 0 | true oder false |
| Vergleich | $vars.price > 100 | true oder false |
| Logisches UND | $vars.isVerified && $vars.isActive | true oder false |
| Logisches ODER | $vars.role === "admin" || $vars.role === "owner" | true oder false |
| Ternär | $vars.count > 0 ? "has items" : "empty" | string |
String-Operationen
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
Vorlagen-Literale kombinieren Variablen und statischen Text:
`Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`
`Hello ${$vars.firstName}, your order #${$vars.orderId} has shipped.`
Optional Chaining
Der ?. -Operator liest sicher Eigenschaften, die möglicherweise nicht definiert sind:
$vars.httpRequest1.output.body?.items?.[0]?.id
$vars.httpRequest1.output.body?.items?.[0]?.id
Das Ergebnis ist undefined anstelle eines Laufzeitfehlers, wenn eine Zwischeneigenschaft NULL oder nicht definiert ist.
Null-Koaleszenz
Der ?? -Operator stellt einen Standardwert bereit, wenn ein Wert NULL oder nicht definiert ist:
$vars.userName ?? "Anonymous"
$vars.userName ?? "Anonymous"
Häufige Fehler
| Symptome | Ursache | Was zu tun ist |
|---|---|---|
Ein Ausdruck wird aufgelöst zu undefined | Sie haben auf die Ausgabe eines Knotens verwiesen, bevor dieser Knoten ausgeführt wird, oder auf ein Feld, das in der Ausgabe nicht vorhanden ist | Verweisen Sie nur auf die Ausgabe von vorgelagerten Knoten; aktivieren Sie die Referenzseite des Knotens für seine tatsächlichen Ausgabefelder. Verwenden Sie die optionale Ketten-Funktion (?.) für Eigenschaften, die möglicherweise fehlen. |
| Eine Entscheidungs- oder Switch-Bedingung verhält sich unerwartet oder schlägt fehl | Die Bedingung ist kein einfacher Boolean-Ausdruck, z. B. als return Anweisung geschrieben | Schreiben Sie einen einfachen Ausdruck, der in trueoder false aufgelöst wird, z. B. $vars.order1.output.total > 1000. Verwenden Sie nicht return. |
Cannot find name '$vars' (oder '$self' ) | Die Variable befindet sich auf diesem Knoten nicht im Scope oder $self wird in einem Knoten verwendet, der keine eigene Ausgabe erzeugt. | Verweisen Sie nur auf Variablen, die in der Variablenauswahl für diesen Knoten angezeigt werden.$vars wird nur in Variablen im Scope aufgelöst; $self ist nur auf Knoten verfügbar, die eine Ausgabe erzeugen. |
| Ein Wert von einem anderen Knoten ist nicht als Referenz verfügbar | Der Scope ist nur Upstream: Ein Knoten kann keine nachgelagerten Knoten, Knoten in einer gleichgeordneten Verzweigung oder Knoten innerhalb einer Schleife sehen, die er bereits beendet hat | Strukturieren Sie den Prozess um, sodass der produzierende Knoten dem Ort vorgelagert ist, auf den Sie verweisen, oder übertragen Sie den Wert durch eine Variable, die im Scope ist. |
$vars.<node>.error ist nicht verfügbar | Die Error-Ausgabe eines Knotens ist nur im Scope, wenn die Fehlerbehandlung aktiviert ist (oder sein Error-Pfad verbunden ist) | Aktivieren Sie die Error-Behandlung auf dem Knoten oder verbinden Sie seinen Error-Handle und verweisen Sie dann auf $vars.<node>.error. |
Failed to evaluate expression =js:(https://...): Unexpected token ':' | Ein einfacher Wert, z. B. eine URL, befindet sich in einem Feld, das ohne Anführungszeichen auf Ausdruck festgelegt ist, sodass er als JavaScript gelesen wird | Ändern Sie das Feld in Fester Wert oder setzen Sie den Text in Anführungszeichen, z. B. "https://api.example.com/users". |
{{ }} wird als Literaltext angezeigt, oder ein Textfeld wird nicht aufgelöst | Moduskonflikt: {{ }} funktioniert nur in Feldern, die auf Fester Wert festgelegt sind | Verwenden Sie {{ $vars.x }} nur in Feldern mit festem Wert. Schreiben Sie in Ausdrucksfeldern und in Entscheidungs- und Switch-Bedingungen $vars.x direkt ohne eckige Klammern. |
Decision- und Switch-Bedingungen werden zur Runtime als Ausdrücke ausgeführt. Eine return-Anweisung ist nur im Code eines Script-Knotens gültig.
Hinweise
- Ausdrücke werden zur Runtime und nicht zur Entwurfszeit ausgewertet. Syntaxfehler werden angezeigt, wenn der Knoten ausgeführt wird.
- Ein Ausdruck in einem Konfigurationsfeld muss in den Typ aufgelöst werden, den das Feld erwartet. Ein Bedingungsfeld muss in
trueoderfalseaufgelöst werden. - Ein Ausdrucksfeld zeigt ein
=vor dem Ausdruck zum Markieren des Ausdrucksmodus an. Das Präfix=js:, das in einer.flow-Datei angezeigt wird, ist ein internes Serialisierungsformat und Sie geben es nie in den Editor ein. - Die Typprüfung ist teilweise. Verweise auf Ausgaben ohne feste Struktur sind nicht vollständig validiert, sodass ein Tippfehler in einem geschachtelten Feldnamen ohne Warnung übergeben werden kann. Vergleichen Sie geschachtelte Pfade mit den in der Knotenreferenz aufgeführten Ausgabefeldern.
Nächste Schritte
- Variablen und Datenfluss: Wie Daten zwischen Knoten verschoben werden.
- Skript: Schreiben Sie JavaScript in einen Knoten.
- Community: Stellen Sie Fragen und teilen Sie Workflows mit anderen Buildern im UiPath Forum.