工作流
从模板创建审批、检查或入职办理,待办推到该办的人,可选发布到应用桌面。
来源 docs/core-mechanisms/工作流.md
文档版本:2.2 状态:流程定义 + 发布到应用桌面 + 检查/审批模板可用(Web + 移动端待办) 表述:面向产品、运营与对接。
关联:工作流与合规.md、工作区应用.md、服务通知.md、人力资源平台插件
1. 结论先说
Cadau 提供 工作流 顶栏模块(与智能体、技能中心同级),用于:
- 从 平台模板 创建工作区内的 流程定义;
- 发布 到 应用桌面(可选);
- 管理 实例 与 我的待办(含服务通知触达、移动端办理)。
推荐模板:IWAY 工厂审核、空白流程、简易审批。经典「现场合规检查」仍可用,建议迁移到通用引擎模板。
2. 四层模型
| 层 | 用户表达 | 存储 |
|---|---|---|
| 模板 | 从模板创建 → IWAY / 空白 / 简易审批 | 代码 workflow/templates.go |
| 流程定义 | 我的流程 | workflow_definitions |
| 已发布应用 | 应用桌面图标 | workspace_apps(app_kind=workflow) |
| 实例 / 待办 | 一次检查、审批、整改 | workflow_instances / workflow_tasks |
3. 用户路径
- 顶栏 功能菜单 → 工作流
- 从模板创建 → 填名称 → 可选「创建后发布到应用桌面」(默认不发布)
- 程序集仅在发布时选择:未分组(直接上桌面)、已有程序集,或新建程序集;可不发布,仅在工作流模块使用
- 在 我的流程 中 打开 发起实例:按开始节点表单填写;若表单含 组织部门多选 字段则可勾选部门(来自人力资源);需要时选择 审批人/办理人(已绑定 Cadau 账号的员工)
- 发布 / 取消发布 / 归档
- 一线人员从 应用 桌面(若已发布)、我的待办 或 服务通知 进入办理(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) |
| GET | /definitions/{defId} | 定义详情 | ||
| PATCH | /definitions/{defId} | 更新名称、说明、关联应用等 | ||
| 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 | 我的待办(含代理期内代办他人的待办、业务职责可领取) | ||
| POST | /tasks/{taskId}/complete | 完成待办 | ||
| POST | /tasks/{taskId}/reassign | 转交待办(body: to_user_id) | ||
| GET/PUT/DELETE | /assignee-delegate | 本人办理代理(请假/外出期间代收待办) |
工作区业务职责(协作 API,非 /workflows 前缀):GET/POST /workspaces/{id}/duties,以及 …/duties/{dutyId} 的 PATCH/DELETE、成员与 pack-grants。
合规专用:/frameworks、/compliance/knowledge-status 仍在。
对话 tools(工作智能体):workflow_list / workflow_create / 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=agent;同步执行智能体,结果可落用户/职责/编制/身份;理由变量 assignee_agent_reason |
| 待办通知 | notify/workflow.go → module.workflows |
| Web 工作流模块 | WorkflowPanel.tsx,路由 /workflows |
| 移动端 | client/mobile/app/(app)/workflows/ |
| 合规运行时 | ComplianceWorkflowPanel.tsx + internal/compliance/ |
6. 后续(P3)
- [ ] 待办到期提醒(定时扫描)
- [ ] 多级审批链与工作区角色自动路由
- [ ] 归档后硬删除 / 导出审计包