流程编排模式
流程编排模式(LAYOUT)用可视化画布把多个 API 调用、条件分支、循环和数据处理节点串成一条执行链路。它适合聚合多个接口、按条件调用不同下游、对结果做过滤/映射/ 计算等场景。
适用场景
- 一个平台接口需要按顺序调用多个内部或外部 API。
- 需要根据上游返回结果走不同分支。
- 需要对列表结果排序、过滤、字段重命名或做数值计算。
- 需要循环处理列表,并对每项调用接口。
- 需要把内部 API 串联成业务编排,而不写代码。
画布与节点
画布左侧节点面板按四组展示:
| 分组 | 节点 |
|---|---|
| 基础 | 开始、结束 |
| 服务 | API 接口 |
| 逻辑 | 逻辑判断、循环节点、变量赋值、延时 |
| 数据 | 数据过滤、字段映射、数据计算、数据合并、数据排序 |
拖拽节点到画布,连线表达执行顺序,点击节点在右侧或弹窗中配置。开始节点接收接口请求参数,结束节点决定最终返回。
节点说明
开始 / 结束
- 每张画布必须且只能有一个开始节点和一个结束节点。
- 开始节点的请求参数来自右侧「请求参数」面板。
- 结束节点汇聚上游结果,按右侧「返回参数」输出。
API 接口
调用内部接口或外部 HTTP 接口:
| 配置 | 说明 |
|---|---|
| 接口来源 | 内部接口(选择平台已有 API)或外部接口(手填 URL) |
| 请求协议 | 外部接口使用 http / https |
| 接口地址 | 内部接口路径或外部域名+路径 |
| 请求方式 | GET / POST / PUT / DELETE / PATCH |
| 响应超时 | 默认 10000ms |
| 请求参数 | 参数名 + 参数类型,值支持 #{变量} |
| 请求头 | 仅允许透传安全的请求头 |
| 结果变量 | 结果存入的变量名,默认 data |
内部接口返回 code=0 时自动提取 data 作为结果;业务码非 0 视为节点失败。内部 API 调用同样受网关与接口权限约束。
逻辑判断
支持两种模式:
| 模式 | 说明 |
|---|---|
| 条件判断 | 配置一组条件,满足走「真」分支,不满足走「假」分支 |
| 多路分支 | 配置多个命名分支 + 默认分支,按顺序命中 |
操作符包括 ==、!=、>、<、>=、<=、contains、in、notIn、startsWith、endsWith、regex、isNull、isNotNull、isEmpty、isNotEmpty。条件之间支持「且 / 或」。
画布上每个分支都必须连接对应标签的出边;条件判断节点需分别连接真/假两条出边,多路分支需为每个分支和默认分支连接同名标签的出边。
循环节点
| 配置 | 说明 |
|---|---|
| 数据源 | 列表变量名或 #{data.list} 路径 |
| 迭代变量 | 当前项变量名,如 item |
| 索引变量 | 当前索引变量名,如 index |
| 结果变量 | 聚合结果数组的变量名 |
| 执行模式 | 串行 / 并行 |
| 并发数 | 并行模式生效,前端 1–20,后端硬上限 20 |
| 最大迭代 | 默认 1000,硬上限 10000,超出部分截断 |
| 失败策略 | 中断(默认)/ 继续(记录错误后继续) |
循环体末尾必须连回循环节点,循环节点再从「完成」出边走后续流程。循环体内可引用 #{item}、#{index}。
变量赋值
按顺序给变量赋值,支持:
#{变量.路径}:完整提取,保留嵌套结构。{...}/[...]:JSON 字面量。- 其他内容按字符串字面量处理。
后面的赋值可以引用前面赋值产生的目标变量。
延时
- 支持固定数值或
#{变量}。 - 单次上限 60000ms,超出按 60000ms 执行。
- 解析失败或小于等于 0 时不延时。
数据过滤
对输入列表按条件筛选,条件操作符与逻辑判断一致,支持多条件「且 / 或」。默认输入输出变量均为 data。
字段映射
把源字段映射为目标字段:
- 逐条配置「源字段 → 目标字段」。
- 可选的表达式用于取值转换。
- 默认输入输出变量均为
data。
数据计算
为返回字段配置计算公式:
- 支持多个数值字段的加减乘除。
- 支持字符串拼接。
- 输入框支持
#{value}引用接口参数。 - 计算结果赋值给目标字段。
数据合并
| 合并类型 | 说明 |
|---|---|
| 拼接 | 按上游顺序拼接列表 |
| 合并去重 | 去重后合并 |
| 关联 | 按关联字段做关联合并,必须填写关联字段 |
默认自动汇聚所有上游节点结果;勾选数据来源后只聚合指定结果变量。
数据排序
选择上一节点返回的字段,设置升序或降序。字段类型来自上游返回参数定义。
变量与表达式
- 请求参数、节点参数值、条件值都支持
#{变量名}或#{变量.路径}。 - 节点结果通过「结果变量」写入上下文,默认
data。 - 开始节点可直接引用接口请求参数。
- 表达式解析失败通常按字面量处理,具体以节点配置提示为准。
保存与发布校验
保存前平台会校验编排结构,不通过时无法保存或发布:
| 校验 | 说明 |
|---|---|
| 开始/结束节点 | 有且仅有一个 |
| 节点可达性 | 所有节点必须从开始可达,且能到达结束 |
| 环路 | 除循环节点自身的循环体外,不允许成环 |
| 分支标签 | 条件/循环节点的每条出边必须选择合法标签 |
| 节点数量 | 上限 1000 个 |
| 节点配置 | API、过滤、映射、排序、条件、循环、变量、延时节点分别校验必填项 |
| 关联合并 | 「关联」类型必须填写关联字段 |
运行限制
| 项目 | 限制 |
|---|---|
| 编排嵌套层级 | 最大 8 层(LAYOUT 调用 LAYOUT) |
| 单次延时 | 60000ms |
| 循环最大迭代 | 默认 1000,硬上限 10000 |
| 循环并发 | 最大 20 |
| 节点数量 | 1000 |
| API 节点响应超时 | 默认 10000ms,可按节点配置 |
测试与排错
- 画布右上角「测试」可执行整条编排。
- 测试链路会返回执行轨迹,可看到每个节点的状态、入参、出参与耗时;发布后的调用不返回轨迹。
- API 节点失败时,错误信息会写入对应结果变量,并按节点失败策略处理。
- 常见问题:
| 现象 | 原因 | 处理 |
|---|---|---|
| 无法保存,提示存在无法到达节点 | 有孤立节点或断线 | 检查连线,确保 从开始可达并能到结束 |
| 无法保存,提示分支缺少出边 | 条件/循环分支未连线或标签不匹配 | 为每个分支连接同名标签出边 |
| 循环没有结果 | 数据源不是列表或变量名错误 | 检查数据源表达式与上游结果变量 |
| 循环体不执行 | 缺少「循环体」出边或未连回循环节点 | 补全循环体入口与回边 |
| API 节点报调用层级过深 | LAYOUT 嵌套超过 8 层 | 拆分编排或改为单层调用 |
| 延时不准 | 变量解析失败或超过 60s | 检查变量值与上限 |
| 合并结果为空 | 数据来源勾选错误 | 检查上游结果变量与合并类型 |