工作流
从模板创建审批、检查或入职办理,待办推到该办的人,可选发布到应用桌面。
来源 docs/core-mechanisms/工作流.md
文档版本:2.5 状态:流程定义 + 发布可用 + 可选上应用桌面 + 检查/审批模板可用(Web + 移动端待办) 表述:面向产品、运营与对接。
关联:工作流与合规.md、工作区应用.md、服务通知.md、人力资源平台插件
1. 结论先说
Cadau 提供 工作流 顶栏模块(与智能体、技能中心同级),用于:
- 从 平台模板 创建工作区内的 流程定义,或在电脑上 用说明新建(把谁填、谁批写成几句话,生成未发布草稿,在流程设计里补红点后保存);
- 发布 表示流程可用:工作区成员从「已发布」点进去即可发起;业务挂钩、插件发起、调用其它流程也须已发布。不必放到应用桌面;
- 放到应用桌面 是另一步,只为桌面图标;
- 管理 实例 与 我的待办(含服务通知触达、移动端办理)。
推荐模板:IWAY 工厂审核、空白流程、简易审批。经典「现场合规检查」仍可用,建议迁移到通用引擎模板。
2. 四层模型
| 层 | 用户表达 | 存储 |
|---|---|---|
| 模板 | 从模板创建 → IWAY / 空白 / 简易审批 | 代码 workflow/templates.go |
| 流程定义 | 我的流程 | workflow_definitions |
| 流程分组顺序 | 我的流程里命名分组的上下顺序(工作区共享) | workspace_workflow_group_order |
| 已发布 | 可供发起 / 挂钩 | workflow_definitions.released |
| 已发布应用 | 应用桌面图标(可选) | workspace_apps(app_kind=workflow) |
| 实例 / 待办 | 一次检查、审批、整改 | workflow_instances / workflow_tasks |
3. 用户路径
- 顶栏 功能菜单 → 工作流
- 从模板创建 → 填名称 → 可选「创建后发布」(默认不发布、不上桌面);或 我的流程 → 用说明新建(Web,对话框):写几句话生成审批类草稿,在 流程设计 里补红点后保存。手机上请到电脑操作。
- 程序集 / 分组 用于「我的流程」;放到应用桌面时再用同名程序集
- 工作区成员从 已发布 点流程即可发起;设计与试跑在 我的流程
- 发布 / 取消发布;需要桌面入口时再 放到应用桌面 / 从桌面拿下;归档;未发布可删除
- 一线人员从 已发布、应用 桌面(若已上桌面)、我的待办、我参与的(默认全部,可筛进行中 / 已完成)或 服务通知 进入办理(Web / 手机)
发起页文案与字段均来自 流程设计(开始表单节点的标题/说明/提交按钮文案与字段列表)。平台模板(如工厂审核、简易审批)只在创建时预填这些参数,不在运行时按模板写死界面。
组织数据约定:
- 部门、员工 以 人力资源 系统级插件为准;不再新建「部门 / 厂区」工作区应用,发起侧也不再使用「厂区」概念。
- 办理人解析仍为 Cadau
user_id:界面从 HR 员工选择,写入其mindlink_user_id。 - 旧流程若仍带历史
departments_app_id,仅在人力资源不可用时回退读取。
4. HTTP API(/workspaces/{id}/workflows)
| 方法 | 路径 | 说明 | |||||
|---|---|---|---|---|---|---|---|
| GET | /templates | 平台模板列表 | |||||
| GET | /hr/org-units | 发起用:人力资源部门列表 | |||||
| GET | /hr/employees | 发起/设计用:人力资源员工列表(含 mindlink_user_id) | |||||
| GET | /hr/positions | 设计用:岗位职级目录(部门岗位编制办理人) | |||||
| GET | /step-catalog | 流程设计器节点目录(核心 ∪ 已启用插件) | |||||
| GET | /compliance/surveys | 流程设置:默认检查方案列表(从工作流直接发起时用;从检查计划发起时以该套为准) | |||||
| GET/POST | /definitions | 流程定义列表 / 创建;列表可带 `?status=active\ | archived\ | all`(默认 active) | |||
| POST | /nl-preview | 根据说明预览审批草稿(不写入) | |||||
| POST | /nl-create | 按说明新建未发布草稿(对话框「用说明新建」) | |||||
| POST | /definitions/{defId}/nl-generate | 空画布(或 replace=true 清空重来)按说明写入草稿 | |||||
| GET | /definitions/{defId} | 定义详情 | |||||
| PATCH | /definitions/{defId} | 更新名称、说明、关联应用等 | |||||
| DELETE | /definitions/{defId} | 删除未发布流程(已发布须先取消发布;有进行中的办理须先取消) | |||||
| POST | /definitions/{defId}/release | 发布为可用(不上桌面) | |||||
| POST | /definitions/{defId}/unrelease | 取消发布(同时从桌面拿下) | |||||
| POST | /definitions/{defId}/publish | 放到应用桌面(同时视为已发布) | |||||
| POST | /definitions/{defId}/unpublish | 从应用桌面拿下(仍可保持已发布) | |||||
| POST | /definitions/{defId}/archive | 归档(软归档,默认列表隐藏;可恢复) | |||||
| POST | /definitions/{defId}/unarchive | 取消归档,恢复为可用 | |||||
| POST | /definitions/{defId}/start | 发起实例;body 可选 is_test: true 标记为测试单(标题加「[测试]」前缀)。「我的流程」里试跑可不发布;「已发布」、插件 / 业务挂钩 / 调用其它流程须已发布 | |||||
| POST | /definitions/{defId}/cleanup-test-instances | 硬删除该定义下可清理的测试实例(本人发起;管理员可清全部)及其待办/工作票/智能体任务 | |||||
| GET | /instances?definition_id=&is_test= | 实例列表;is_test 为 all(默认)/ 0(仅正式)/ 1(仅测试) | |||||
| GET | /instances/{instanceId} | 实例详情(含 is_test) | |||||
| POST | /instances/{instanceId}/cancel | 取消进行中实例(同时取消排队/执行中的智能体任务) | |||||
| GET | /tasks/mine | 我的待办(含代理期内代办他人的待办、业务职责可领取) | |||||
| GET | `/mine?kind=todo\ | submitted\ | handled\ | involved` | 办理箱:待办 / 我提交的 / 我已办 / 我参与的(kind=involved 可带 `phase=all\ | active\ | ended`,缺省按进行中;跨流程;点开即可看单据;有单号时列表带出) |
| POST | /tasks/{taskId}/complete | 完成待办 | |||||
| POST | /tasks/{taskId}/reassign | 转交待办(body: to_user_id) | |||||
| GET/PUT/DELETE | /assignee-delegate | 本人办理代理(请假/外出期间代收待办) | |||||
| GET/PUT | /group-order | 「我的流程」命名分组顺序(工作区共享;body { group_keys: string[] }) |
工作区业务职责(协作 API,非 /workflows 前缀):GET/POST /workspaces/{id}/duties,以及 …/duties/{dutyId} 的 PATCH/DELETE、成员与 pack-grants。
合规专用:/frameworks、/compliance/knowledge-status 仍在。
对话 tools(工作智能体):workflow_list / workflow_create / workflow_generate_from_description / workflow_start。帮助智能体不代建流程;问「如何」时说明去电脑「用说明新建」或从模板创建。
5. 实现对照
| 用户概念 | 实现 | |
|---|---|---|
| 模板 | internal/workflow/templates.go | |
| 定义 CRUD / 发布 / 归档 | definitions.go、lifecycle.go、store/workflow_definition.go | |
| 通用引擎 | runner.go(含 human.approve、办理人解析、会签/或签) | |
| HR 部门/员工/岗位 BFF | handlers/workflows_hr.go → platformplugin.InvokeOperation | |
| 业务职责 | store/workspace_duty.go、handlers/workspace_duties.go;待办 assignee_role=duty:<key> | |
| 部门岗位编制 | HR lib/staffing.ts;办理人 type=hr_dept_position(dept_position_id 或 部门变量×岗位) | |
| 指定多人会签/或签 | 办理人 type=users + `config.approval_mode=all | any;countersign.go` |
| 智能体判定办理人 | type=agent;同步执行智能体,结果可落用户/职责/编制/身份;理由变量 assignee_agent_reason | |
| 待办通知 | notify/workflow.go → module.workflows | |
| Web 工作流模块 | WorkflowPanel.tsx,路由 /workflows | |
| 流程分组顺序 | store/workflow_group_order.go;GET/PUT …/workflows/group-order | |
| 移动端 | client/mobile/app/(app)/workflows/ | |
| 合规运行时 | ComplianceWorkflowPanel.tsx + internal/compliance/ |
6. 后续(P3)
- [ ] 待办到期提醒(定时扫描)
- [x] 会签 / 或签(设计时固定名单,并行发给每人;会签全部通过才过、一人驳回即停)
- [ ] 多级审批链与工作区角色自动路由
- [ ] 归档后硬删除 / 导出审计包