ObjectOS
構建

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供應商、採購訂單、三方匹配
ComplianceSOC 2 / ISO 27001 控制項 + 證據收集
HelpdeskAI 優先的客戶支援工單系統
Content編輯日曆 + 渠道 ROI
HR通訊錄、組織架構圖、休假
Project專案 / 任務 / 里程碑跟蹤

原始碼位於 github.com/objectstack-ai/templates——可以克隆其中任意一個作為自定義應用的起點。

安裝流程

  1. 開啟 Console——http://localhost:3000/_console/
  2. 登入——如果尚不存在賬戶,請在 /_account/register 註冊一個
  3. 進入 marketplace 標籤頁
  4. 選擇一個應用,點選 Install
  5. 重新載入 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 應用。商業 / 付費分發已列入路線圖。

On this page