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. 访问入口

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取消运行中执行

关键机制

6. 权限与安全

7. 常见问题与排错

8. 已知缺陷与边界

项目说明
Webhook 触发器仅做配置展示,对外公开回调地址由后端 POST /webhooks/:name 接收(本页不直接管理)
结果截断运行结果/执行详情中 output/error 做截断展示,完整内容需点「展开」
config 模板引用依赖后端执行引擎支持,兜底节点定义不保证所有字段后端均识别
分页边界执行历史一次仅拉一页(page_size=10),总数取 total 字段,未实现滚动加载