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 ​