- Einleitung
- Erste Schritte
- Erstellen mit Maestro BPMN
- Grundlegendes zur BPMN-Modellierung von Maestro
- Öffnen der Modellierungsarbeitsfläche
- Modellierung Ihres Prozesses
- Ausrichten und Verbinden von BPMN-Elementen
- Patterns library
- Autopilot for Maestro (Vorschau)
- Prozess-Repository
- Einen einfachen BPMN-Prozess implementieren
- Einen komplexen BPMN-Prozess implementieren
- Debugging
- Simulieren
- Auswertungen (Vorschau)
- Häufige Implementierungsszenarien
- Erstellen mit Maestro Case
- Einführung in Maestro Case
- Maestro BPMN vs. Maestro Case: Wann wird Case Management verwendet?
- Der Lebenszyklus von Maestro Case: Vom Ereignis-Trigger zum App-Erlebnis
- Erstellen Sie Ihren ersten Fall mit Maestro Case
- Maestro Case mit einem Codierungs-Agent erstellen (Vorschau)
- Definieren von Fallschlüsseln (System vs. extern)
- Erstellen von Task-E/A- und Write-Back-Verträgen
- Austrittsregeln und Beendigung der frühen Phase
- Modellieren von primären und sekundären Phasen
- Auslösen eines Falls aus Data Fabric
- Implementieren von Personas und Berechtigungen auf Phasenebene
- Festlegen von SLAs und automatisierten Eskalationsregeln
- Konfigurieren einer Nacharbeitsschleife (Wiedereintritt)
- Konfigurieren und Testen des Case Manager-Agents (Vorschau)
- Eingabe- und Ausgabevertrag für den Fall Manager
- Wörterbuch für die Komponente „Maestro Case“.
- Erstellen mit Maestro Flow
- Maestro Automate
- Integrationen
- Betrieb
- Überwachung
- Optimieren
- Referenzinformationen
JavaScript-Ausdruckssyntax für Variablen, Operatoren und Bedingungen in Flow-Workflows.
Flow-Ausdrücke sind JavaScript. Sie verweisen auf Variablen mit dem Präfix $vars und berechnen Werte in Konfigurationsfeldern, Entscheidungs- und Switch-Bedingungen sowie Skriptcode.
Wie Daten zwischen Knoten übergeben werden und wie das Variablenmodell im Detail funktioniert, finden Sie unter „Variablen und Datenfluss“.
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 stellt sein Ergebnis unter.outputbereit. Die Form dieses Object hängt vom Knoten ab; Informationen zu den Ausgabefeldern finden Sie daher auf der Referenzseite des jeweiligen Knotens. - Variablen:
$vars.<name>. - Trigger-Eingaben:
$vars.<triggerName>.output.<inputName>.
Verwenden Sie für verschachtelte Eigenschaften die Punkt-Notation; für Array-Elemente die Klammer-Notation:
$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
Flow hat je nach Feld zwei Modi:
Literale (Text)-Felder – betten Sie einen Ausdruck in den umgebenden Text mit doppelt geschweiften Klammern ein. Verwenden Sie dies nur, wenn ein Aufforderungs- oder Vorlagentext erwartet wird:
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
Ausdrucksfelder (Entscheidungs- und Switch-Bedingungen, der Abschnitt Variable aktualisieren) und Skript--Code – schreiben Sie den Ausdruck direkt ohne Klammern:
$vars.httpRequest1.output.statusCode === 200
$vars.httpRequest1.output.statusCode === 200
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 ${firstName}, your order #${orderId} has shipped.`
`Hello ${firstName}, your order #${orderId} has shipped.`
Optional Chaining
Verwenden Sie ?., um sicher auf Eigenschaften zuzugreifen, die möglicherweise nicht definiert sind:
$vars.httpRequest1.output.body?.items?.[0]?.id
$vars.httpRequest1.output.body?.items?.[0]?.id
Gibt undefined zurück, anstatt einen Runtime-Error auszulösen, wenn eine Zwischeneigenschaft NULL oder nicht definiert ist.
Null-Koaleszenz
Verwenden Sie ??, um einen Standardwert anzugeben, 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 aus einem anderen Knoten ist nicht als Verweis verfügbar | Scope ist nur vorgelagert – ein Knoten kann keine nachgelagerten Knoten, keine Geschwisterknoten oder Knoten in einer Schleife sehen, die er bereits verlassen 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. |
{{ }} wird als literaler Text angezeigt oder ein Textfeld wird nicht aufgelöst | Modus-Diskrepanz: {{ }} Funktioniert nur in literalen (Text)-Feldern | Verwenden Sie {{ $vars.x }} nur in Nur-Text-Feldern; in Ausdrucksfeldern sowie in Decision- und Switch-Bedingungen schreiben Sie $vars.x direkt ohne geschweifte 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 vom Feld erwarteten Typ aufgelöst werden – ein Bedingungsfeld muss zu
trueoderfalseaufgelöst werden. - Die Präfixe
=und=js:, die Sie möglicherweise in einer.flow-Datei sehen, sind interne Serialisierungsformate. Sie geben sie nie im Editor ein. - Die Typprüfung erfolgt nach bestem Wissen und Gewissen. Verweise auf lose typisierte Ausgaben (Objekte oder Arrays, die als
anytypisiert sind) werden nicht vollständig validiert, sodass ein Tippfehler in einem verschachtelten Feldnamen unbemerkt bleiben kann – überprüfen Sie verschachtelte Pfade anhand der Ausgabe des Knotens.