Skip to content

机制 ​

这一章讲平台里的机制:它们不是"用平台"要知道的事,而是"要改这些代码就必须懂"的事。 每一页都对应 wujies-platform/wujies-modules/wujies-app-market/ 里的一块实际实现。

顺序建议:先读 应用市场模块 拿到模块的全貌, 再按你要动的那块跳过去。改代码前先扫 wujies-platform/AGENTS.md 的不变量, 这一章解释的是"为什么是这样"。

七个页面各自解决什么问题 ​

页面它解决什么问题什么时候必须读
插件运行时插件怎么被装进来:每插件独立的类加载器、子 Spring 上下文、独立的 PluginHandlerMapping 路由注册、Mapper XML 的运行期注册、卸载时怎么把类加载器与路由干净摘掉要动类加载器 / 组件扫描 / 路由注册 / MyBatis 映射注册;或遇到"装了插件接口裸奔""卸载后接口还能用""每装一次泄漏一个类加载器"
应用市场模块wujies-app-market 里每个包的职责与关键类:目录访问、安装编排、上架端、包安全、任务记录各自在哪第一次进这个模块;或要判断"这段逻辑该写在哪个包"
目录中心化与版本形态目录数据(app_info / app_version / app_category)怎么集中到一处被多方读取;同一份代码怎么扮演"官方版 / 用户版"两个角色要碰 IAppCatalogService / 目录读取;要动 catalog.mode、edition、上架端闸门;或排查"用户版还能进上架端""远程模式下市场页是空的"
应用生命周期部署 / 安装 / 升级 / 停用 / 启用 / 卸载(保留数据) / 彻底删除各自做了什么、按什么顺序做要改安装或卸载流程;要动迁移执行时机、落位与加载的先后;或排查"卸载后表还在""重装后表建不回来"
菜单归属与保护应用声明的菜单在 sys_menu 里怎么被认出归属、哪些字段禁止改、为什么删不掉要动菜单同步 / 菜单保护 / 卸载清菜单;或排查"装完没有按钮""彻底删除后按钮变孤儿""重装后菜单没了"
前端远程应用宿主在构建期不知道租户装了哪些应用,所以菜单里的 remote:<code>/<视图键> 怎么在运行期变成真页面要动前端运行时、远程产物契约、视图键解析;或排查"菜单点开是远程视图不可用""升级了页面还是旧的"
包安全与签名应用包为什么必须签名、产物白名单管什么、三种校验模式怎么选、在哪里校验要动打包器 / 上传与部署校验;要切 app-market.security.mode;或排查"上传或部署被安全检查拒绝"

要改 X,先读哪些 ​

你打算动的代码先读
app-market/plugin/**(类加载器、HandlerMapping、运行时管理器)插件运行时,读完再改一行
app-market/catalog/**、RemoteAppCatalogService目录中心化与版本形态
app-market/edition/**、MarketEditionGuardFilter目录中心化与版本形态
app-market/service/impl/AppInstallServiceImpl、AppPackageDeployService应用生命周期
app-market/service/**AppPurgeService**、AppMigrationService应用生命周期 + 数据模型
AppMenuPlanner / AppMenuSyncServiceImpl / AppPurgeService 的菜单部分菜单归属与保护
app-market/security/**、package.ps1 的签名流程包安全与签名
plus-ui 的远程应用装载与视图键解析前端远程应用
表结构 / 新增平台表数据模型

相关阅读 ​

我们坚信,即使再复杂的技术,也可以用清晰、干练、易懂的文字描述清楚。如果你在阅读时有难以理解的章节,那一定是我们还没有优化好它 —— 欢迎反馈。