GRIGLIA
Un GRID (Global Resource ID) è un identificatore globalmente univoco e stabile per qualsiasi entità sulla piattaforma Altium: un progetto, un componente, una BOM, un'attività e così via.
Perché esistono i GRID
Le entità della piattaforma in genere dispongono di identificatori locali (GUID, ID numerici) che sono univoci solo nel proprio contesto. Un GUID di progetto non è globalmente univoco: due progetti in Workspace diversi possono condividere lo stesso GUID. Un ID di parte di fornitura non ha alcun significato al di fuori del sistema di fornitura. Questo rende impossibile fare riferimento a un'entità in modo non ambiguo tra servizi, eventi e integrazioni.
I GRID risolvono questo problema codificando direttamente nell'identificatore il contesto necessario: l'area, il tenant, il bounded context, il tipo di entità e l'ID locale fanno tutti parte del GRID. Avendo a disposizione solo il GRID, la piattaforma può individuare l'entità senza alcun contesto aggiuntivo.
Formato
I GRID sono URI che utilizzano grid come schema.
grid:area:[tenant-id]:context:resource-type/resource-id
I GRID sono case-sensitive e hanno due parti principali:
-
Context path –
area:[tenant-id]:context– struttura fissa che utilizza:come separatore -
Resource path –
resource-type/resource-id– definito dal bounded context, utilizzando/come separatore
Il percorso della risorsa supporta sotto-risorse: resource-type/id/sub-type/sub-id.
Componenti
Componente |
Obbligatorio |
Descrizione |
|
Sì |
Dominio generale della piattaforma – |
|
No |
ID del tenant (GUID del Workspace per le risorse del Workspace). Ometto per le risorse che non appartengono a un tenant specifico |
|
Sì |
Bounded context – |
|
Sì |
Nome dell'entità leggibile dall'uomo dal vocabolario del dominio |
|
Sì |
Identificatore locale dell'entità |
I nomi delle aree sono allineati con le aree di scope OAuth e sono intenzionalmente agnostici rispetto a prodotto e brand – nel formato GRID non compaiono nomi di prodotti. Questo rende i GRID stabili rispetto a rinominazioni di prodotto e cambiamenti aziendali.
Per le risorse globali (organizzazioni, utenti, applicazioni), il componente tenant è assente: si noti il doppio due punti (::) negli esempi seguenti.
Esempi
Global resources (senza 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 del Workspace come 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 (senza tenant – le parti non appartengono al Workspace):
grid:supply::platform:part/43736907
Il Common Data Model (CDM) è il riferimento autorevole per i GRID definiti tra le entità della piattaforma. Documenta i bounded context, i tipi di entità e la loro struttura GRID.
I GRID nell'API
I GRID compaiono nell'API di Altium 365 come campi id: ID! sulle entità. L'API segue la convenzione GraphQL di Global Object Identification: dato un GRID, la piattaforma può recuperare direttamente l'entità usando la query node:
query {
node(id: "grid:workspace:d2e3a7b0-4eb4-4339-a3d6-20276ca4f7eb:design:adproject/a7ceb47c-db37-426a-a9ef-117d1146be35") {
... on DesProject {
name
description
}
}
}
Il gateway API utilizza la struttura del GRID per instradare la query al sottografo corretto: non è necessario alcun contesto aggiuntivo da parte del chiamante.
I GRID vengono adottati progressivamente nelle entità dell'API. Alcune entità attualmente restituiscono node ID opachi codificati in base64, un formato legacy del framework GraphQL sottostante. Con l'espansione dell'adozione dei GRID, questi verranno sostituiti da GRID strutturati.