Bỏ qua, đến nội dung

Kiến trúc

Tổng quan

plugin-client quản lý ba hệ thống con: DesktopRoutes tree (menu desktop/mobile), App resource (thông tin ứng dụng), và menu-role binding (ACL cho menu). Cả ba phối hợp tạo nên hệ thống điều hướng hoàn chỉnh cho giao diện người dùng.

DesktopRoutes Tree

Mô hình dữ liệu

Menu desktop được lưu dạng adjacency list — mỗi record có parentId trỏ về node cha. Cấu trúc này cho phép xây dựng cây menu đa cấp.

Đặc điểmChi tiết
PKSnowflake ID (bigInt)
Tham chiếu schemaschemaUid → uiSchemas, menuSchemaUid → uiSchemas
WidgettabSchemaName → uiWidgets
Phân cấpparentId + sort (scoped theo parentId)
FlagshideInMenu, enableTabs, enableHeader, displayTitle, hidden
Loạitype — phân biệt page, group, link, divider

Luồng xây dựng cây

createV2 / destroyV2 — cascade operations

Phiên bản v2 của create/destroy tích hợp sâu với UiWidgetRepository.ensureModel:

  • createV2: tạo desktopRoute, đồng thời tạo uiSchema và uiWidget tương ứng qua ensureModel. Gán menu cho tất cả role có allowNewMenu: true.
  • destroyV2: xóa desktopRoute kèm cascade xóa uiSchemas (qua schemaUid) và uiWidgets (qua tabSchemaName).

App Resource

App resource cung cấp thông tin hệ thống và điều khiển lifecycle:

ActionMô tảQuyền
getInfoVersion, locale, danh sách plugin đã cài, themePublic
getLangNgôn ngữ hiện tại + toàn bộ bản dịchPublic
clearCacheXóa toàn bộ cache server (schema, ACL, i18n)Admin
restartRestart ứng dụngAdmin
refreshRefresh app state mà không restartAdmin

ACL Snippets

Plugin đăng ký hai nhóm snippet:

SnippetCho phép
ui.desktopRoutesTruy cập menu desktop trên giao diện
pm.desktopRoutesQuản lý menu desktop trong Settings

Hooks

HookThời điểmHành vi
roles.beforeCreateTrước khi tạo role mớiChuẩn bị danh sách menu mặc định
desktopRoutes.afterCreateSau khi tạo menuGán menu cho role có allowNewMenu: true
desktopRoutes.afterDestroySau khi xóa menuXóa liên kết role-menu tương ứng

Luồng gán menu cho role