GRID
GRID(Global Resource ID)は、Altium プラットフォーム上のあらゆるエンティティ――プロジェクト、コンポーネント、BOM、タスクなど――を識別するための、グローバルに一意で安定した識別子です。
GRIDs が存在する理由
プラットフォーム上のエンティティには通常、ローカル識別子(GUID、数値 ID)が付与されていますが、それらはそれぞれのコンテキスト内でのみ一意です。プロジェクト GUID はグローバルには一意ではなく、異なる Workspace 内の 2 つのプロジェクトが同じ GUID を持つことがあります。サプライ部品 ID も、サプライシステムの外では意味を持ちません。そのため、サービス、イベント、統合をまたいでエンティティを曖昧さなく参照することはできません。
GRIDs は、必要なコンテキストを識別子自体に直接エンコードすることで、この問題を解決します。つまり、area、tenant、bounded context、entity type、local ID がすべて GRID の一部になります。GRID だけが与えられれば、プラットフォームは追加のコンテキストなしでそのエンティティを特定できます。
形式
GRIDs は、grid をスキームとして使用する URI です。
grid:area:[tenant-id]:context:resource-type/resource-id
GRIDs は大文字と小文字を区別し、主に 2 つの部分で構成されます。
-
Context path –
area:[tenant-id]:context–:を区切り文字として使用する固定構造 -
Resource path –
resource-type/resource-id– bounded context によって定義され、/を区切り文字として使用
リソースパスはサブリソースをサポートします: resource-type/id/sub-type/sub-id。
構成要素
コンポーネント |
必須 |
説明 |
|
はい |
プラットフォームの大まかなドメイン – |
|
いいえ |
tenant の ID(Workspace リソースの場合は Workspace GUID)。特定の tenant に属さないリソースでは省略されます |
|
はい |
bounded context – |
|
はい |
ドメイン語彙に基づく、人間が読みやすいエンティティ名 |
|
はい |
エンティティのローカル識別子 |
area 名は OAuth scope areas と整合しており、意図的に製品名やブランド名に依存しないようになっています。つまり、GRID の形式には製品名が含まれません。これにより、製品のリブランディングや会社変更があっても、GRIDs の安定性が保たれます。
グローバルリソース(組織、ユーザー、アプリケーション)の場合、tenant コンポーネントは存在しません。以下の例では二重コロン(::)に注目してください。
例
Global resources(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(tenant として Workspace GUID を使用):
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(tenant なし – 部品は Workspace 所有ではないため):
grid:supply::platform:part/43736907
Common Data Model (CDM) は、プラットフォームエンティティ全体で定義される GRIDs の正式な参照元です。bounded contexts、entity types、およびそれらの GRID 構造が文書化されています。
API における GRIDs
GRIDs は、Altium 365 API ではエンティティ上の id: ID! フィールドとして現れます。API は GraphQL の Global Object Identification 規約に従っており、GRID があれば、プラットフォームは node クエリを使ってそのエンティティを直接再取得できます。
query {
node(id: "grid:workspace:d2e3a7b0-4eb4-4339-a3d6-20276ca4f7eb:design:adproject/a7ceb47c-db37-426a-a9ef-117d1146be35") {
... on DesProject {
name
description
}
}
}
API ゲートウェイは GRID 構造を使用して、クエリを正しいサブグラフへルーティングします。呼び出し元から追加のコンテキストを渡す必要はありません。
GRIDs は現在、API エンティティ全体で段階的に採用が進められています。一部のエンティティは現時点では、不透明な base64 エンコード済みノード ID を返します。これは基盤となる GraphQL フレームワーク由来のレガシー形式です。GRID の採用が広がるにつれて、これらは構造化された GRIDs に置き換えられていきます。