동적 스키마
범주의 계층 구조를 정의하고 사용자가 하나 이상의 속성을 사용하여 기록을 설명할 수 있도록 합니다.
주요 이점
- 테이블에 새 열을 추가하는 대신 유연한 스키마로 메타데이터를 구성하고 정의합니다.
- 기록당 다양한 속성을 사용하여 데이터를 동적으로 캡처합니다.
- 동적 범주와 동적 특성의 구조적 프레임워크를 정의합니다.
- 동적 범주와 동적 속성을 한 번 정의하고 동적 네임스페이스를 사용하여 여러 테이블에서 다시 사용합니다.
동적 스키마 요소
동적 스키마는 다음 요소로 구성됩니다.
- 동적 속성
- 기록을 설명하는 이름-값 쌍입니다. 동적 속성을 공식적으로 정의하거나 동적 속성 저장소 필드에서 임시 속성으로 즉석에서 생성할 수 있습니다.
- 동적 범주
- 동적 속성을 구성하기 위한 컨테이너입니다. 동적 범주는 상위 범주에서 동적 속성을 상속할 수 있습니다.
- 동적 속성 저장소
- 하나 이상의 동적 속성과 해당 값을 저장하기 위한 필드 유형입니다. 동적 스토어 필드를 만들면 동적 네임스페이스가 자동으로 생성되어 해당 스토어 필드와 연결됩니다.
저장소 필드를 만든 후에는 값을 정의하지 않고 속성 값 저장을 시작하거나 동적 네임스페이스에서 속성 정의를 지정하여 추가 기능을 활용할 수 있습니다.
- 동적 네임스페이스
- 동적 속성 및 동적 범주의 범위가 지정된 컬렉션입니다. 각 동적 속성 저장소 필드는 자동으로 고유한 동적 네임스페이스를 받거나 동적 네임스페이스를 공유하는 여러 동적 속성 저장소 필드를 구성할 수 있습니다.
구현 옵션
동적 스키마를 구현하는 방법을 유연하게 결정할 수 있습니다.
- 형식 정의를 먼저 생성하지 않고도 동적 속성 저장소 필드에 직접 속성을 추가할 수 있습니다. 이러한 속성은 일시적인 것으로 간주되며 스크립트 및 쿼리에서 문자열 값이 있는 것으로 처리됩니다. 언제든지 속성에 대한 정의를 제공하고 해당 유형을 수정할 수 있습니다. 속성 유형을 수정해도 저장된 데이터에는 영향을 주지 않지만 시스템이 해당 데이터와 상호작용하는 방식이 변경됩니다. 임시로 속성 작업 문서를 참조하십시오.
- 동적 네임스페이스에서 속성을 정의하여 추가 플랫폼 지원 및 재사용을 활용할 수 있습니다. 동적 속성 기록을 정의하면 해당 유형을 지정하고, 선택 옵션을 설정하고, 동적 범주로 구성하는 등의 작업을 수행할 수 있습니다. 동적 스키마 작업 문서를 참조하십시오.
- 동적 네임스페이스를 독립적으로 생성할 수 있습니다. 해당 네임스페이스에 동적 속성과 동적 범주를 추가한 다음 해당 네임스페이스를 하나 이상의 동적 속성 저장소 필드와 연결할 수 있습니다. 이렇게 하면 여러 스토어 필드에서 속성을 재사용할 수 있습니다. 동적 네임스페이스 만들기 문서를 참조하십시오.
사용 사례
- 제품에 대한 동적 스키마를 정의하여 대형 백화점에서 판매되는 제품을 설명하는 속성-값 쌍을 캡처합니다. 속성과 해당 데이터를 동적 속성 저장소 필드에 저장합니다.
예를 들어 TV, 자외선 차단제, 베개, 셔츠 등 다양한 유형의 제품에 대한 레코드를 저장하는 사용자 지정 제품 테이블이 있다고 가정해 보겠습니다. 각 제품 유형(예: 화면 유형, UPC, 색상 또는 크기)에 대한 동적 속성을 만들 수 있습니다. 동적 속성을 동적 범주(예: 전자, 건강 및 미용, 가정용품, 의류)로 구성할 수 있습니다. 사용자는 제품 테이블에 기록을 추가하고 각 제품 기록에서 다양한 속성을 캡처할 수 있습니다.
- 하나 이상의 임시 속성을 캡처하고 동적 속성 저장소 필드에 문자열 객체로 저장된 값을 사용하여 기록을 설명합니다. 동적 속성 스토어 필드를 테이블에 추가하고 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 attrPath)
- GlideAggregate - getDynamicAttributeDisplayValue(String fullPath)
- GlideAggregate - getDynamicAttributeDisplayValue(String dynamicAttributeField, String attrPath)
- 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 attrPath)
- GlideRecord - getDynamicAttributeDisplayValue(String fullPath)
- GlideRecord - getDynamicAttributeDisplayValue(String dynamicAttributeField, String attrPath)
- GlideRecord - getDynamicAttributeValue(String fullPath)getDynamicAttributeValue(문자열, fullPath)
- GlideRecord - getDynamicAttributeValue(String dynamicAttributeField, String attrPath)
- 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 attrPath, Object value)
- GlideRecord - setDynamicAttributeValue(String fullPath, Object value)
- GlideRecord - setDynamicAttributeValue(String dynamicAttributeField, String attrPath, Object value)
- GlideRecord - setDynamicAttributeValues(String dynamicAttributeField, GlideDynamicAttributeStore values)
- GlideRecord - setValue(String name, Object value)