工作流可视化编辑器:节点详解与操作手册
逐类讲解工作流可视化编辑器的 15 种节点(任务、DataFlow、数据流转、数据操作、条件分支、并行执行、合并、延迟等):怎么画流程、每个节点怎么配、数据如何在节点间流动、怎么发布执行与排查失败。适合初次上手的人和对接 AI 的开发者。
工作流与定时任务讲了工作流的整体位置;这一篇聚焦可视化编辑器本身:15 种节点逐个讲清楚——它是干什么的、要配什么、数据从哪来到哪去。无论你是手工操作,还是让 AI 帮你生成流程,读这一篇就够了。
在哪里、怎么进入
侧边栏「系统 → 运维管理 → 工作流管理」。列表上方一排指标卡(总工作流、活跃、草稿、已暂停、已归档、执行成功率),下方是工作流表格。点右上角「新增工作流」,填好名称后,在表单底部的「DSL 定义」区点「打开可视化编辑器」,进入全屏画布。
画布分三块:左侧节点面板(15 种节点,按控制流 / 数据 / 时间 / AI / 通信分组,顶部可搜索)、中间画布(新建时自带"开始→结束"两个节点和一条连线)、右侧属性面板(点击画布上的节点后显示该节点的配置表单)。
先搞懂四件事
- 流程 = 节点 + 连线。连线从上游节点的右侧输出圆点拖到下游节点左侧输入圆点;执行时引擎严格沿连线走。
- 保存 ≠ 执行。画布上的改动实时同步回表单,但要点表单的「保存」才落库;落库后工作流处于草稿状态,必须发布(列表行内的绿色按钮)变为活跃后才能执行。
- 编辑活跃工作流会退回草稿。改完要重新发布才继续生效;定时调度也会随之重新注册。
- 只有活跃状态才有「执行」按钮。对草稿点执行是没有意义的,界面直接不提供。
逐类节点详解
控制流:开始 / 结束
每个工作流必须有且从一个「开始」节点出发、在「结束」节点收尾。它们没有配置项。校验规则:缺少开始或结束、存在重复节点 ID、连线引用了不存在的节点,保存时都会被拒绝。
条件分支(CONDITION)
按条件把流程引向不同分支。配置是一组分支条件,每条含标签和表达式;画布上对应同数量的右侧输出圆点(True / False,或自定义标签)。
- 表达式写法是
字段 运算符 值,例如input.status == "ok"、output.total > 10;运算符支持==、!=、>、<、>=、<=、contains、startsWith、endsWith。 - 裸布尔字面量
true/false也可以,常用于"默认走真分支"的占位。 - 不要写算术表达式(如
1 > 0的字面量比较不会被当作常量表达式求值——1会被当成字段名)。 - 路由规则:第 N 个命中的分支走
output-N圆点;全不命中时走最后一个圆点(默认分支)。所以把"兜底"分支放在条件列表末尾是个好习惯。
并行执行(PARALLEL)与合并(MERGE)
并行节点把主流程拆成多个同时推进的分支(默认 2 个,右侧每个圆点是一条分支的起点);合并节点等分支汇合后,主流程从合并节点继续。两者成对使用最稳妥:并行节点的每个输出各自走一段,最后都连进同一个合并节点。它们本身不需要复杂配置(并行节点可调整分支数)。
数据:任务(TASK)
任务节点是早期版本的"万能节点",现在推荐优先使用下面的专用节点。它支持三种子类型,参数形状与对应专用节点完全一致:
webhook:发一个 HTTP 请求;data-transform:字段映射(同「数据流转」);notification:发通知(同「通知」)。
通用脚本 / AI 子类型已退役:需要计算逻辑用「多 Agent 协作」,需要读写数据库用「数据操作」。
数据:DataFlow(DATAFLOW_NODE)
执行一条已存在的 DataFlow 规则(在数据流模块中定义)。必填 ruleId(要执行的规则);可选 inputMappings(入参映射)、waitResult(默认 true = 同步等结果;false = 触发即走,输出执行摘要)、waitTimeoutSeconds(最长等 600 秒)、outputKey(结果写入的上下文变量名)。
数据:数据流转(DATA_TRANSFORM)
把上游数据重排成命名变量,供下游以 {{变量.字段}} 引用。只支持 mapping 模式:一组 source → target 点路径映射,至少一条;outputKey 把映射结果整体写进上下文(强烈建议设置,否则结果只存在 lastOutput 里,会被下一个节点覆盖)。表达式 / 脚本模式在保存时会被显式拒绝——服务端不执行任意脚本。
数据:数据操作(DATA_OPERATION)
直接读写业务数据库。三种动作:
query:按模块 + 关键字列表查询(可带分页);get:按记录 ID 查单条(必填recordId);update:按记录 ID 更新字段(必填recordId和字段映射)。
必填 module(模块 / 模型名);outputKey 把查询结果写进上下文。更新动作禁止写主键、租户、软删时间戳和凭证类字段。
时间:延迟(DELAY)
暂停一段时间再继续。配置 duration(正数)+ unit(seconds / minutes / hours / days)。定时补数、错峰重试一类场景的基础件。
AI:多 Agent 协作(MULTI_AGENT)/ Skill / Memory
- 多 Agent 协作:必填
goal(协作目标,一句话说清要干什么),可选限定参与的 Agent 类型 / 名称、迭代次数与超时。适合"让 AI 自己想办法完成一步"的场景。 - Skill:调用平台内置技能,必填
skillId和input(技能入参对象)。 - Memory:
retrieve(读记忆)或store(写记忆,必填content)。
通信:通知(NOTIFICATION)/ Webhook
- 通知:
type四选一(in_app站内 /email邮件 /sms短信 /webhook),除 webhook 外都必须填recipients收件人;站内通知填平台账号即可,执行成功会在通知面板留下记录。 - Webhook:向外部地址发 HTTP 请求,必填
url,可选method(默认 POST)、请求头、请求体、超时。响应非 2xx 会被判为节点失败,整个工作流随即失败——对外部接口的稳定性要有预期。
数据怎么在节点之间流动
每个节点执行完,输出会进入执行上下文;下游节点在配置里用点路径引用,比如映射 taskOut.who 表示"取上下文里 taskOut 的 who 字段"。两个稳定入口:
- 上游节点设置了
outputKey时,用{{outputKey.字段}}引用,最可靠; - 没设时结果在
lastOutput里,但会被下一个节点覆盖,只适合紧邻节点使用。
一个经过实测的完整例子:开始 → 任务(映射 trigger.name 到 taskOut.who)→ 数据流转(映射 taskOut.who 到 dtOut.who)→ 条件分支(true 走真分支)→ 并行执行(两条分支汇入合并)→ 合并 → 通知(站内信)→ Webhook → 结束。整条链手工执行一次,9 个节点全部成功。
JSON 编辑模式
表单的「DSL 定义」区可在「可视化编辑」与「JSON 编辑」之间切换。JSON 模式直接展示整个 DSL:nodes(节点数组,含 id / type / name / config / position)和 connections(连线数组,含 source / target,分支连线多一个 sourceHandle,如 "output-0")。改完要点「应用更改」才会把 JSON 应用回表单,然后正常保存。两个模式共享同一份数据,随时互转。
给 AI / 自动化对接的要点:条件分支的路由键就是连线上的 sourceHandle(output-0、output-1……按条件数组下标);并行/合并/开始/结束没有配置契约;每个节点的 config 形状在保存时按节点类型严格校验,写错会明确报出"哪个节点、缺哪个字段"。
发布、执行与排查
- 发布:列表行内绿色按钮(草稿 / 已暂停状态显示),确认后进入活跃,若配置了定时触发会自动在「定时任务」页注册一条
workflow:前缀的任务。 - 手动执行:活跃工作流行内黄色播放按钮,可传一段 JSON 作为执行输入(留空为
{})。 - Webhook 触发:触发类型选 WEBHOOK 并保存路径后,向
POST /api/v1/webhooks/<路径>发请求即可触发(配置了密钥时需携带签名头)。 - 执行历史:行内时钟按钮。每次执行有状态(已完成 / 失败)、进度百分比和逐节点执行记录:每个节点可展开输入输出数据,失败时能看到具体是哪一步、什么错误。上面的实测例子中,一次 Webhook 指向不可用地址导致 HTTP 405,就在这里精确定位到了失败节点。
常见失败速查:
| 现象 | 原因与处理 |
|---|---|
| 执行按钮点不了 / 找不到 | 工作流不是活跃状态,先发布 |
| 条件分支后流程直接结束 | 表达式没命中任何分支且没有默认分支;检查写法(字段 运算符 值 或 true) |
| Webhook 节点失败 | 外部地址返回非 2xx 或超时;换稳定地址或给该步骤加重试 |
| 保存时报某节点配置无效 | 按报错补齐缺失字段(如 DataFlow 缺 ruleId、通知缺收件人) |
常见问题
- 画布上删错了怎么办:顶部工具栏有撤销 / 重做;「完成」只是关闭全屏编辑器并同步回表单,不点「保存」就不会落库;「放弃更改」则把整个画布回滚到打开时的样子。
- 快捷键:Delete 删除选中节点,Ctrl+C / Ctrl+V 复制粘贴节点,Ctrl+Z / Ctrl+Shift+Z 撤销重做,Ctrl+0 适应视图。
- 暂停和归档的区别:暂停可恢复,归档是终态(连线与历史保留,但不再可执行)。
- AI 生成:列表页的「AI 生成」可以按一句描述自动起草工作流,生成结果仍落在同一个可视化编辑器里人工确认,配置规则与本文一致。