工作流操作节点
操作节点是工作流的主力——它们调用 API、转换数据、运行查询、发送通知,以及执行自定义代码。您可以在任务编辑器中从节点库的 组件 分类添加它们,在右侧配置面板中配置其输入,并通过连线将它们与其他节点相连。
本页介绍引擎内置的操作节点分类、数据如何在节点之间流动,以及在哪里查看各操作节点的详细说明。
操作节点基础
每个操作节点包含:
- 输入端口——节点读取的命名输入(例如转换节点的
data输入)。 - 配置 / 默认输入——您在配置面板中设置、用于控制节点行为的值。
- 输出——节点产生的结果,下游节点可以读取。
您可以在画布上用连线将节点连接起来。连线的确切格式请参阅下文数据如何在节点之间流动。
内置操作节点分类
工作流引擎包含以下内置操作节点分类:
| 分类 | 用途 |
|---|---|
| API | 调用外部 HTTP/REST API(通用 API 与 REST 操作节点) |
| 自定义(Custom) | 在沙盒中运行您自己的 JavaScript(js-executor 操作节点) |
| 数据源(Data Source) | 连接并检查数据源(默认数据源、PostgreSQL/MySQL 架构) |
| 数据集(Dataset) | 查询和修改数据集(查询、插入、更新、删除、向量检索、全文检索) |
| 文档(Document) | 读取和处理文档 |
| 嵌入(Embedding) | 生成向量嵌入(多模态嵌入) |
| 全局变量(Global Variable) | 读取和写入工作流级全局变量 |
| 通知(Notification) | 发送通知,例如邮件 |
| SQL | 通过模板运行参数化 SQL(sql-template) |
| 存储(Storage) | 存储和读取文件 |
| 转换(Transform) | 在节点之间重塑和转换数据 |
| 微信(WeChat) | 向微信发布内容 |
您实际可用的操作节点取决于空间和部署中启用的内容。在任务编辑器中浏览节点库的 组件 分类(在编辑器中按 Ctrl + K 打开),即可查看可添加的节点,并使用搜索框按名称查找操作节点。
使用 js-executor 编写自定义代码
对于内置操作节点无法覆盖的逻辑,请使用自定义代码操作节点,其标识符为 js-executor。它在安全沙盒中运行您的 JavaScript。
您的代码可以访问:
parameters(也可用params)——您传入节点的参数。context——工作流执行上下文的只读快照(包括用于环境变量的context.env,以及上游节点的结果)。console.log/console.error/console.warn/console.info——向运行日志写入信息。utils——一组辅助函数(类型检查、字符串与数组工具、哈希、格式化等)。
返回一个值即可产生节点的输出:
// parameters 中保存着您连接到本节点的输入
const items = parameters.items || [];
const total = items.reduce((sum, it) => sum + it.price, 0);
return {
count: items.length,
total
};
代码可访问的 context 是只读快照。对其赋值(例如 context.someValue = ...)不会持久化到任何位置——要将数据向下传递,请从代码中返回它并将输出连接到下一个节点。要在循环中共享状态,请参阅 ForEach 循环节点。
完整细节——可用的 utils 辅助函数、沙盒限制以及示例——请参阅 JavaScript 执行器参考文档。
数据如何在节点之间流动
数据沿着连线从一个节点流向另一个节点。连线将一个节点上的源端口连接到另一个节点上的目标端口,采用字符串形式 nodeId:portName:
{
"source": "fetch-data:result",
"target": "transform-1:data"
}
这会将节点 fetch-data 的 result 输出连接到节点 transform-1 的 data 输入。
使用 dataPath 选取源输出的一部分
若只想传递源节点输出的一部分,可添加 dataPath。该路径使用点号和方括号表示法,针对源节点的输出进行解析:
{
"source": "fetch-user:result",
"target": "send-email:to",
"dataPath": "user.email"
}
这里 dataPath: "user.email" 会从 fetch-user 的输出中读取 user.email,并将其送入 send-email 的 to 输入。同样支持数组索引,例如 items[0].id。
dataPath 遍历的是源节点的输出对象——它不是 JSONPath 查询语言,也不使用 $.input / $.context 前缀。如果省略 dataPath,则源端口上的整个值会被原样传递。
默认输入值
节点还可以携带您直接在配置面板中设置的默认输入值(当没有连线提供该输入时使用)。默认输入和连线值都支持 {{VARIABLE_NAME}} 环境变量模板语法——请参阅环境变量。
使用操作节点进行构建
- 打开任务编辑器并打开节点库(
Ctrl + K)。 - 从 组件 分类中,将操作节点拖到画布上。
- 选中该节点并打开配置面板(
Ctrl + I)以设置其输入和默认值。 - 从上游节点端口向本节点的输入端口绘制连线。
- 使用控制节点(条件分支、ForEach)添加分支与迭代。
- 保存并运行任务,然后在底部调试面板中查看各节点的输出。
常见问题
Details
没有操作节点能覆盖的自定义逻辑该如何运行?
使用自定义代码操作节点(js-executor)。它在沙盒中运行 JavaScript,可访问您的 parameters、只读的 context、console 日志,以及 utils 辅助库。返回一个值即可产生节点输出。请参阅 JavaScript 执行器 参考文档。Details
如何只把某个字段从一个节点传到另一个节点?
在连线上添加dataPath。它使用点号/方括号表示法针对源节点的输出进行解析(例如 user.email 或 items[0].id)。不设置 dataPath 时,源端口上的整个值会被传递。