RASTER
Eine GRID (Global Resource ID) ist ein global eindeutiger, stabiler Bezeichner für jede Entität auf der Altium-Plattform – ein Projekt, eine Komponente, eine BOM, eine Aufgabe usw.
Warum es GRIDs gibt
Plattform-Entitäten besitzen typischerweise lokale Bezeichner (GUIDs, numerische IDs), die nur innerhalb ihres jeweiligen Kontexts eindeutig sind. Eine Projekt-GUID ist nicht global eindeutig – zwei Projekte in unterschiedlichen Workspaces können dieselbe GUID haben. Eine Supply-Part-ID hat außerhalb des Supply-Systems keine Bedeutung. Dadurch ist es unmöglich, eine Entität über Services, Ereignisse und Integrationen hinweg eindeutig zu referenzieren.
GRIDs lösen dieses Problem, indem sie den erforderlichen Kontext direkt im Bezeichner kodieren: Bereich, Tenant, Bounded Context, Entitätstyp und lokale ID sind alle Teil der GRID. Wenn nur die GRID gegeben ist, kann die Plattform die Entität ohne zusätzlichen Kontext lokalisieren.
Format
GRIDs sind URIs, die grid als Schema verwenden.
grid:area:[tenant-id]:context:resource-type/resource-id
GRIDs unterscheiden Groß- und Kleinschreibung und bestehen aus zwei Hauptteilen:
-
Context path –
area:[tenant-id]:context– feste Struktur mit:als Trennzeichen -
Resource path –
resource-type/resource-id– durch den Bounded Context definiert, mit/als Trennzeichen
Der Ressourcenpfad unterstützt Unterressourcen: resource-type/id/sub-type/sub-id.
Bestandteile
Bestandteil |
Erforderlich |
Beschreibung |
|
Ja |
Allgemeiner Plattformbereich – |
|
Nein |
ID des Tenants (Workspace-GUID für Workspace-Ressourcen). Entfällt bei Ressourcen, die keinem bestimmten Tenant gehören |
|
Ja |
Bounded Context – |
|
Ja |
Menschenlesbarer Entitätsname aus dem Domänenvokabular |
|
Ja |
Lokaler Bezeichner der Entität |
Bereichsnamen sind an OAuth-Scoped-Bereiche angelehnt und bewusst produkt- und markenagnostisch – im GRID-Format erscheinen keine Produktnamen. Dadurch bleiben GRIDs auch bei Produkt-Umbenennungen und Unternehmensänderungen stabil.
Bei globalen Ressourcen (Organisationen, Benutzer, Anwendungen) fehlt die Tenant-Komponente – beachten Sie den doppelten Doppelpunkt (::) in den folgenden Beispielen.
Beispiele
Global resources (ohne 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 (Workspace-GUID als 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 (ohne Tenant – Teile sind nicht Workspace-eigen):
grid:supply::platform:part/43736907
Das Common Data Model (CDM) ist die maßgebliche Referenz für GRIDs, die über Plattform-Entitäten hinweg definiert sind. Es dokumentiert die Bounded Contexts, Entitätstypen und deren GRID-Struktur.
GRIDs in der API
GRIDs erscheinen in der Altium 365 API als id: ID!-Felder auf Entitäten. Die API folgt der GraphQL-Konvention zur Global Object Identification – mit einer gegebenen GRID kann die Plattform die Entität direkt über die Abfrage node erneut abrufen:
query {
node(id: "grid:workspace:d2e3a7b0-4eb4-4339-a3d6-20276ca4f7eb:design:adproject/a7ceb47c-db37-426a-a9ef-117d1146be35") {
... on DesProject {
name
description
}
}
}
Das API-Gateway verwendet die GRID-Struktur, um die Abfrage an den richtigen Subgraphen weiterzuleiten – vom Aufrufer wird kein zusätzlicher Kontext benötigt.
GRIDs werden schrittweise für API-Entitäten eingeführt. Einige Entitäten geben derzeit undurchsichtige, Base64-kodierte Node-IDs zurück – ein Legacy-Format des zugrunde liegenden GraphQL-Frameworks. Mit der weiteren Verbreitung von GRIDs werden diese durch strukturierte GRIDs ersetzt.