平台应用开发
开发由 Bundle 组合交付、受平台身份和能力范围约束的工作区应用入口。
平台应用是由 Bundle 安装到工作区中的可版本化应用入口。前端通过 ENVIRONMENT_HOSTED_APP 在目标环境托管,也可使用已有平台内置页面或不授权的普通外链。Bundle 安装或升级交付精确应用资源与来源凭据;用户打开实际入口后,通过授权码和 PKCE 取得短期应用身份。
核心对象
| 对象 | 作用 |
|---|---|
| Platform Project | 类型为 PLATFORM_APPLICATION 的独立项目,同时保存前端源码和 baijimu.platform-application.json |
| Platform Application | 应用的稳定身份、名称和所有者 |
| Version | 某次不可变快照,包含入口、能力、配置和清单 |
| Bundle Resource | Bundle Manifest 对精确平台应用版本的引用 |
| Workspace Install | Bundle 安装后物化的平台应用安装记录,使用稳定 installId 标识 |
| Runtime 应用资源 | Runtime Owner 保存的精确应用版本、启用配置与来源凭据;Bundle 安装账只承担审计与并发保护 |
appClientToken | 授权码兑换得到的短期应用访问 token |
标准生命周期
创建 Platform Application 及其专属项目
-> 在同一项目维护前端源码和平台应用配置
-> 按前端版本固定 Git 标签并构建
-> 创建不可变版本
-> 纳入 Bundle Manifest
-> 创建不可变 Bundle 版本
-> Bundle 安装到工作区
-> 用户打开入口
-> 平台校验工作区成员、当前应用及来源凭据
-> 通过 PKCE 签发安装隔离的短期应用身份
-> 调用声明范围内的能力
-> 创建资源新版本并升级 Bundle一个前端平台应用对应一个项目,不需要再创建第二个“React 静态应用项目”。普通网站仍使用普通前端项目;只有成为平台应用时才使用 PLATFORM_APPLICATION 项目类型。
环境托管前端使用支持 platform-app version create 的 baijimu CLI:用 project build create --version 发布前端,取得成功任务返回的 artifactId,再传入该制品 ID 与同一提交创建不可变平台应用版本(CLI 0.131.0 起)。
标准 SDK 使用同源环境配置;历史 TRUSTED_EXTERNAL_APP 不再支持平台启动和授权,必须迁移并升级 Bundle。
自动化工具应逐级读取目标子命令的 --help,不能依赖历史全量命令树或 methodDefinitionsJson/@file 发布内容。
开始开发前依次阅读:
平台应用与普通网站
普通网站只需要公开访问时,可以直接使用网站发布能力。只有需要安装到工作区、获得应用身份、声明平台能力或显示在工作区应用入口时,才应创建平台应用。
平台应用不能单独安装或单独授权
外部 Web 站点本身可以公开部署,但这不代表它已经获得某个工作区的平台能力。共享功能时应分享 Manager 的 Bundle 应用入口;接收者选择工作区后,平台会核验当前应用资源及来源凭据;资源未安装时先安装所属 Bundle。已有来源凭据缺失或已撤销时,按显式重新授权流程处理,普通升级不会自动恢复。