百积木文档
开发指南Bundle 管理器开发

安装环境与 Bundle 管理器请求

使用完整 Bundle 安装身份区分来源与目标环境,并按授权路由引用访问解析。

本页使用公开 SDK 25.2.0、生命周期 15.0.0 和网关资源凭据 API 6.0.0。首次签发原文随 AFTER_RESOURCES 下发;已有凭据不再下发原文,丢失时显式申请新 token。各环境须完成对应服务和登记切换后使用,源码或文档发布不代表环境已经激活。

来源 Bundle 的固定关系选择管理器,执行地址和通信协议由其当前登记提供;作者清单不声明 pluginId。 生命周期通知与资源凭据请求携带同一个 installation,准确版本及选择方式见权威规范。

身份由谁提供

字段含义与来源普通业务后端如何处理
来源 Bundle 与 ResourceLocator发布环境和资源 Owner 提供的不可变来源用完整值校验业务实例归属,不按名称或目标环境改写
installation.environmentKey安装目标环境登记由 Runtime 交付,不能从域名或来源推导
applicationRuntimeId实际安装所在 Runtime与完整安装上下文一并传递,不自行选择默认 Runtime
workspaceId目标工作区访问边界不当作资源身份或用户授权
bundleInstallIdRuntime 分配的本次安装身份关联本次业务实例;重装的新身份不能自动接管旧实例
installedBy原安装人,由平台安装记录提供仅描述安装主体,不作为后续业务请求的最终用户

使用 Adapter 时,这些字段已经包含在经过认证的业务回调 context 中;开发者不负责拼装平台请求。 业务服务只处理自己需要的业务字段,并按完整归属执行。独立实现协议时也复用 SDK 类型,不复制身份 DTO。

安装身份

{
  "installation": {
    "environmentKey": "consumer",
    "applicationRuntimeId": "runtime-a",
    "workspaceId": 42,
    "bundleInstallId": "installation-a",
    "installedBy": 25,
    "bundle": {
      "environmentKey": "publisher",
      "bundleId": "sales"
    }
  }
}

installation.environmentKey 表示安装所在环境,installation.bundle.environmentKey 表示 Bundle 来源。 两者可以不同。installedBy 属于安装目标环境,表示原安装人,不表示 Bundle 发布者。 平台从安装记录提供此值;升级、配置及重试不改变它。 applicationRuntimeId、workspaceId、bundleInstallId 与来源 Bundle 共同定位安装; resources 或引用请求中的 resource 使用完整 ResourceLocator 定位获授权资源。 不得从资源来源、工作区、域名或 Runtime ID 推断安装环境,也不得只按业务实例 ID 接管其他安装的资源。

环境键是环境登记的规范字符串:2–64 个 ASCII 字符,首位为字母或数字,其余为字母、数字、下划线或连字符。 大小写保留,拒绝 URL、空白或自动补齐。完整请求见协议。

生命周期交付与本地使用

管理器接收平台提供的完整 installation、资源 Locator 与获准配置;首次签发原文随 AFTER_RESOURCES 交付。以后只在完整资源、Runtime、安装、pluginId 和 tokenId 均匹配时保留本地加密秘密。

丢失后通过资源凭据 API4显式补签。Manager 从管理凭据取得 pluginId,Backend 校验已认证管理器、当前来源关系、目标安装与本包资源归属;请求不能自行指定另一个管理器身份。环境字段只用于定位,不是授权。

业务调用和进程重启读取受保护的运行配置,不自动补签或换环境。引用更新按完整投影覆盖;旧值已撤销或归属变化时停止使用,不能以历史配置恢复权限。

外部实例归属

创建、查询、修改和解除关联均校验完整安装身份。重新安装产生的新 bundleInstallId 不自动取得旧安装的外部实例。 显式传入已有实例编号时也必须验证其归属。历史关联必须由业务所有者根据可证明的安装记录迁移,不能按地址猜测归属。 安装与业务配置迁移完成后,再验证停止、卸载、重装以及跨环境隔离。

本页内容