GRILLE
Un GRID (Global Resource ID) est un identifiant globalement unique et stable pour toute entité de la plateforme Altium : un projet, un composant, une BOM, une tâche, etc.
Pourquoi les GRID existent
Les entités de la plateforme possèdent généralement des identifiants locaux (GUID, identifiants numériques) qui ne sont uniques que dans leur propre contexte. Le GUID d’un projet n’est pas globalement unique : deux projets dans des Workspaces différents peuvent partager le même GUID. L’identifiant d’une pièce d’approvisionnement n’a aucune signification en dehors du système d’approvisionnement. Il devient donc impossible de référencer une entité de manière non ambiguë entre les services, les événements et les intégrations.
Les GRID résolvent ce problème en encodant directement dans l’identifiant le contexte nécessaire : la zone, le locataire, le contexte délimité, le type d’entité et l’identifiant local font tous partie du GRID. Avec le seul GRID, la plateforme peut localiser l’entité sans contexte supplémentaire.
Format
Les GRID sont des URI utilisant grid comme schéma.
grid:area:[tenant-id]:context:resource-type/resource-id
Les GRID sont sensibles à la casse et comportent deux parties principales :
-
Context path –
area:[tenant-id]:context– structure fixe utilisant:comme séparateur -
Resource path –
resource-type/resource-id– défini par le contexte délimité, utilisant/comme séparateur
Le chemin de ressource prend en charge les sous-ressources : resource-type/id/sub-type/sub-id.
Composants
Composant |
Obligatoire |
Description |
|
Oui |
Domaine large de la plateforme – |
|
Non |
ID du locataire (GUID du Workspace pour les ressources du Workspace). Omis pour les ressources n’appartenant pas à un locataire spécifique |
|
Oui |
Contexte délimité – |
|
Oui |
Nom d’entité lisible par l’humain issu du vocabulaire du domaine |
|
Oui |
Identifiant local de l’entité |
Les noms de zone sont alignés sur les zones de portée OAuth et sont volontairement indépendants des produits et des marques – aucun nom de produit n’apparaît dans le format GRID. Cela rend les GRID stables malgré les changements de marque des produits et de l’entreprise.
Pour les ressources globales (organisations, utilisateurs, applications), le composant locataire est absent – notez le double deux-points (::) dans les exemples ci-dessous.
Exemples
Global resources (sans locataire) :
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 du Workspace comme locataire) :
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 (sans locataire – les pièces n’appartiennent pas au Workspace) :
grid:supply::platform:part/43736907
Le Common Data Model (CDM) constitue la référence faisant autorité pour les GRID définis à travers les entités de la plateforme. Il documente les contextes délimités, les types d’entités et leur structure GRID.
Les GRID dans l’API
Les GRID apparaissent dans l’API Altium 365 sous forme de champs id: ID! sur les entités. L’API suit la convention GraphQL de Global Object Identification : avec un GRID, la plateforme peut récupérer directement l’entité via la requête node :
query {
node(id: "grid:workspace:d2e3a7b0-4eb4-4339-a3d6-20276ca4f7eb:design:adproject/a7ceb47c-db37-426a-a9ef-117d1146be35") {
... on DesProject {
name
description
}
}
}
La passerelle API utilise la structure du GRID pour acheminer la requête vers le sous-graphe correct – aucun contexte supplémentaire n’est nécessaire de la part de l’appelant.
Les GRID sont adoptés progressivement dans les entités de l’API. Certaines entités renvoient actuellement des ID de nœud opaques encodés en base64 – un format hérité du framework GraphQL sous-jacent. À mesure que l’adoption des GRID s’étend, ils seront remplacés par des GRID structurés.