可視化規則編輯器。拖拽式流程圖、決策表編輯、模板實例化、執行追蹤與測試。所有 API 請求透過 Vite proxy 轉發到 ordo-platform。
Architecture
Ordo 整體架構
Studio 是可視化工作台,Platform 是控制面,ordo-server 是執行引擎。三層透過 NATS JetStream 做規則同步,PostgreSQL 保存全部控制面狀態。
系統層級概覽
基於 compose.yml 的真實部署拓撲
Client
UI
Studio
:3002 · Vue 3 · @xyflow
Flow EditorDecision TableTraceTemplates
Vite /api proxy
Control Plane
CP
ordo-platform
:3001 · Rust · Axum · SQLx
Org/RBACReleasesServer RegistryTemplates
BG
platform-worker
internal · Rust · Tokio
Release TasksRule SyncNotifications
Infra
PG
PostgreSQL
:5432 · ordo_platform DB
OrgsReleasesApprovalsSnapshots
MQ
NATS JetStream
:4222 · ordo.rules.*
RegistrationHeartbeatRule SyncEvents
/engine proxy · NATS rule sync
Engine
JIT
ordo-server
:8080 · Rust · Cranelift JIT · Axum + tonic
HTTPgRPCWASMCLI50-80ns JIT54k QPS
元件詳解
ST
Studio
:3002
Vue 3 · @xyflow/react · Vite
Flow 編輯器(xyflow)決策表編輯器執行 Trace 除錯模板市場版本歷史
OR
ordo-platform
:3001
Rust · Axum · SQLx · NATS
控制面。管理組織、專案、成員、RBAC、模板、Fact Catalog、契約、發布單與 Server 註冊表。透過 NATS 訂閱 Server 心跳,維護即時註冊表。
Org / Project / RBACFact Catalog & ContractsRelease CenterServer RegistryGitHub OAuth
PL
platform-worker
internal
Rust · Tokio · NATS
後台非同步工作程序。處理發布執行任務、規則同步排程、通知推送等耗時操作,與主程序共享資料庫但獨立運行。
發布任務執行規則同步排程實例狀態輪詢通知推送
OR
ordo-server
:8080
Rust · Axum · Cranelift JIT · gRPC
規則執行引擎。支援 HTTP / gRPC / WASM / CLI 四種接入方式。JIT 編譯(Cranelift)執行延遲 50-80 ns,解譯器 1.63 µs,HTTP 單線程 54k QPS。啟動後自動向 Platform 註冊並透過 NATS 持續發送心跳。
Cranelift JIT 編譯器HTTP + gRPC + WASM多租戶隔離WAL 崩潰恢復NATS 熱重載
NA
NATS JetStream
:4222
NATS 2.10 · JetStream
控制面訊息匯流排。承載 Server 註冊(ordo.rules.*)、心跳、規則內容同步事件。Platform 和 ordo-server 均訂閱此匯流排,實現解耦的節點發現與規則推送。
節點註冊與心跳規則內容同步控制事件廣播JetStream 持久化
PO
PostgreSQL
:5432
PostgreSQL 16 · SQLx migrations
控制面唯一持久化儲存(ordo_platform 資料庫)。保存組織、專案、角色、Fact、契約、發布單、審批記錄、Server 元資料與規則快照。
組織 / 專案 / 角色發布單與審批記錄Server 元資料規則版本快照自動遷移 (sqlx)
Flow
請求執行路徑
Studio → Platform → ordo-server 的完整請求鏈路
flowchart LR
classDef studio fill:#fdf3ea,stroke:#D4874D,color:#2D2A26
classDef platform fill:#f5f0eb,stroke:#7C6B5A,color:#2D2A26
classDef engine fill:#ecf5f1,stroke:#4A9E6B,color:#2D2A26
classDef infra fill:#f0ebe3,stroke:#9C9590,color:#2D2A26
Studio["Studio :3002\n(Vue 3 + xyflow)"]:::studio
Platform["ordo-platform :3001\n(Rust · Axum)"]:::platform
Worker["platform-worker\n(Rust · Tokio)"]:::platform
Server["ordo-server :8080\n(Rust · Cranelift JIT)"]:::engine
NATS[("NATS JetStream\n:4222")]:::infra
PG[("PostgreSQL\nordo_platform")]:::infra
Client(["Client\nHTTP / gRPC / WASM"]):::infra
Studio -->|"Vite /api proxy"| Platform
Platform -->|"/engine proxy"| Server
Server -->|"register + heartbeat"| Platform
Platform <-->|"ordo.rules.*\nrule sync / events"| NATS
Server <-->|"subscribe rule updates"| NATS
Platform --> PG
Worker --> PG
Worker <-->|"consume tasks"| NATS
Client -->|"execute rules"| Server
Release
發布與審批路徑
規則發布不是單次按鈕,而是一個完整的治理流程
sequenceDiagram
actor U as 使用者 (Studio)
participant P as ordo-platform
participant W as platform-worker
participant N as NATS JetStream
participant S as ordo-server
U->>P: 建立發布單 (POST /releases)
P->>P: 校驗規則版本 + 建立審批流
P-->>U: 待審批狀態
U->>P: 審批通過 (PATCH /releases/:id/approve)
P->>W: 入隊執行任務
W->>N: 發布規則同步事件 (ordo.rules.sync)
N->>S: 推送規則更新
S->>S: 熱載入新規則版本
S->>P: 回報實例狀態 + 心跳
P-->>U: 發布完成
掌控你的決策邏輯。
不要讓業務規則散落在程式碼庫和試算表裡。Ordo 讓團隊在同一個地方編寫、測試、治理它們。已在 GitHub 開源。