Esquemas GDL
El analizador de GDL permite crear e implementar un esquema controlado por datos. Cuando se proporciona un esquema, el analizador realiza valida el esquema y convierte los datos.
Un esquema describe la estructura y el formato de los datos en el archivo de origen GDL asociado. El esquema se puede definir dentro del propio archivo de datos de origen de GDL o puede ser un archivo independiente al que hace referencia el archivo de datos de origen de GDL. El esquema define las entradas de datos que pueden aparecer dentro de cada construcción y el número de veces que se puede definir cada atributo. Por ejemplo, puede definir una construcción para describir una persona. Es posible que desee que la construcción incluya el nombre de la persona, la fecha de nacimiento, la altura, el peso, la dirección doméstica y alguna información de empleo.
Los datos GDL podrían tener un aspecto similar al ejemplo de código siguiente.
*Person: person_ID
{
*Name:
*Birthdate:
*Height:
*Weight:
*HomeAddress:
*EmploymentInfo:
}
Dado que *HomeAddress y *EmploymentInfo representan agrupaciones lógicas de información, también se pueden definir como construcciones, como se muestra en el ejemplo de código siguiente.
*HomeAddress:
{
*StreetAddress:
*Apt_Number:
*City:
*State:
*Zip:
}
*EmploymentInfo:
{
*Employer:
*Address:
*Position:
*Salary:
*StartDate:
}
Las construcciones GDL, como las que se muestran en el ejemplo anterior, no definen ninguna regla de sintaxis para su estructura y contenido. Por ejemplo, podría haber dos instancias de la construcción *Person, una que especifica *Peso en kilogramos y la otra que especifica *Peso en libras. Estas varias instancias pueden provocar incoherencias.
El esquema GDL proporciona un método para especificar formalmente la estructura y el contenido a los que deben ajustarse los datos entrantes. El analizador validará los datos con este esquema y advertirá si los datos o la estructura de los datos no se ajustan al esquema. Puede especificar si las entradas son necesarias o opcionales (como Apt) o si se pueden multiplicar. Por ejemplo, *Apt_Number podría ser opcional y una sola persona puede contener dos trabajos.
El esquema permite compartir y heredar la definición de entradas. Por ejemplo, la definición de esquema para *Address en *EmploymentInfo se puede compartir mediante *HomeAddress. El esquema permite que las nuevas definiciones se deriven de las definiciones existentes. Las dos construcciones Address no necesitan ser idénticas porque pueden ser variantes derivadas de una definición heredada común.
El esquema se puede usar para especificar el formato de un valor de atributo determinado. Por ejemplo, el esquema puede requerir que el valor de fecha se especifique en el formato MM-DD-AAAA. También puede hacer que las expresiones de valor complejo del analizador se descomponan en sus componentes constituyentes y mostrarlas en la instantánea. Por ejemplo, la aplicación cliente podría querer que la fecha se descompone en tres campos independientes, como se muestra en el ejemplo de código siguiente.
*Date:
{
*Month: Jan
*Day: 1
*Year: 2001
}
La capacidad del esquema para admitir la herencia tiene implicaciones adicionales. La herencia le permite ampliar el esquema al tiempo que mantiene la compatibilidad. Si hay un esquema derivado de otro esquema, un archivo de datos que se ajusta al esquema derivado también se ajustará automáticamente al esquema original. Esta herencia permite a los proveedores personalizar su esquema (e implicando sus archivos de datos) a la vez que conservan la compatibilidad con un esquema maestro (y todas las aplicaciones que requieren conformidad con el esquema maestro). En la práctica, el proveedor solo debe hacer referencia al archivo que define el esquema maestro y crear nuevas definiciones que hereden de las definiciones del esquema maestro. El proveedor no necesita realizar una copia privada del esquema maestro ni modificar el esquema maestro de ninguna manera. Esta situación garantiza que el proveedor no necesite realizar ninguna acción si el esquema maestro se modifica posteriormente.
Como se muestra en el ejemplo anterior, la herencia le permite factorizar patrones comunes y evitar la duplicación innecesaria de definiciones y el mantenimiento que lo acompaña. Como resultado, los esquemas y los conjuntos de datos que representan pueden ser bien pensados y estructurados lógicamente.
Para obtener más información sobre cómo usar esquemas basados en herencia, vea Plantillas de GDL.