LƯỚI
Một GRID (Global Resource ID) là một định danh ổn định, duy nhất trên phạm vi toàn cầu cho bất kỳ thực thể nào trên nền tảng Altium – dự án, linh kiện, BOM, tác vụ, v.v.
Tại sao cần có GRID
Các thực thể trên nền tảng thường mang các định danh cục bộ (GUID, ID số) chỉ là duy nhất trong chính ngữ cảnh của chúng. GUID của một dự án không phải là duy nhất trên phạm vi toàn cầu – hai dự án ở các Workspace khác nhau có thể dùng cùng một GUID. ID của một part nguồn cung không có ý nghĩa bên ngoài hệ thống cung ứng. Điều này khiến việc tham chiếu một thực thể một cách rõ ràng giữa các dịch vụ, sự kiện và tích hợp trở nên bất khả thi.
GRID giải quyết vấn đề này bằng cách mã hóa trực tiếp ngữ cảnh cần thiết vào trong định danh: area, tenant, bounded context, loại thực thể và ID cục bộ đều là một phần của GRID. Chỉ cần có GRID, nền tảng có thể xác định vị trí thực thể mà không cần thêm bất kỳ ngữ cảnh nào khác.
Định dạng
GRID là các URI sử dụng grid làm scheme.
grid:area:[tenant-id]:context:resource-type/resource-id
GRID có phân biệt chữ hoa chữ thường và có hai phần chính:
-
Context path –
area:[tenant-id]:context– cấu trúc cố định dùng:làm ký tự phân tách -
Resource path –
resource-type/resource-id– được xác định bởi bounded context, dùng/làm ký tự phân tách
Đường dẫn tài nguyên hỗ trợ tài nguyên con: resource-type/id/sub-type/sub-id.
Thành phần
Thành phần |
Bắt buộc |
Mô tả |
|
Có |
Miền nền tảng rộng – |
|
Không |
ID của tenant (GUID của Workspace đối với tài nguyên Workspace). Bỏ qua đối với các tài nguyên không thuộc sở hữu của một tenant cụ thể |
|
Có |
Bounded context – |
|
Có |
Tên thực thể dễ đọc theo từ vựng của miền |
|
Có |
Định danh cục bộ của thực thể |
Tên area được căn chỉnh theo các area phạm vi OAuth và được cố ý giữ trung lập với sản phẩm và thương hiệu – không có tên sản phẩm nào xuất hiện trong định dạng GRID. Điều này giúp GRID ổn định ngay cả khi đổi thương hiệu sản phẩm hoặc thay đổi công ty.
Đối với tài nguyên toàn cục (tổ chức, người dùng, ứng dụng), thành phần tenant sẽ không có – lưu ý dấu hai chấm kép (::) trong các ví dụ bên dưới.
Ví dụ
Global resources (không có tenant):
grid:global::platform:organization/837af973-180e-45ab-a93a-62a66f44d75a
grid:global::platform:user/837af973-180e-45ab-a93a-62a66f44d75a
grid:global::events:subscription/41428e10-d66a-4b27-8bbf-3a51496cceae
Workspace resources (GUID Workspace làm tenant):
grid:workspace:d2e3a7b0-4eb4-4339-a3d6-20276ca4f7eb:design:project/DA051CB4-13C4-41A7-A795-2A5EBC2B9A9B
grid:workspace:d2e3a7b0-4eb4-4339-a3d6-20276ca4f7eb:library:component/0F629FA7-A5C5-4034-829A-83CC5E95B947
grid:workspace:d2e3a7b0-4eb4-4339-a3d6-20276ca4f7eb:procurement:bom/BD74926A-7AFA-454E-8879-C79E8C8685EE
grid:workspace:d2e3a7b0-4eb4-4339-a3d6-20276ca4f7eb:collaboration:task/BCC891F1-49C3-46B2-9A03-85F882133050
Supply resources (không có tenant – part không thuộc sở hữu của Workspace):
grid:supply::platform:part/43736907
Common Data Model (CDM) là tham chiếu chính thức cho các GRID được định nghĩa trên các thực thể của nền tảng. Tài liệu này mô tả bounded contexts, các loại thực thể và cấu trúc GRID của chúng.
GRID trong API
GRID xuất hiện trong API Altium 365 dưới dạng các trường id: ID! trên thực thể. API tuân theo quy ước Global Object Identification của GraphQL – với một GRID, nền tảng có thể truy xuất lại trực tiếp thực thể bằng truy vấn node:
query {
node(id: "grid:workspace:d2e3a7b0-4eb4-4339-a3d6-20276ca4f7eb:design:adproject/a7ceb47c-db37-426a-a9ef-117d1146be35") {
... on DesProject {
name
description
}
}
}
API gateway sử dụng cấu trúc GRID để định tuyến truy vấn đến subgraph chính xác – không cần thêm ngữ cảnh nào từ phía bên gọi.
GRID đang dần được áp dụng trên các thực thể API. Hiện tại, một số thực thể vẫn trả về các node ID opaque được mã hóa base64 – một định dạng cũ từ framework GraphQL bên dưới. Khi việc áp dụng GRID được mở rộng, các định danh này sẽ được thay thế bằng GRID có cấu trúc.