01-总纲:16个模块的低代码平台长什么样

01-总纲:16个模块的低代码平台长什么样

browise 是一个跑了14年、经过3个生产级政务项目(海南新农保、海南异地就医、海口海关内控)验证的低代码平台,最终形态是 Spring Boot 2.7 + Vue3 + 16个Maven模块。这篇文章是整个系列的地图------每个模块是什么、依赖关系怎么排、一个请求怎么穿过它们。

文章目录


一、项目背景:三代演化

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 + SqlBuilder,DataWindow.js 变成了 MetaGrid.vue,Row.java 的 _t/_o 语义在前端 useRowSet.ts 里原样复刻。


二、16个模块的职责

打开根目录 pom.xml,modules 段落定义了全部16个模块。按依赖层次从底到顶:

基础层(无内部依赖)

模块 文件数 职责
browise-common 20 Result统一响应、BrowiseException、政务工具集(IdcardUtil/RMBUtil/PinyinUtil/DesensitizeUtil)
browise-crypto 16 国密SM2/SM3/SM4------接口+BC/HSM双实现策略模式

核心层

模块 文件数 职责
browise-metadata 42 EA元数据SQL引擎------五张表描述任意SQL,8方言,字段级SM4加密+脱敏
browise-data 24 数据协议------Row(_t/_o)/RowSet三缓冲/BaseEntity/MyBatisHelper

业务层

模块 文件数 职责
browise-platform 67 认证(JWT双令牌)/用户/角色/菜单RBAC/文件(MinIO)/导出
browise-workflow 66 Flowable 6.8集成------手动构建引擎、会签、委托、拦截器链
browise-formbuilder 20 表单设计器后端------EA元数据管理(EaAdminController 39.1KB全项目最大)
browise-report 11 POI模板引擎(指令解释器)/PDF水印
browise-audit 19 三表审计------ZE01操作/ZE02行快照/ZE03字段diff
browise-dict 11 字典缓存------ConcurrentHashMap.computeIfAbsent
browise-notify 11 通知------SPI(META-INF/services)注册渠道
browise-ops 7 在线SQL运维------DDL预览备份/影响行数熔断
browise-cms 63 内容管理------文章/问卷/投票/评论,发布走工作流
browise-mail 22 邮件------IMAP收取/SMTP发送/多账号

装配与启动层

模块 文件数 职责
browise-spring-boot-starter 4 条件装配------HSM优先/BC兜底/CryptoAspect AOP
browise-demo 11 启动应用------@MapperScan六包/WebSocket/BPMN自动部署

加前端 browise-vue/(core 9文件 + components 76文件 + demo 53页)。


三、模块依赖的关键设计:data不依赖crypto

BROWISE-GUIDE.md 里明确记录了一条依赖原则:browise-data 不依赖 browise-crypto。

为什么?data模块的 BaseEntity 是业务实体的基类,它的 save() 需要在写库前做字段加密。如果 data 直接依赖 crypto,那么所有用 BaseEntity 的项目都被迫引入国密依赖------即使它根本不需要加密。

解法是 EntityLifecycleListener 接口(987B):

复制代码
browise-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行
前端Vue+TS ~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篇展开请求全链路每一跳。

相关推荐
微三云生态系统架构师-彭丹13 小时前
消费返物业费系统商家让利归因引擎:多渠道核销与自动对账架构
架构·系统架构·智慧社区·消费返物业费系统·分账引擎·物业金·多渠道归因
涉密IT资质笔记13 小时前
涉密人员脱密期管理规范:期限分级模型、就业限制边界与违规认定标准
java·服务器·前端·网络·数据库
mmsx13 小时前
Android Dialog 插槽模式:用一套壳统一全应用的弹窗风格
android·java·dialog·开发语言
u01110267513 小时前
工具页案例图如何编写 alt让图片说明与处理场景对应
java·前端·javascript·图像处理·人工智能·算法·ai作画
码上有光13 小时前
Linux:进程间通信——匿名管道通信、命名管道通信
android·java·linux·linux通信·匿名通信·命名通信
落魄实习生13 小时前
Agent Scope Java 2.x 系列【11】AgentState 与状态存储
java·开发语言·ai
海宇服务13 小时前
零信任架构实战:基于海宇车辆出险记录核验构建自动化车险流转网关
运维·人工智能·架构·自动化
AI_Auto13 小时前
数字化转型实践方法⑦|DX阶段二:课题分级,分清改善、战略转型还是商业模式重构
人工智能·架构·制造
Ivanqhz13 小时前
干涉图着色
java·服务器·网络·数据库·人工智能·深度学习
找了一圈尾巴14 小时前
Agent 运行时架构发展
人工智能·架构