1. 页面概览
「工作流编排」是 LightAIP 管理后台(Admin)的流程自动化配置页(源码 action/web/src/views/AdminWorkflowPage.vue)。管理员在此创建/编辑工作流定义(节点 + 边组成的 DAG)、发布与取消发布、同步运行并查看执行历史。页面顶部注释块概括:工作流列表(名称/描述/版本/状态徽标/触发器/更新时间 + 编辑/发布/取消发布/运行/执行历史/删除)、创建/编辑弹窗(触发器配置 + 表单式节点编辑器,节点类型由 /workflows/node-types 动态渲染 config 字段,保存时组装 definition_json {nodes, edges})、运行(POST /workflows/:id/run 同步执行,展示各节点状态与最终 result)、执行历史(分页列表 + 详情弹窗,运行中可取消)。
一句话总结:把数据查询、NLQ、AI 分析/生成、条件分支、通知等节点编排成 DAG,发布后即可同步执行并跟踪每次运行的节点明细。
2. 访问入口
- 路由与菜单:
/admin/workflows,路由名AdminWorkflows;位于 AIP 管理后台左侧边栏「工作流编排」(AdminLayout.vue,监控看板之后)。 - 认证与权限:
/admin父路由requiresAuth + requiresAdmin,须管理员登录;token 为aip_token(Bearer),非管理员访问会被守卫重定向到智能查询。 - 端口与 API 前缀:AIP 18080,aipClient baseURL
/aip-api/v1。
3. 界面布局
┌ 页面头: 工作流编排 [刷新] [新建工作流] ┐
│ alert 提示条(可关闭) │
│ 卡片: 工作流列表表格 │
│ ID|名称|描述|版本|状态|触发器|更新时间|操作│
│ 操作: 编辑/发布或取消发布/运行/执行历史/删除│
│ 弹窗: 创建/编辑(基础信息+触发器+全局变量+ │
│ 节点列+边列+DAG预览+保存/取消) │
│ 弹窗: 运行(运行参数+开始运行+节点结果+最终结果)│
│ 弹窗: 执行历史(列表分页 / 详情视图+取消) │
└──────────────────────────────────────┘
各板块职责:页面头提供刷新与新建;列表展示全部工作流并可逐行操作;创建/编辑弹窗完成定义编排;运行弹窗同步执行并展示节点结果;执行历史弹窗分页查看每次运行并可取消、看详情。
4. 交互元素
| 控件 | 位置 | 含义与作用 |
|---|---|---|
| 「新建工作流」 | 页面头 | 打开编辑弹窗,预置一个 query_data 节点;节点类型未加载时先拉取 |
| 「发布」/「取消发布」 | 列表行 | 切换工作流 active 状态;取消发布仅对已发布工作流显示 |
| 「运行」 | 列表行 | 打开运行弹窗,同步执行工作流(超时放宽到 120 秒) |
| 「执行历史」 | 列表行 | 打开分页执行列表;「详情」看节点时间线,「取消」终止运行中执行 |
| 「删除」 | 列表行 | confirm 确认后删除定义 |
| 「+ 添加节点」「+ 添加边」 | 编辑器 | 追加节点(自动编号 node_n)/边(默认首尾节点),删除节点自动清理关联边 |
| 触发方式下拉 | 编辑器 | manual 手动 / cron 定时(需 Cron 表达式)/ webhook(填 Webhook 路径) |
| 「保存(版本 +1)」 | 编辑器 | 创建 POST /workflows;编辑 PUT /workflows/:id,保存前校验名称/节点 id 唯一/无自环 |
5. 后端关联
端点(AIP 18080,/aip-api/v1 前缀,均带 Bearer token):
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /workflows | 工作流列表 |
| GET | /workflows/node-types | 节点类型定义(含 config 字段,未就绪用前端兜底) |
| GET | /workflows/:id | 工作流详情(回填编辑器) |
| POST | /workflows | 创建工作流(admin) |
| PUT | /workflows/:id | 更新工作流,版本 +1(admin) |
| DELETE | /workflows/:id | 删除工作流(admin) |
| POST | /workflows/:id/publish | 发布(admin) |
| POST | /workflows/:id/unpublish | 取消发布(admin) |
| POST | /workflows/:id/run | 同步执行,body {params} |
| GET | /workflows/:id/executions | 执行历史分页 ?page=&page_size= |
| GET | /workflows/executions/:eid | 执行详情(节点状态时间线) |
| POST | /workflows/executions/:eid/cancel | 取消运行中执行 |
关键机制
- 节点类型 8 种:trigger 触发器、query_data 数据查询、nlq_query NLQ 查询、ai_analysis AI 分析、ai_generate AI 生成、condition 条件分支、send_notification 发送通知、call_api 调用 API;节点 config 字段由后端 node-types 动态渲染,并支持模板引用上游输出
{{.node_1.output.rows}}。 - 定义以
definition_json {nodes, edges}提交,保存前前端校验:名称必填、cron 触发时 Cron 表达式必填、节点 id 非空且不重复、禁止自环、边不得引用不存在的节点。 - 运行是同步接口:返回
execution_id、整体状态、node_results[](node_id/node_type/status/duration_ms/output_summary/error)与最终 result;执行状态映射 成功/失败/运行中/已取消/跳过。 - 执行历史分页查询(page_size=10),详情接口按执行 id 拉取节点输入/输出/错误时间线;运行中(running/pending/queued/in_progress)可取消。
6. 权限与安全
- 路由级:
/admin父路由requiresAdmin,守卫校验localStorage.aip_is_admin === '1',非管理员跳回智能查询。 - 接口级:读与运行挂 protected 组(登录即可),创建/更新/删除/发布/取消发布挂 admin 组(后端强制管理员)。
- 写操作防护:删除、取消执行前均有
confirm二次确认;发布中/保存中按钮置灰防重复提交。
7. 常见问题与排错
- 现象:列表一直「加载中」或提示加载失败。原因:后端未启动或 token 失效(401 被跳登录)。处理:启动 AIP 服务(18080)并重新登录;点「刷新」重试。
- 现象:节点类型只有兜底 8 种、config 字段不全。原因:
/workflows/node-types未就绪。处理:确认后端已启动并返回 node-types;兜底定义仍可编排,保存后以后端实际执行为准。 - 现象:运行弹窗一直「运行中」。原因:
POST /workflows/:id/run为同步执行,AI 节点耗时较长。处理:前端已放宽到 120 秒,等待即可;超过仍未返回可到执行历史查看记录,必要时「取消」。 - 现象:保存报「节点 id 重复」或「边引用了不存在的节点」。原因:手动改过节点 id 或删除节点后残留了相关边。处理:删除节点时会自动清理关联边;修改 id 后需在「边」下拉中重新选择源/目标节点。
8. 已知缺陷与边界
| 项目 | 说明 |
|---|---|
| Webhook 触发器 | 仅做配置展示,对外公开回调地址由后端 POST /webhooks/:name 接收(本页不直接管理) |
| 结果截断 | 运行结果/执行详情中 output/error 做截断展示,完整内容需点「展开」 |
| config 模板引用 | 依赖后端执行引擎支持,兜底节点定义不保证所有字段后端均识别 |
| 分页边界 | 执行历史一次仅拉一页(page_size=10),总数取 total 字段,未实现滚动加载 |