GDL 架构
GDL 分析程序使你能够创建和实现数据驱动的架构。 提供架构时,分析程序将执行验证架构并转换数据。
架构描述关联的 GDL 源文件中的数据的结构和格式。 架构可以在 GDL 源数据文件本身中定义,也可以是 GDL 源数据文件引用的单独文件。 架构定义每个构造中可以显示的数据条目,以及每个属性可以定义的次数。 例如,可以定义一个构造来描述一个人。 你可能希望构造包含人员的姓名、出生日期、身高、体重、家庭住址和一些就业信息。
GDL 数据可能类似于以下代码示例。
*Person: person_ID
{
*Name:
*Birthdate:
*Height:
*Weight:
*HomeAddress:
*EmploymentInfo:
}
由于 *HomeAddress 和 *EmploymentInfo 表示信息的逻辑分组,因此也可以将其定义为构造,如以下代码示例所示。
*HomeAddress:
{
*StreetAddress:
*Apt_Number:
*City:
*State:
*Zip:
}
*EmploymentInfo:
{
*Employer:
*Address:
*Position:
*Salary:
*StartDate:
}
GDL 构造(如前面示例中所示的构造)不为其结构和内容定义任何语法规则。 例如,可以有两个 *Person 构造实例,一个指定 *Weight(以公斤为单位),另一个指定 *Weight(以磅为单位)。 这些多个实例可能会导致不一致。
GDL 架构提供了一种方法来正式指定传入数据必须符合的结构和内容。 分析程序将针对此架构验证数据,并在数据或数据结构不符合架构时发出警告。 可以指定项是必需项还是可选的 ((如 Apt) )或是否可以对条目进行乘法定义。 例如,*Apt_Number可能是可选的,一个人可以持有两个作业。
架构允许共享和继承条目的定义。 例如,*EmploymentInfo 中 *Address 的架构定义可由 *HomeAddress 共享。 架构允许从现有定义派生新定义。 这两个 Address 构造不需要相同,因为它们可以是派生自通用继承定义的变体。
架构可用于指定给定属性值的格式。 例如,架构可能要求以 MM-DD-YYYY 格式指定日期值。 还可以让分析程序将复杂值表达式分解为其构成组件,并在快照中显示它们。 例如,客户端应用程序可能需要将日期分解为三个单独的字段,如以下代码示例所示。
*Date:
{
*Month: Jan
*Day: 1
*Year: 2001
}
架构支持继承的能力还有其他影响。 继承自然使你能够扩展架构,同时保持兼容性。 如果有从另一个架构派生的架构,则符合派生架构的数据文件也将自动符合原始架构。 这种继承使供应商能够自定义其架构 (并暗示其数据文件) ,同时保持与主架构 (以及所有需要符合主架构的应用程序) 的兼容性。 在实践中,供应商必须仅引用定义主架构的文件,并创建继承自主架构中的定义的新定义。 供应商不需要创建主架构的专用副本,也不需要以任何方式修改主架构。 这种情况可确保供应商在随后修改主架构时不需要采取任何操作。
如前面的示例所示,继承使你能够分解常见模式,并避免不必要的重复定义和随之而来的维护。 因此,它们所表示的架构和数据集可以经过深思熟虑且具有逻辑结构。
有关如何使用基于继承的架构的详细信息,请参阅 GDL 模板。