Partilhar via


Esquemas GDL

O analisador GDL permite que você crie e implemente um esquema controlado por dados. Quando um esquema é fornecido, o analisador executa valida o esquema e converte os dados.

Um esquema descreve a estrutura e o formato dos dados no arquivo de origem GDL associado. O esquema pode ser definido dentro do próprio arquivo de dados de origem GDL ou pode ser um arquivo separado que o arquivo de dados de origem GDL referencia. O esquema define as entradas de dados que podem aparecer em cada constructo e o número de vezes que cada atributo pode ser definido. Por exemplo, você pode definir um constructo para descrever uma pessoa. Talvez você queira que a construção inclua o nome da pessoa, data de nascimento, altura, peso, endereço residencial e algumas informações de emprego.

Os dados de GDL podem ser semelhantes ao exemplo de código a seguir.

*Person: person_ID
{
  *Name:
  *Birthdate:
  *Height:
  *Weight:
  *HomeAddress:
  *EmploymentInfo:
} 

Como *HomeAddress e *EmploymentInfo representam agrupamentos lógicos de informações, eles também podem ser definidos como constructos, como mostra o exemplo de código a seguir.

*HomeAddress:
{
  *StreetAddress:
  *Apt_Number:
  *City:
  *State:
  *Zip:
}

*EmploymentInfo:
{
  *Employer:
  *Address:
  *Position:
  *Salary:
  *StartDate:
}

Construções GDL, como as mostradas no exemplo anterior, não definem nenhuma regra de sintaxe para sua estrutura e conteúdo. Por exemplo, pode haver duas instâncias do constructo *Person, uma que especifica *Peso em quilogramas e a outra que especifica *Peso em libras. Essas várias instâncias podem causar inconsistências.

O esquema GDL fornece um método para especificar formalmente a estrutura e o conteúdo aos quais os dados de entrada devem estar em conformidade. O analisador validará os dados em relação a esse esquema e avisará se os dados ou a estrutura dos dados não estiverem em conformidade com o esquema. Você pode especificar se as entradas são necessárias ou opcionais (como Apt) ou se as entradas podem ser multiplicadas definidas. Por exemplo, *Apt_Number pode ser opcional e uma única pessoa pode manter dois trabalhos.

O esquema permite que a definição de entradas seja compartilhada e herdada. Por exemplo, a definição de esquema para *Address em *EmploymentInfo pode ser compartilhada por *HomeAddress. O esquema permite que novas definições sejam derivadas de definições existentes. Os dois constructos address não precisam ser idênticos porque podem ser variantes derivadas de uma definição herdada comum.

O esquema pode ser usado para especificar o formato de um determinado valor de atributo. Por exemplo, o esquema pode exigir que o valor de data seja especificado no formato MM-DD-AAAA. Você também pode fazer com que o analisador decompor expressões de valor complexas em seus componentes constituintes e exibi-las no instantâneo. Por exemplo, seu aplicativo cliente pode querer que a data seja decomposta em três campos separados, como mostra o exemplo de código a seguir.

*Date:
{
  *Month: Jan
  *Day: 1
  *Year: 2001
}

A capacidade do esquema de dar suporte à herança tem implicações adicionais. A herança naturalmente permite que você estenda o esquema mantendo a compatibilidade. Se houver um esquema derivado de outro esquema, um arquivo de dados em conformidade com o esquema derivado também estará em conformidade automaticamente com o esquema original. Essa herança permite que os fornecedores personalizem seu esquema (e, implicando seus arquivos de dados), mantendo a compatibilidade com um esquema de master (e todos os aplicativos que exigem conformidade com o esquema master). Na prática, o fornecedor só deve referenciar o arquivo que define o esquema master e criar novas definições que herdam das definições no esquema master. O fornecedor não precisa fazer uma cópia privada do esquema de master nem modificar o esquema de master de forma alguma. Essa situação garante que o fornecedor não precise executar nenhuma ação se o esquema de master for modificado posteriormente.

Como demonstra o exemplo anterior, a herança permite que você fatore padrões comuns e evite duplicação desnecessária de definições e a manutenção que o acompanha. Como resultado, os esquemas e os conjuntos de dados que eles representam podem ser bem pensados e logicamente estruturados.

Para obter mais informações sobre como usar esquemas baseados em herança, consulte Modelos de GDL.