maestro
latest
false
Maestro 用户指南
- 简介
- 入门指南
- 使用 BPMN 进行流程建模
- 使用 Case Management 进行流程建模
- 使用 Flow 进行流程建模
- 流程实施
- 流程运营
- 流程监控
- 流程优化
- 参考信息
重要 :
新发布内容的本地化可能需要 1-2 周的时间才能完成。
脚本节点参考:配置、环境和 JavaScript 示例。
操作
运行 JavaScript 代码,并将返回值传递给下游节点。
配置参考
| 字段 | 必填 | 默认 | 描述 |
|---|---|---|---|
| 脚本 | 是 | 无 | 要执行的 JavaScript 代码。必须包含return语句;返回的值将成为此节点的输出。 |
JavaScript 环境
脚本在隔离的运行时中运行,并有权访问:
$vars— 流程的变量范围。通过$vars.<nodeName>.<property>访问上游节点输出。metadata— 流程执行元数据- 标准 JavaScript 内置函数— 例如
JSON、Math、Date、Array、Object、String、Number、RegExp、Error、Promise、URL、URLSearchParams和计时器函数。
出于安全考虑,运行时会阻止网络 API( fetch 、 XMLHttpRequest 、 WebSocket )、动态代码执行( eval 、 Function )和存储 API( indexedDB 、 caches )。要调用外部 API,请改用“HTTP 请求”节点。
脚本适用于快速的内存逻辑:保持脚本速度,并避免处理非常大的有效负载,这可能会超过 runtime 限制或超时。
访问上游节点输出
使用$vars.<nodeName>.<property>其中<nodeName>是节点的变量名称(显示在属性面板中):
// Access HTTP Request node response
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.statusCode;
// Access a flow variable
const count = $vars.myVariable;
// Access HTTP Request node response
const body = $vars.httpRequest1.output.body;
const status = $vars.httpRequest1.output.statusCode;
// Access a flow variable
const count = $vars.myVariable;
返回值
该脚本必须返回一个值。返回的值将成为节点的输出,下游可通过$vars.<nodeName>.output形式访问:
return {
message: "Processed",
count: items.length
};
return {
message: "Processed",
count: items.length
};
输入和输出
输入
脚本节点可以通过$vars访问任何上游变量。它没有类型化的输入架构 — $vars中的任何内容均可使用。
输出
成功后— $vars.<nodeName>.output :
脚本的返回值。形状取决于脚本返回的内容。
失败时(连接了错误句柄时)— $vars.<nodeName>.error :
{
"code": "string",
"message": "string",
"detail": "string",
"category": "string",
"status": 0
}
{
"code": "string",
"message": "string",
"detail": "string",
"category": "string",
"status": 0
}
使用 AI 生成脚本
脚本编辑器上方的“魔棒”图标会接受所需内容的简单语言描述,并为您生成 JavaScript。这在访问上游节点的输出或编写快速转换时非常有用,而无需查找确切的$vars语法。
示例
示例 1 — 设置流程变量
// Set a variable that downstream nodes can reference
return {
orderTotal: $vars.httpRequest1.output.body.price * $vars.httpRequest1.output.body.quantity,
currency: "USD"
};
// Set a variable that downstream nodes can reference
return {
orderTotal: $vars.httpRequest1.output.body.price * $vars.httpRequest1.output.body.quantity,
currency: "USD"
};
下游节点将值访问为$vars.script1.output.orderTotal和$vars.script1.output.currency 。
示例 2 — 处理 HTTP 响应
const data = $vars.httpRequest1.output.body;
return {
title: data.title,
userId: data.userId
};
const data = $vars.httpRequest1.output.body;
return {
title: data.title,
userId: data.userId
};
示例 3 — 条件逻辑
const status = $vars.httpRequest1.output.statusCode;
if (status === 200) {
return { success: true, data: $vars.httpRequest1.output.body };
} else {
return { success: false, statusCode: status };
}
const status = $vars.httpRequest1.output.statusCode;
if (status === 200) {
return { success: true, data: $vars.httpRequest1.output.body };
} else {
return { success: false, statusCode: status };
}
示例 4 — 转换数组
const items = $vars.fetchItems1.output.body;
return {
count: items.length,
names: items.map(item => item.name)
};
const items = $vars.fetchItems1.output.body;
return {
count: items.length,
names: items.map(item => item.name)
};
何时使用此选项与何时使用数据转换
| 在以下情况下使用脚本... | 在以下情况下使用数据转换: |
|---|---|
| 您需要完整的 JavaScript 逻辑 — 循环、条件、字符串操作 | 您需要简单的字段映射或无代码转换 |
| 您想根据上游节点输出计算一些内容 | 您需要一个可视化映射器而无需编写代码 |
| 转换非常复杂或处于状态状态 | 转换为简单的形状调整 |