UiPath Documentation
maestro
latest
false
重要 :
新发布内容的本地化可能需要 1-2 周的时间才能完成。

Maestro 用户指南

表达式语法

Flow expressions are JavaScript. They reference variables with the $vars prefix and compute values in configuration fields, Decision and Switch conditions, and Script code.

For how data moves between nodes and the variables model in depth, see Variables and data flow.

Variable references

Every value you reference lives under $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
  • Node output: $vars.<nodeName>.output. Every node exposes its result under .output. The shape of that object depends on the node, so see each node's reference page for its output fields.
  • Variables: $vars.<name>.
  • Trigger inputs: $vars.<triggerName>.output.<inputName>.

For nested properties use dot notation; for array elements use bracket 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

Where you write expressions

Flow has two modes, depending on the field:

Literal (text) fields — embed an expression in surrounding text with double curly braces. Use this only where prompt or templated text is expected:

https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}

Expression fields (Decision and Switch conditions, the Update Variable section) and Script code — write the expression directly, with no braces:

$vars.httpRequest1.output.statusCode === 200
$vars.httpRequest1.output.statusCode === 200

运算符

Standard JavaScript operators are supported:

运算符示例结果
平等$vars.status === "active"true 或者 false
不等式$vars.count !== 0true 或者 false
比较$vars.price > 100true 或者 false
Logical AND$vars.isVerified && $vars.isActivetrue 或者 false
Logical OR$vars.role === "admin" || $vars.role === "owner"true 或者 false
Ternary$vars.count > 0 ? "has items" : "empty"字符串

String operations

"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")

Template literals combine variables and static text:

`Hello ${firstName}, your order #${orderId} has shipped.`
`Hello ${firstName}, your order #${orderId} has shipped.`

Optional chaining

Use ?. to safely access properties that may be undefined:

$vars.httpRequest1.output.body?.items?.[0]?.id
$vars.httpRequest1.output.body?.items?.[0]?.id

Returns undefined instead of raising a runtime error if any intermediate property is null or undefined.

Nullish coalescing

Use ?? to provide a default value when a value is null or undefined:

$vars.userName ?? "Anonymous"
$vars.userName ?? "Anonymous"

Common errors

症状原因待执行操作
An expression resolves to undefinedYou referenced a node's output before that node runs, or a field that doesn't exist on the outputReference output only from upstream nodes; check the node's reference page for its actual output fields. Use optional chaining (?.) for properties that may be missing.
A Decision or Switch condition behaves unexpectedly or failsThe condition isn't a bare boolean expression, for example, it's written as a return statementWrite a plain expression that resolves to true or false, for example $vars.order1.output.total > 1000. Do not use return.
Cannot find name '$vars' (或'$self'The variable isn't in scope at this node, or $self is used on a node that produces no output of its ownReference only variables shown in the variable picker for that node. $vars resolves to in-scope variables only; $self is available only on nodes that produce output.
A value from another node isn't available to referenceScope is upstream-only — a node can't see downstream nodes, sibling-branch nodes, or nodes inside a loop it has already exitedRestructure so the producing node is upstream of where you reference it, or carry the value through a variable that's in scope.
$vars.<node>.error isn't availableA node's error output is in scope only when error handling is enabled on it (or its error path is connected)Enable error handling on the node, or connect its error handle, then reference $vars.<node>.error.
{{ }} shows as literal text, or a text field doesn't resolveMode mismatch: {{ }} works only in literal (text) fieldsUse {{ $vars.x }} only in plain-text fields; in expression fields and in Decision and Switch conditions, write $vars.x directly with no braces.

Decision and Switch conditions run as expressions at runtime. A return statement is valid only in Script node code.

注意

  • Expressions are evaluated at runtime, not at design time. Syntax errors surface when the node executes.
  • An expression in a configuration field must resolve to the type that field expects — a condition field must resolve to true or false.
  • The = and =js: prefixes you may see in a .flow file are internal serialization formats. You never type them in the editor.
  • Type checking is best-effort. References into loosely-typed outputs (objects or arrays typed as any) aren't fully validated, so a typo in a nested field name can pass without a warning — double-check nested paths against the node's output.

此页面有帮助吗?

连接

需要帮助? 支持

想要了解详细内容? UiPath Academy

有问题? UiPath 论坛

保持更新