workflow 是 FastAPI Best Architecture 的企业审批流后端插件,提供流程定义、流程实例、审批任务、消息通知与申请侧能力。
- 流程分类与流程定义管理
- 流程实例发起、审批、撤回、催办
- 待办任务与消息通知能力
- 已发布流程的 applicant-only 访问能力
- WebSocket 按用户消息推送
- MySQL / PostgreSQL 初始化与销毁 SQL
api/:插件 API 路由crud/:数据访问层engine/:流程相关运行时能力model/:数据库模型schema/:请求与响应结构service/:业务逻辑层sql/:MySQL / PostgreSQL 初始化与清理脚本tasks/:插件任务入口plugin.toml:插件元数据
当前插件元数据定义在 plugin.toml 中:
- 名称:
workflow - 版本:
0.1.0 - 标签:
task、notification - 数据库:
mysql、postgresql - 作者:
Albert
以下示例用于说明宿主工程如何接入该插件,具体命令请结合 FBA 当前插件安装流程执行。
如果通过插件市场安装,宿主工程会将插件放入对应插件目录。
如果手动接入,可将本仓库内容放入宿主工程插件目录,例如:
backend/plugin/workflow/
注意:应拷贝本仓库中的文件内容,而不是在目标目录外再额外包一层
workflow/。
根据所用数据库执行对应脚本:
- MySQL:
sql/mysql/init.sql - PostgreSQL:
sql/postgresql/init.sql - 如使用 snowflake 主键方案,则执行对应
init_snowflake.sql
插件元数据中已声明:
[app]
router = ["v1"]宿主工程应按 FBA 插件加载机制加载插件路由。
如需在系统中展示 workflow 菜单,还需要补充:
- workflow 菜单初始化 SQL
- 角色菜单授权数据
- 测试账号权限种子数据
建议同时安装前端插件 workflow_ui,否则仅后端接口可用,无法直接获得流程设计器与业务页面。
在宿主工程中,接入该插件时通常需要关注以下几点:
- 按插件机制加载
api/router.py - 确保 workflow 路由暴露在统一 API 前缀下
- 确保插件模型能被宿主工程识别并参与建表或迁移流程
- 若使用插件 SQL,而非 Alembic 管理,则需保证 SQL 与当前数据库版本一致
- workflow 的管理态接口应保留在管理权限范围内
- 普通用户仅应暴露申请侧能力
- 若宿主工程启用了 WebSocket / Socket.IO,需保证 workflow 消息通知入口已接入
- 若未启用实时通道,审批流仍可工作,但消息联动能力会受限
sql/ 目录包含以下脚本:
sql/mysql/init.sqlsql/mysql/destroy.sqlsql/mysql/init_snowflake.sqlsql/mysql/destroy_snowflake.sqlsql/postgresql/init.sqlsql/postgresql/destroy.sqlsql/postgresql/init_snowflake.sqlsql/postgresql/destroy_snowflake.sql
注意:当前销毁脚本已调整为避免误删不应删除的业务表,使用前仍建议先确认目标环境。
本插件区分管理侧与申请侧:
- 管理侧:流程定义、分类与管理能力
- 申请侧:普通用户发起已发布流程、查看进度、撤回、催办
普通用户不应依赖管理态流程定义接口。
前端插件仓库:workflow_ui
两者应配套使用:
workflow提供接口、模型、权限与运行时能力workflow_ui提供设计器、申请页、列表页、详情页与消息相关页面
该仓库当前主要用于插件发布与插件市场接入整理,后续可继续完善:
- 更完整的安装文档
- 宿主工程接入步骤
- 权限与菜单初始化示例
- 前后端联调说明