Marketplace
无需编写代码,即可将现成应用安装到运行中的 ObjectOS。
ObjectOS marketplace 让你能够将预构建的应用安装到运行中的运行时——无需构建步骤、无需重启、无需检出源代码。这是在第一天就将真正的软件交付到用户面前的最快方式。
工作原理
marketplace 客户端是开源的 @objectstack/cloud-connection 包。云托管环境和自托管的 ObjectOS 镜像开箱即已接好;如果是你自己组装的技术栈,用几行配置即可启用:
import {
MarketplaceProxyPlugin,
MarketplaceInstallLocalPlugin,
RuntimeConfigPlugin,
resolveCloudUrl,
} from '@objectstack/cloud-connection';
const catalogUrl = resolveCloudUrl(); // OS_CLOUD_URL; 'off' disables
plugins: [
...(catalogUrl ? [
new MarketplaceProxyPlugin({ controlPlaneUrl: catalogUrl }),
new MarketplaceInstallLocalPlugin({ controlPlaneUrl: catalogUrl }),
] : []),
new RuntimeConfigPlugin({ controlPlaneUrl: '', singleEnvironment: true, installLocal: true }),
]浏览 / 安装的机制是开放的;目录服务(组织目录、审核、付费分发)由 OS_CLOUD_URL 所指向的控制平面提供。应用一经安装就存在于你运行时自己的内核中 —— 运行时的任何部分都不依赖目录保持可达。
当你打开 Console(/_console/)时,marketplace 标签页会查询已配置的应用目录,并展示可安装的应用。
You ─→ Console ─→ Marketplace tab ─→ pick app ─→ Install
↓
Artifact merged into kernel
↓
Console re-renders with new
objects / views / permissions
↓
Done — no restart目录
| 目录 | 来源 | 适用场景 |
|---|---|---|
| Default | 与运行时镜像预先打包 | 首次评估、演示、离线 |
| ObjectStack public catalog | 公共应用注册表 | 最新的社区应用与第一方应用 |
| Private catalog | 你自己发布的制品 | 不想公开的内部应用 |
| Local | 挂载到运行时中的文件 | 隔离网络环境、自定义构建 |
目录来源通过 marketplace 插件或环境变量配置;参见运行时配置。
默认目录中包含的内容
这些应用可以在 Console 中一键安装:
| 应用 | 提供的能力 |
|---|---|
| Todo | 通用任务与项目跟踪器 |
| Contracts | 带 AI 条款提取的合同生命周期管理(CLM) |
| Procurement | 供应商、采购订单、三方匹配 |
| Compliance | SOC 2 / ISO 27001 控制项 + 证据收集 |
| Helpdesk | AI 优先的客户支持工单系统 |
| Content | 编辑日历 + 渠道 ROI |
| HR | 通讯录、组织架构图、休假 |
| Project | 项目 / 任务 / 里程碑跟踪 |
源代码位于 github.com/objectstack-ai/templates——可以克隆其中任意一个作为自定义应用的起点。
安装流程
- 打开 Console——http://localhost:3000/_console/
- 登录——如果尚不存在账户,请在
/_account/register注册一个 - 进入 marketplace 标签页
- 选择一个应用,点击 Install
- 重新加载 Console——新应用的对象、视图和流程将会出现
在幕后,marketplace 会获取应用编译后的制品,将其合并到运行中的内核,并通过 ObjectQL 注册其对象。种子数据(如果应用定义了)会在首次安装时插入。
卸载
在 Console → Marketplace → 已安装的应用 → Uninstall。该应用的对象会从内核中移除,其数据表会被标记为待清理(默认情况下数据会被保留;你可以选择是否删除数据表)。
发布你自己的应用
任何通过 os init 构建的内容都可以成为一个 marketplace 应用。
os init my-app -t app --install
cd my-app
# ... write objects, views, etc. ...
os compile # → dist/objectstack.json
os package publish # publish to a catalog要发布到公共目录,你需要一个注册表账户(os login)。要发布到私有目录,请将 OS_PACKAGE_REGISTRY 指向你自己的注册表。
版本管理
每个已发布的应用都是不可变的。更新会产生一个新版本。运行时会按应用跟踪已安装的版本以及可用的更新。当某个应用在用户所跟踪的目录中发布了新版本时,用户会在 Console 中看到一个 "Update available" 徽标。
通过 CLI 安装
Console 是主要的安装入口,但同一个 install-local 端点也可以脚本化,用于 CI 和隔离网络环境下的运维:
# 目录模式 —— 运行时从其配置的目录解析包
os package install com.acme.crm --runtime http://localhost:3000 \
--email admin@example.com --password …
# 隔离网络模式 —— 内联发送编译好的制品,不经过目录往返
os package install ./dist/objectstack.json --runtime http://localhost:3000 \
--email admin@example.com --password …凭证是目标运行时上的账户(不是你的云端登录)—— 与 Console 安装使用同一套授权。
权限
安装应用需要 manage_marketplace 系统权限——默认情况下只有 Setup Administrator 权限集的成员拥有该权限。普通用户看到的 marketplace 是只读的。
隔离网络环境下的 marketplace
对于没有公网出口的部署环境,可在你的网络内运行一个本地目录服务器,并将 ObjectOS 指向它。拓扑结构请参见隔离网络。
marketplace 不是什么
- 不是代码分发渠道。 已发布的应用是编译后的制品——它们以声明式方式描述数据 + UI + 流程,不会分发任意 JavaScript。
- 不是沙箱。 已安装的应用对你数据库的访问权限与内核中的其他任何内容相同——在安装来自不可信来源的应用之前,请先审查制品。
- (暂时)不是支付平台。 公共目录中的应用都是免费的 Apache-2.0 应用。商业 / 付费分发已列入路线图。