maestro
latest
false
Maestro 用户指南
- 简介
- 入门指南
- 使用 BPMN 进行流程建模
- 使用 Case Management 进行流程建模
- 使用 Flow 进行流程建模
- 流程实施
- 流程运营
- 流程监控
- 流程优化
- 参考信息
重要 :
新发布内容的本地化可能需要 1-2 周的时间才能完成。
JavaScript 表达式语法,适用于 Flow 工作流中的变量、运算符和条件。
流表达式是 JavaScript。它们引用带有$vars前缀的变量,并计算配置字段、决策和切换条件以及脚本代码中的值。
有关数据如何在节点和变量模型之间深度移动,请参阅变量和数据流。
变量引用
您引用的每个值都位于$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
- 节点输出:
$vars.<nodeName>.output。每个节点都在.output下公开其结果。该对象的形状取决于节点,因此请参阅每个节点的参考页面,以了解其输出字段。 - 变量:
$vars.<name>。 - 触发器输入:
$vars.<triggerName>.output.<inputName>。
对于嵌套属性,请使用点符号;对于数组元素,请使用方括号表示法:
$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
编写表达式的位置
根据字段的不同,流具有两种模式:
“文字”(文本)字段— 在带有双大括号的文本中嵌入表达式。仅在需要提示词或模板化文本的情况下使用此选项:
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
https://api.example.com/users/{{ $vars.manualTrigger1.output.userId }}
表达式字段(“决策”和“切换”条件,“更新变量”部分)和脚本代码 — 直接写入表达式,不使用大括号:
$vars.httpRequest1.output.statusCode === 200
$vars.httpRequest1.output.statusCode === 200
运算符
支持的标准 JavaScript 运算符:
| 运算符 | 示例 | 结果 |
|---|---|---|
| 平等 | $vars.status === "active" | true 或者 false |
| 不等式 | $vars.count !== 0 | true 或者 false |
| 比较 | $vars.price > 100 | true 或者 false |
| 逻辑与 | $vars.isVerified && $vars.isActive | true 或者 false |
| 逻辑或 | $vars.role === "admin" || $vars.role === "owner" | true 或者 false |
| 三元 | $vars.count > 0 ? "has items" : "empty" | 字符串 |
字符串运算
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
"Hello, " + $vars.firstName
$vars.message.toUpperCase()
$vars.email.includes("@uipath.com")
模板字面量将变量和静态文本结合在一起:
`Hello ${firstName}, your order #${orderId} has shipped.`
`Hello ${firstName}, your order #${orderId} has shipped.`
可选链接
使用?.可安全访问可能未定义的属性:
$vars.httpRequest1.output.body?.items?.[0]?.id
$vars.httpRequest1.output.body?.items?.[0]?.id
如果任何中间属性为 null 或未定义,则返回undefined而不是引发运行时错误。
空值合并
使用??当值为 null 或“未定义”时提供默认值:
$vars.userName ?? "Anonymous"
$vars.userName ?? "Anonymous"
常见错误
| 症状 | 原因 | 待执行操作 |
|---|---|---|
表达式解析为 undefined | 您在节点运行之前引用了节点的输出,或输出中不存在的字段 | 仅参考来自上游节点的输出;请查看节点的参考页面,了解其实际输出字段。对可能缺失的属性使用可选链接 ( ?. )。 |
| 决策或切换条件行为异常或失败 | 条件不是纯布尔值表达式,例如,可以编写为return语句 | 编写一个解析为true或false明文表达式,例如$vars.order1.output.total > 1000 。不要使用return 。 |
Cannot find name '$vars' (或'$self' ) | 变量不在此节点的作用域内,或者在节点上使用了$self ,而节点本身无法产生输出 | 仅引用该节点的变量选取器中显示的变量。$vars仅解析为作用域内的变量; $self仅适用于生成输出的节点。 |
| 其他节点的值无法引用 | 作用域仅限上游 — 节点无法查看下游节点、同级分支节点或其已退出循环内的节点 | 重组,以便生产节点位于您引用它的位置的上游,或通过作用域内的变量携带该值。 |
$vars.<node>.error 不可用 | 仅当在节点上启用了错误处理(或已连接其错误路径)时,节点的错误输出才在范围内。 | 在节点上启用错误处理,或连接其错误句柄,然后引用$vars.<node>.error 。 |
{{ }} 显示为原义文本,或文本字段无法解析 | 模式不匹配: {{ }}仅适用于文本(文本)字段 | 仅在纯文本字段中使用{{ $vars.x }} ;在表达式字段以及“决策”和“切换”条件中,直接写入$vars.x ,不带大括号。 |
决策和切换条件在运行时作为表达式运行。return语句仅在脚本节点代码中有效。
注意
- 表达式在运行时而非设计时求值。执行节点时,会出现语法错误。
- 配置字段中的表达式必须解析为该字段预期的类型,条件字段必须解析为
true或false。 - 您可能会在
.flow文件中看到=和=js:前缀是内部序列化格式。您永远不会在编辑器中输入这些值。 - 类型检查会尽最大努力。对松散类型输出(类型为
any对象或数组)的引用未经过完全验证,因此嵌套字段名称中的拼写错误可能会在没有警告的情况下通过——根据节点的输出仔细检查嵌套路径。