動的なスキーマ
カテゴリ、グループ、および属性の階層を定義し、ユーザーがレコード上で属性のグループを選択できるようにします。
主なメリット
- テーブルに新しい列を追加する代わりに、柔軟なスキーマでメタデータを整理および定義します。
- 動的属性をグループ化するための構造化フレームワークを定義します。
- レコードごとに異なる属性を使用してデータを動的にキャプチャします。
動的スキーマワークフロー
- メタデータ戦略を計画します。
- 属性のグループを作成します。
- 各グループに動的属性を追加します。
- グループをカテゴリ別に整理します。
- 動的属性ストアフィールドをテーブルに追加します。
- GlideRecord setValue() メソッドを使用して動的属性ストアフィールドに入力します。
ユースケース
- 製品の動的スキーマを定義して、大規模な百貨店で販売されている製品を説明する属性とその値のペアをグループとしてキャプチャします。属性とそのデータを動的属性ストアフィールドに格納します。
たとえば、テレビ、日焼け止め、枕、シャツなど、さまざまなタイプの商品のレコードを格納するカスタム商品テーブルがあるとします。商品の種類 (画面タイプ、UPC、色、サイズなど) ごとに動的属性のグループを作成できます。グループを動的なカテゴリ (電化製品、健康と美容、家庭用品、衣料品など) に整理できます。ユーザーは製品テーブルにレコードを追加し、各製品レコードで異なる属性をキャプチャできます。
- 動的属性ストアフィールドで 1 つ以上の動的な属性とその値のペアを文字列オブジェクトとしてキャプチャして、レコードを記述します。動的属性ストアフィールドをテーブルに追加し、GlideRecord API を使用してフィールドに文字列データを入力することで、レコードの一時的な属性と値のペアをキャプチャすることもできます。
API
動的スキーマは、JavaScript を使用してテーブル内の動的属性にアクセスして管理できるようにするグローバル API も提供します。次に、動的属性をサポートする API とメソッドを示します。
- DynamicSchemaAPI - Global
- GlideAggregate - Global
次の GlideAggregate メソッドのみが動的属性の使用をサポートしています。
- GlideAggregate - addAggregate(String agg, String name)
- GlideAggregate - addHaving(String aggName, String fieldName, String operator, String value)
- GlideAggregate - getDynamicAttributeValue(String fullPath)
- GlideAggregate - getDynamicAttributeValue(String dynamicAttributeField, String groupAttrPath)
- GlideAggregate - getDynamicAttributeDisplayValue(String fullPath)
- GlideAggregate - getDynamicAttributeDisplayValue(String dynamicAttributeField, String groupAttrPath)
- GlideAggregate - getValue(String name)
- GlideAggregate - groupBy(String name)
- GlideAggregate - orderBy(String name)
- GlideAggregate - orderByAggregate(String agg, String fieldName)
- GlideDynamicAttributeStore - Global
- GlideElementDynamicAttributeStore - Global
- GlideRecord - Global
次の GlideRecord メソッドのみが動的属性をサポートしています。
- GlideRecord - addQuery(String name, Object operator, Object value)
- GlideRecord - getDisplayValue(String name)
- GlideRecord - getDynamicAttribute(String fullPath)
- GlideRecord - getDynamicAttribute(String dynamicAttributeField, String groupAttrPath)
- GlideRecord - getDynamicAttributeDisplayValue(String fullPath)
- GlideRecord - getDynamicAttributeDisplayValue(String dynamicAttributeField, String groupAttrPath)
- GlideRecord - getDynamicAttributeValue(String fullPath)getDynamicAttributeValue(String fullPath)
- GlideRecord - getDynamicAttributeValue(String dynamicAttributeField, String groupAttrPath)
- GlideRecord - getValue(String fieldName)
- GlideRecord - orderBy(String fieldName)
- GlideRecord - orderByDesc(String fieldName)
- GlideRecord - setDisplayValue(String name, Object value)
- GlideRecord - setDynamicAttributeDisplayValue(String fullPath, Object value)
- GlideRecord - setDynamicAttributeDisplayValue(String dynamicAttributeField, String groupAttrPath, Object value)
- GlideRecord - setDynamicAttributeValue(String fullPath, Object value)
- GlideRecord - setDynamicAttributeValue(String dynamicAttributeField, String groupAttrPath, Object value)
- GlideRecord - setDynamicAttributeValues(String dynamicAttributeField, GlideDynamicAttributeStore values)
- GlideRecord - setValue(String name, Object value)