動的なスキーマ
カテゴリの階層を定義し、ユーザーが 1 つ以上の属性を使用してレコードを記述できるようにします。
主な特長
- テーブルに新しい列を追加する代わりに、柔軟なスキーマでメタデータを整理および定義します。
- レコードごとに異なる属性を使用してデータを動的にキャプチャします。
- 動的カテゴリと動的属性の構造化フレームワークを定義します。
- 動的カテゴリと動的属性を一度定義し、動的名前空間を使用して複数のテーブルで再利用します。
動的スキーマ要素
動的スキーマは、次の要素で構成されます。
- 動的属性
- レコードを説明する名前と値のペア。動的属性は、正式に定義することも、動的属性ストアフィールドで一時的な属性としてオンザフライで作成することもできます。
- ダイナミックカテゴリ
- 動的属性を整理するためのコンテナ。動的カテゴリは、その親カテゴリから動的属性を継承できます。
- 動的属性ストア
- 1 つ以上の動的属性とその値を格納するためのフィールドタイプ。動的ストアフィールドを作成すると、動的名前空間が自動的に作成され、そのストアフィールドに関連付けられます。
ストア フィールドを作成した後、属性の値を定義せずに格納し始めるか、動的名前空間で属性定義を指定して追加機能を利用することができます。
- 動的名前空間
- 動的属性と動的カテゴリのスコープ対象コレクション。各動的属性ストアフィールドは、自動的に独自の動的名前空間を受け取ります。また、動的名前空間を共有する複数の動的属性ストアフィールドを構成することもできます。
実装オプション
動的スキーマの実装方法を柔軟に決定できます。
- 最初に正式な定義を作成しなくても、動的属性ストアフィールドに属性を直接追加できます。これらの属性は一時的なものと見なされ、スクリプトおよびクエリで文字列値を持つものとして扱われます。属性の定義を指定して、いつでもそのタイプを変更できます。属性のタイプを変更しても、格納されるデータには影響しませんが、システムがそのデータを操作する方法が変更されます。「属性を一時的に操作する」を参照してください。
- 動的な名前空間で属性を定義することで、追加のプラットフォームサポートと属性の再利用を利用できます。動的属性レコードを定義すると、そのタイプの指定、選択オプションの設定、動的カテゴリへの整理などを行うことができます。「動的スキーマの操作」を参照してください。
- 動的名前空間は個別に作成できます。動的属性と動的カテゴリをその名前空間に追加し、その名前空間を 1 つ以上の動的属性ストアフィールドに関連付けることができます。これにより、複数のストアフィールドで属性を再利用できます。「動的名前空間の作成」を参照してください。
ユースケース
- 製品の動的スキーマを定義して、大規模な百貨店で販売されている製品を説明する属性と値のペアをキャプチャします。属性とそのデータを動的属性ストアフィールドに格納します。
たとえば、テレビ、日焼け止め、枕、シャツなど、さまざまなタイプの商品のレコードを格納するカスタム商品テーブルがあるとします。商品の種類(画面タイプ、UPC、色、サイズなど)ごとに動的属性を作成できます。動的属性を動的カテゴリ (電化製品、健康と美容、家庭用品、衣料品など) に整理できます。ユーザーは製品テーブルにレコードを追加し、各製品レコードで異なる属性をキャプチャできます。
- 1 つ以上の一時属性をキャプチャし、値を文字列オブジェクトとして動的属性ストアフィールドに保存して、レコードを記述します。動的属性ストアフィールドをテーブルに追加し、 GlideRecord API を使用してフィールドに文字列データを入力することで、レコードの一時属性をキャプチャすることもできます。
- 条件ビルダーで動的スキーマ要素を使用してワークスペースリストをフィルタリングします。たとえば、製品オファリングの動的カテゴリと属性を定義し、それらを使用して受注管理ワークスペースの条件ビルダーを使用してトランザクションを検索できます。
API 一覧
動的スキーマには、JavaScript を使用してテーブル内の動的属性にアクセスして管理できるグローバル API も用意されています。次に、動的属性をサポートする API とメソッドを示します。
- GlideAggregate - Global
次の GlideAggregate メソッドは、動的属性の使用をサポートしています。
- addAggregate()
- addHaving()
- getDynamicAttributeValue()
- getDynamicAttributeDisplayValue()
- getValue()
- groupBy()
- orderBy()
- orderByAggregate()
- GlideDynamicAttributeStore - Global
- GlideElementDynamicAttributeStore - Global
- GlideDynamicNamespace - Global
- GlideRecord - Global
次の GlideRecord メソッドは動的属性をサポートしています。
- addQuery()
- getDisplayValue()
- getDynamicAttribute()
- getDynamicAttributeDisplayValue()
- getDynamicAttributeValue()
- getValue()
- orderBy()
- orderByDesc()
- setDisplayValue()
- setDynamicAttributeDisplayValue()
- setDynamicAttributeValue()
- setDynamicAttributeValues()
- setValue()