01-总纲16个模块的低代码平台长什么样browise 是一个跑了14年、经过3个生产级政务项目海南新农保、海南异地就医、海口海关内控验证的低代码平台最终形态是 Spring Boot 2.7 Vue3 16个Maven模块。这篇文章是整个系列的地图——每个模块是什么、依赖关系怎么排、一个请求怎么穿过它们。文章目录01-总纲16个模块的低代码平台长什么样一、项目背景三代演化二、16个模块的职责基础层无内部依赖核心层业务层装配与启动层三、模块依赖的关键设计data不依赖crypto四、一个请求穿过哪些模块五、规模盘点六、系列规划一、项目背景三代演化browise 不是从零设计出来的。它有一条清晰的演化链第一代2010前后 PowerBuilder C/S 应用 │ DataWindow 数据窗口思想在这里形成 ▼ 第二代 wiserise Java 自研 route.java 前端控制器 Activiti 5.13 │ 615个Java文件海口海关内控系统生产运行 │ commonSql.java 2135行的元数据SQL引擎 ▼ 第三代 browise Spring Boot 2.7 Vue3 16模块 667个单测100%通过Playwright E2E 79/79第三代的重写不是推倒重来——PROJECT.md 里有一张完整的 wiserise→browise 迁移映射表commonSql.java拆成了EaEngine SqlBuilderDataWindow.js变成了MetaGrid.vueRow.java的_t/_o语义在前端useRowSet.ts里原样复刻。二、16个模块的职责打开根目录pom.xmlmodules 段落定义了全部16个模块。按依赖层次从底到顶基础层无内部依赖模块文件数职责browise-common20Result统一响应、BrowiseException、政务工具集IdcardUtil/RMBUtil/PinyinUtil/DesensitizeUtilbrowise-crypto16国密SM2/SM3/SM4——接口BC/HSM双实现策略模式核心层模块文件数职责browise-metadata42EA元数据SQL引擎——五张表描述任意SQL8方言字段级SM4加密脱敏browise-data24数据协议——Row(_t/_o)/RowSet三缓冲/BaseEntity/MyBatisHelper业务层模块文件数职责browise-platform67认证(JWT双令牌)/用户/角色/菜单RBAC/文件(MinIO)/导出browise-workflow66Flowable 6.8集成——手动构建引擎、会签、委托、拦截器链browise-formbuilder20表单设计器后端——EA元数据管理(EaAdminController 39.1KB全项目最大)browise-report11POI模板引擎(指令解释器)/PDF水印browise-audit19三表审计——ZE01操作/ZE02行快照/ZE03字段diffbrowise-dict11字典缓存——ConcurrentHashMap.computeIfAbsentbrowise-notify11通知——SPI(META-INF/services)注册渠道browise-ops7在线SQL运维——DDL预览备份/影响行数熔断browise-cms63内容管理——文章/问卷/投票/评论发布走工作流browise-mail22邮件——IMAP收取/SMTP发送/多账号装配与启动层模块文件数职责browise-spring-boot-starter4条件装配——HSM优先/BC兜底/CryptoAspect AOPbrowise-demo11启动应用——MapperScan六包/WebSocket/BPMN自动部署加前端browise-vue/core 9文件 components 76文件 demo 53页。三、模块依赖的关键设计data不依赖cryptoBROWISE-GUIDE.md 里明确记录了一条依赖原则browise-data 不依赖 browise-crypto。为什么data模块的 BaseEntity 是业务实体的基类它的 save() 需要在写库前做字段加密。如果 data 直接依赖 crypto那么所有用 BaseEntity 的项目都被迫引入国密依赖——即使它根本不需要加密。解法是EntityLifecycleListener接口987Bbrowise-data 定义接口: interface EntityLifecycleListener { beforeSave(entity) afterQuery(entity) } browise-spring-boot-starter 桥接: CryptoEntityLifecycleListener implements EntityLifecycleListener { // 内部调 CryptoHelper 的签名加密 }starter 负责把 crypto 的能力注入到 data 的生命周期里——两个模块互相看不见靠一个接口契约协作。这是依赖倒置在模块划分上的应用。四、一个请求穿过哪些模块浏览器 │ POST /ea/page/SYS_USER_s ▼ JwtAuthFilter (platform模块) │ 验token → 黑名单 → CurrentUser.set → 菜单鉴权 ▼ EaController (formbuilder模块) │ /ea/page/{sqlId} 接收请求 ▼ EaEngine (metadata模块) │ ①EaMetadataCache查EA01-05元数据 │ ②SqlBuilder按方言拼SQL │ ③EaConnectionProvider拿连接执行 │ ④postProcess: 字段解密脱敏 │ ⑤SlowSqlMonitor计时 ▼ Oracle (ojdbc8) │ ▼ Result { code, msg, data } (common模块) │ ▼ 前端 useRowSet (browise-vue) │ rows灌入primary缓冲_t全为0 ▼ MetaGrid渲染一次分页查询穿过 4 个后端模块 2 个前端核心文件。后续每一篇都在拆解这条链上的某一段。五、规模盘点分类数量后端Java~290文件 / ~18,000行前端VueTS~100文件 / ~12,000行测试代码~70文件 / ~7,600行667单测Playwright三套E2E建表脚本13个doc/目录667个单测100%通过含15个Oracle集成测试真实连库验证EA01≥74条元数据、审计三表写入。六、系列规划这个系列59篇按数据流顺序拆部主题篇数一全景与设计哲学4二EA元数据引擎12三数据协议8四认证与安全10五工作流9六前端组件库9七周边模块4八工程实践3每篇绑定真实源码路径代码占比不低于40%。✅ 亮点以模块依赖图请求全链路两张地图组织16个模块的介绍点出data不依赖crypto靠starter桥接这条最关键的架构决策。适合想了解多模块低代码平台怎么分层的技术负责人。扩展方向第02篇拆DataWindow设计哲学、第04篇展开请求全链路每一跳。