流程设计画布
流程设计画布用于定义集成流的可执行逻辑:编排节点、连接处理路径、配置数据来源、字段映射、分支规则、目标执行和消息通知,并把当前配置保存或发布为流程版本。
从选中的 OpenLink 进入 集成流配置,选择一个流程,点击 打开流程设计画布 进入该页面。
画布上的内容分成四部分:
| 部分 | 位置 | 负责 |
|---|---|---|
| 顶部操作 | 画布顶部 | 返回、复制、保存、发布、保存并发布、请求示例 |
| 节点库 | 左侧 | 向画布添加节点,并显示每类节点已有数量 |
| 画布 | 中间 | 编排节点、创建连线、选择节点或连线 |
| 配置面板 | 右侧 | 编辑节点名称、节点行为、字段映射、分支条件、消息和连线名称 |
一、顶部操作
| 操作 | 说明 |
|---|---|
| 返回 | 返回集成流列表 |
| 复制 | 校验当前画布,并据此创建一条独立的草稿流程 |
| 保存 | 把当前画布保存为新的流程版本 |
| 发布 | 当前有已保存但未发布的版本时,发布该版本 |
| 保存并发布 | 保存当前画布并立即发布新版本 |
| 请求示例 | 查看当前 Webhook 流程的调用示例(含鉴权占位符说明) |
顶部标签同时展示流程类型、当前状态和当前版本。复制、保存和发布都会先执行第 4 节的校验。
二、节点库与连线
节点类型
| 节点 | 用途 |
|---|---|
| 开始 | 定义流程入口;一个画布只能有一个开始节点 |
| 源节点 | 描述输入数据来自哪里,例如 Webhook 请求体、轮询脚本输入或本地表单数据 |
| 转换 | 配置主表和子表字段映射,通常是数据处理的主节点 |
| 分支 | 按条件拆分路径,把命中和未命中的数据分别路由 |
| 目标节点 | 定义流程执行结果,例如写入本地表单或调用 Studio 脚本 |
| 消息 | 在流程中发送通知消息 |
| 智能体执行 | 使用已发布的智能体分析集成数据,并执行它被允许使用的系统命令 |
| 查询 | 读取本地表单记录及所选的本地子表,用于查询型流程 |
| 结束 | 标记流程结束;一个画布只能有一个结束节点 |
每类节点在节点库右侧显示当前画布中的数量。开始节点和结束节点添加后不能再添加。
节点数量限制
| 流程类型 | 限制 |
|---|---|
| 通用 | 一个开始节点、一个结束节点 |
| 入站、出站 | 一个源节点;有目标节点 |
| 查询数据 | 一个查询节点、没有源节点、不需要目标节点 |
| 消息推送 | 只能使用开始、消息、智能体执行和结束节点,并且至少一个消息 |
连线
从一个节点的输出锚点拖拽到另一个节点的输入锚点即可创建连线。选中连线后,可以在配置面板中修改连线名称或删除连线。画布会在编辑时校验连线,无效连线不会被创建。
| 节点 | 连接要求 |
|---|---|
| 开始 | 不能有连入线,必须且只能有一条连出线 |
| 结束 | 至少一条连入线,不能有连出线 |
| 源节点、转换、目标节点、智能体执行、查询 | 一条连入线和一条连出线,且连出锚点不能和连入锚点同侧 |
| 分支 | 一条连入线,以及命中和未命中两条连出线 |
| 消息 | 一条连入线;可以继续连接后续节点,也可以不连出,作为当前路径的结束 |
除上述单节点规则外,画布还要求:所有节点都能从开始节点到达;每条路径最终都能到达结束节点,或以消息作为终点;源节点(查询型流程则是查询节点)必须位于所有分支之前。
如果流程还没有保存过画布,Soln 会展示起步画布,方便从默认结构开始设计。
三、节点配置
选中节点后,右侧配置面板会打开,并展示当前画布状态与选中对象的配置项。所有节点都可以编辑节点名称;连线可以编辑名称,用于表达业务含义,例如“有效数据”“校验失败”“需要通知”。
开始节点
开始节点描述流程如何进入,同时展示当前表单配对和 Webhook 信息。
| 配置 | 说明 |
|---|---|
| 节点名称 | 开始节点在画布中的显示名称 |
| 触发动作 | 推送流程可选择哪些本地记录事件会启动流程:新增、更新或删除 |
| 单批数量 | 轮询流程固定使用分页批处理;单次提交限制 1–500 条,默认 100 条 |
| 本地表单 | 当前流程配对的 Soln 表单 |
| 外部表单 | 当前流程配对的外部表单 |
| Webhook URL | Webhook 流程接收外部 POST JSON 请求的地址 |
| 子表配对 | 展示已配置的本地子表和外部子表配对,并提供 编辑配对 |
开始节点不会替代创建流程时选择的触发方式,只在该触发方式下补充入口细节。
重新配置子表配对
- 选择开始节点并打开配置面板
- 在 子表配对 下点击 编辑配对
- 添加、替换或删除本地子表与外部子表的配对
- 点击 保存配对
每组配对必须同时包含一个本地子表和一个外部子表,而且同一个本地子表或外部子表不能重复用于多组配对。外部候选包括外部主表单的直接子对象,以及通过已启用外键字段引用外部主表单的对象。
如果删除或替换的配对已经用于转换映射,画布会弹出确认。继续后会删除该配对的子表映射,因为原来的来源和目标关系已经失效;未修改配对的映射会保留。随后画布标记为已修改,需要保存或发布才会持久化。
源节点
源节点描述流程输入侧的数据来源。
| 流程上下文 | 来源行为 |
|---|---|
| 入站 Webhook | 使用 Webhook 请求体作为源数据 |
| 入站轮询 | 使用 Studio 脚本拉取或组装源数据 |
| 出站 | 使用本地表单数据作为源输入 |
入站轮询流程需要选择 Studio 脚本资产和脚本文件,配置面板会展示源脚本入参示例。批量轮询通过 input.cursor 提供持久化检查点,通过 input.pageSize 提供单批上限;脚本必须只请求一页外部数据并返回 { items, nextCursor },不能在脚本内部遍历完所有分页。
批量轮询时,Soln 在同一个租户数据库事务中提交本页记录并推进计划检查点。某一页失败时,本页写入回滚,Cursor 不前移,下一次执行从最后一次成功提交的位置继续。投递语义仍然是至少一次,因此目标节点应使用本地标识字段执行新增或更新,不能依赖非幂等的纯新增操作。
export default async function main(
payload: StudioScriptRuntimeContextPayload,
context: StudioScriptContext
) {
const response = await context.http.requestJson({
method: 'POST',
url: 'https://api.example.com/integration/users/query',
json: {
cursor: payload.input.cursor,
limit: payload.input.pageSize,
},
timeoutMs: 20_000,
});
return {
items: response.data.items,
nextCursor: response.data.nextCursor ?? null,
};
}
Studio 脚本默认执行上限为 30 秒;OpenLink 集成脚本使用 60 秒配置。脚本里的单次 HTTP 请求仍应根据外部接口设置更短的超时时间。
转换
转换用于把来源字段映射到目标字段,支持主表字段映射和子表字段映射。
| 区域 | 说明 |
|---|---|
| 主表字段映射 | 配置本地主表和外部主表之间的字段映射 |
| 子表字段映射 | 配置本地子表和外部子表之间的字段映射 |
| 来源字段 | 使用来源侧字段作为映射值 |
| 固定值 | 不选择来源字段,直接写入固定值 |
| 目标字段 | 选择接收映射值的字段 |
| 匹配字段 | 搜索字段可配置如何用传入值匹配已有记录 |
| 选项映射 | 配置单选、多选和布尔字段之间的选项值映射 |
| 自动映射 | 按字段名称、API 名、选项标签或选项值自动生成映射 |
| 映射结果示例 | 展示转换后会传给后续目标执行的数据结构 |
当目标节点依赖转换后的数据时,先完成转换映射,再配置目标节点。
分支
分支按条件路由数据,有命中和未命中两条连出路径。每个分支至少配置一个条件,并且唯一的源节点(查询型流程是查询节点)必须位于所有分支之前。
条件字段根据流程方向选择:入站流程可以判断外部字段,并在适用时使用 OpenLink 主体映射;出站流程可以判断 Soln 本地字段。
| 配置 | 说明 |
|---|---|
| 分支名称 | 分支路径的显示名称 |
| 条件 | 决定数据是否进入命中路径的规则 |
| 命中路径 | 条件满足时使用的连线 |
| 未命中路径 | 条件不满足时使用的连线 |
分支适合校验、异常处理、选择性通知,或把不同记录路由到不同后续目标。
目标节点
目标节点定义映射和路由之后要执行什么。
入站流程的目标节点通常写入 Soln 本地表单:
| 入站配置 | 说明 |
|---|---|
| 写入动作 | 新增、更新、新增或更新、删除,或在支持时完成工作流回调;工作流回调只在入站 Webhook 流程中可用 |
| 触发审批 | 新增或新增或更新时,控制本地表单提交是否触发审批 |
| 匹配字段 | 更新、新增或更新、删除时,用于匹配已有本地记录的字段 |
出站流程的目标节点通常调用 Studio 脚本:
| 脚本配置 | 说明 |
|---|---|
| Studio 脚本 | 选择要执行的脚本资产和脚本文件 |
| 脚本入参示例 | 展示传给脚本的 payload,包含流程信息、触发信息、表单绑定、映射结果、原始输入和运行上下文 |
消息
消息用于发送流程通知;它可以继续连接后续节点,也可以不连出,作为当前路径的结束。
| 配置 | 说明 |
|---|---|
| 消息通道 | 站内信、推送或邮件;消息模板列表跟随所选通道 |
| 消息模板 | 选择模板;模板决定需要映射哪些输入变量 |
| 目标来源 | 接收人来自流程上下文、固定接收人或本地表单字段 |
| 上下文接收人 | 发送给触发人、表单提交人或上一步接收人 |
| 固定接收人 | 选择成员、角色、平台管理员、组织或部门 |
| 字段接收人 | 使用本地表单中的成员、组织或部门字段 |
| 优先级 | 低、普通、高或紧急 |
| 点击动作 | 无、打开资源或打开外部链接;资源类型可选流程执行、表单记录或自定义资源 |
| 动作模板 | 资源 ID 模板、URL 模板,以及可选的 JSON 动作参数 |
| 输入映射 | 把上下文路径或固定值映射到模板声明的输入变量 |
可用的上下文路径包括流程输入、上游执行结果、智能体分析结果、来源流程与执行信息、表单信息,以及运行语言和时区。
查询节点
查询节点读取本地表单记录及配置中选中的本地子表,用于查询型流程。
- 添加 查询 节点
- 选择本地根表单
- 勾选返回字段,也可以使用全选和清空
- 需要返回子表时配置关联数据
| 规则 | 说明 |
|---|---|
| 本地根表单 | 必填;查询读取该本地表单的记录 |
| 返回字段 | 至少勾选一个字段 |
| 节点数量 | 查询流程只能有一个查询节点,并且没有源节点 |
智能体执行节点
智能体执行节点使用已发布的智能体分析集成数据,并执行该智能体被允许使用的系统命令。
- 添加 智能体执行 节点
- 选择已发布的智能体
- 填写任务指令
- 选择执行时机:成功时、失败时或始终
智能体和任务指令都必须配置,连接方式与源节点一致:一条连入线和一条连出线,且不在同一侧。
四、校验、版本与发布
校验清单
复制、保存和发布之前,画布必须通过拓扑与节点配置校验:
- 只能有一个开始节点和一个结束节点
- 入站和出站流程只能有一个源节点,并至少有一个目标节点
- 查询流程只能有一个查询节点,没有源节点
- 消息推送流程只使用开始、消息、智能体执行和结束节点,且至少一个消息
- 每个分支都有完整的命中、未命中路径,并至少配置一个条件
- 转换映射完整
- 每个智能体执行节点都配置了智能体和任务指令
- 所有节点都能从开始节点到达,并且每条路径最终都能到达结束节点或作为终点的消息
校验不通过时,画布会定位到出问题的节点,需要先修正再操作。
保存与发布
| 操作 | 说明 |
|---|---|
| 保存 | 使用当前画布创建一个新版本 |
| 保存并发布 | 创建新版本并立即发布 |
| 发布 | 当前没有未保存变更时,发布已经保存的版本 |
发布后流程才有可运行版本。流程的启用和停用仍然在 集成流配置 页面管理。
复制当前画布
- 点击顶部 复制
- 填写新流程名称和可选描述
- 点击 复制 确认
复制前 Soln 会执行与保存相同的校验,因此可以复制当前尚未保存、但已通过校验的画布修改。流程编码由系统自动生成。
复制结果是拥有独立版本和审计信息的草稿流程,流程图、字段映射、子表配对、脚本、节点设置和推送执行重叠策略都会复制;运行状态不会复制——新流程不会自动启用或发布,也不会继承执行日志和已激活的轮询计划,需要单独检查并发布。
五、推荐配置顺序
- 在 集成流配置 中确认流程类型、触发方式、主表配对和子表配对
- 打开流程设计画布
- 检查起步画布,保留一个开始节点和一个结束节点
- 配置开始节点的入口细节
- 配置源节点,需要脚本时选择 Studio 脚本
- 配置主表和子表的转换映射
- 需要条件路由时添加分支
- 查询型流程添加并配置查询节点
- 需要模型分析时添加智能体执行节点
- 配置目标执行
- 需要通知时添加消息
- 确认所有节点都能从开始节点连到结束路径
- 保存并发布画布
- 回到 集成流配置 启用流程,再做触发测试并查看执行日志