Esquema dinâmico
Defina uma hierarquia de categorias e permita que os usuários descrevam um registro usando um ou mais atributos.
Principais benefícios
- Organize e defina metadados em um esquema flexível em vez de adicionar novas colunas a uma tabela.
- Capture dados dinamicamente usando diferentes atributos por registro.
- Defina uma estrutura estruturada de categorias dinâmicas e atributos dinâmicos.
- Defina categorias dinâmicas e atributos dinâmicos uma vez e reutilize-os em várias tabelas usando namespaces dinâmicos.
Elementos de esquema dinâmico
O esquema dinâmico é composto pelos seguintes elementos.
- Atributos dinâmicos
- Pares nome-valor que descrevem um registro. Você pode definir formalmente atributos dinâmicos ou criá-los dinamicamente como atributos transitórios em um campo de armazenamento de atributos dinâmicos.
- Categorias dinâmicas
- Contêineres para organizar atributos dinâmicos. Uma categoria dinâmica pode herdar atributos dinâmicos de sua categoria primária.
- Armazenamento dinâmico de atributos
- Um tipo de campo para armazenar um ou mais atributos dinâmicos e seus valores. Quando você cria um campo de armazenamento dinâmico, um namespace dinâmico é criado e associado automaticamente a esse campo de armazenamento.
Depois de criar um campo de armazenamento, você pode começar a armazenar valores para atributos sem defini-los ou especificar definições de atributo no namespace dinâmico para aproveitar a funcionalidade adicional.
- Namespace dinâmico
- Uma coleção com escopo de atributos dinâmicos e categorias dinâmicas. Cada campo de armazenamento de atributos dinâmicos recebe automaticamente seu próprio namespace dinâmico ou você pode configurar vários campos de armazenamento de atributos dinâmicos que compartilham um namespace dinâmico.
Opções de implementação
Você tem flexibilidade ao decidir como implementar o esquema dinâmico.
- Você pode adicionar atributos diretamente a um campo de armazenamento de atributos dinâmicos sem criar definições formais primeiro. Esses atributos são considerados transitórios e são tratados como tendo valores de cadeia de caracteres em scripts e consultas. Você pode fornecer uma definição para o atributo e modificar seu tipo a qualquer momento. Modificar o tipo de um atributo não afeta os dados armazenados, mas muda a forma como o sistema interage com esses dados. Consulte Trabalhar com atributos transientemente.
- Você pode aproveitar o suporte adicional à plataforma e reutilizar atributos definindo-os em um namespace dinâmico. A definição de um registro de atributo dinâmico permite especificar seu tipo, definir opções de escolha, organizá-lo em categorias dinâmicas e muito mais. Consulte Trabalhar com Esquema dinâmico.
- Você pode criar um namespace dinâmico independentemente. Você pode adicionar atributos dinâmicos e categorias dinâmicas a esse namespace e, em seguida, associar esse namespace a um ou mais campos de armazenamento de atributos dinâmicos. Isso permite que você reutilize atributos em vários campos de armazenamento. Consulte Crie um namespace dinâmico.
Casos de uso
- Capture pares atributo-valor que descrevem produtos vendidos em uma grande loja de departamentos definindo um esquema dinâmico para seus produtos. Armazene os atributos e seus dados em um campo de armazenamento de atributos dinâmicos.
Por exemplo, suponha que você tenha uma tabela de produtos personalizada que armazena registros de diferentes tipos de produtos, como televisores, protetores solares, travesseiros e camisas. Você pode criar atributos dinâmicos para cada tipo de produto (como tipo de tela, UPC, cor ou tamanho). Você pode organizar os atributos dinâmicos em categorias dinâmicas (como Eletrônicos, Saúde e beleza, Bens domésticos e Roupas). Os usuários podem adicionar registros à tabela Produtos e capturar atributos diferentes em cada registro de produto.
- Descreva um registro capturando um ou mais atributos transientes, com valores armazenados como objetos de cadeia de caracteres em um campo de armazenamento de atributos dinâmicos. Você também pode capturar atributos transientes em um registro adicionando um campo de armazenamento de atributo dinâmico a uma tabela e preenchendo o campo com dados de cadeia de caracteres usando GlideRecord API.
APIs
- DynamicSchemaAPI - Global
- GlideAggregate - Global
Somente o seguinte GlideAggregate os métodos são compatíveis com o uso de atributos dinâmicos:
- 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
Somente o seguinte GlideRecord os métodos são compatíveis com atributos dinâmicos:
- 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) ValorDeAtributoDynamic(cadeia de caracteres 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)