Структура данных¶
Структура данных - это основная часть модели данных. Для ее получения можно использовать файл model.xml, состоящий из 5 частей.
Часть "registers"¶
Часть содержит 6 реестров, каждый из которых имеет определенные свойства.
Свойства реестра:
name - имя реестра (обязательное; может содержать латинские буквы, цифры, символ '_');
displayName - имя реестра, отображаемое в пользовательском интерфейсе (обязательное; может содержать буквы разных языков, цифры, различные символы, включая пробел);
groupName - группа реестров/справочников (обязательное; может содержать латинские буквы, цифры, символ '_'). См. описание части entitiesGroup.
Перечень атрибутов реестра может содержать множество атрибутов трех типов: простой, массив-атрибут и комплексный.
Реестр "MASTER" имеет в своем составе только два простых атрибута.
Свойства атрибутов реестра:
name - имя атрибута (обязательное; может содержать латинские буквы, цифры, символ '_');
displayName - имя атрибута, отображаемое в пользовательском интерфейсе (обязательное; может содержать буквы разных языков, цифры, различные символы, включая пробел);
order - порядок атрибутов в списке атрибутов реестра.
Рисунок 1 – Реестры в части “registers”
Рисунок 2 – Реестр “MASTER” и его свойства
Большинство простых атрибутов имеют свойство simpleDataType. Это свойство устанавливает тип данных простого атрибута.
Реестр "ALL_TYPES" имеет 12 простых атрибутов, и 9 из них имеют различные свойства simpleDataType со значениями: стрококвый, целочисленный, численный, дата, время, дата/время, логический.
Простой атрибут с simpleDataType = "Численный" используется для установки единиц измерения. Он имеет свойство measureSettings, которое, в свою очередь, имеет свойства categoryId и defaultUnitId. Значения measureSettings.categoryId и measureSettings.defaultUnitId должны совпадать со значениями category.name и unit.name в файле measurement-units.xml.
Реестр "ALL_TYPES" имеет простой атрибут "lookupLink". Значением этого атрибута является кодовый атрибут справочника.
Свойство lookupEntityCodeAttributeType говорит о типе этого кодового атрибута. Свойство lookupEntityType определяет имя справочника. См. описание части lookups.
Простой атрибут "webLink" подходит для ссылки на данные. Он имеет свойство linkDataType.
Значение простого атрибута "enum" - это элемент одного из перечислений, которые задаются в enumDataType. Все перечисления модели и их элементы прописываются в файле enumerations.xml.
Примечания:
Каждый реестр должен иметь как минимум один простой атрибут.
Один простой атрибут каждого реестра должен быть основным отображаемым (иметь следующие свойства: mainDisplayable="true" displayable="true" nullable="false" searchable="true").
Реестр "ALL_TYPES" имеет не только простые атрибуты, но и массив-атрибуты, которые могут хранить несколько значений (массивы значений).
Атрибуты массива имеют свойства arrayValueType вместо свойств простого атрибута simpleDataType.
Третий тип атрибутов - комплексный. Реестр "COMPLEX_ATTRS" содержит два комплексных атрибута. Первый определяется вложенным объектом "complex_levels" (nestedEntityName="complex_levels"). Второй использует вложенный объект "complex_all_types" (nestedEntityName="complex_all_types"). Описание вложенных объектов см. в части nesteds.
Часть “lookups”¶
Справочники схожи с реестрами и имеют такие же свойства.
Свойства справочника:
name - имя справочника (обязательное; может содержать латинские буквы, цифры, символ '_');
displayName - имя справочника, отображаемое в пользовательском интерфейсе (обязательное; может содержать буквы разных языков, цифры, различные символы, включая пробел);
groupName - группа реестров/справочников (обязательное; может содержать латинские буквы, цифры, символ '_'). См. описание части entitiesGroup.
Справочник имеет перечень простых атрибутов и один кодовый атрибут. Кодовый атрибут может быть использован в атрибутах реестра для связи реестра и справочника. Также справочник может иметь альтернативные кодовые атрибуты.
В приведенном примере реестр "ALL_TYPES" связан со справочником "STR_LOOKUP" простым атрибутом реестра "lookupLink" и кодовым атрибутом "code".
Примечания:
Каждый справочник должен иметь кодовый атрибут. Этот атрибут по умолчанию простой, и в интерфейсе создается вместе со справочником.
Кодовый атрибут или один простой атрибут каждого справочника должен быть основным отображаемым (должен иметь следующие свойства: mainDisplayable="true" displayable="true" nullable="false").
Рисунок 3 – Справочники
Часть “nesteds”¶
В приведенном примере модели данных есть четыре вложенных объекта, которые не могут существовать без реестров. Они определяют структуру комплексного атрибута и содержат перечни простых, массив или комплексных атрибутов.
Свойства вложенного объекта:
name - имя вложенного объекта (обязательное; может содержать латинские буквы, цифры, символ '_');
displayName - имя объекта, отображаемое в пользовательском интерфейсе (обязательное; может содержать буквы разных языков, цифры, различные символы, включая пробел).
Рисунок 4 – Вложенные объекты
Часть “entitiesGroup”¶
Модель данных может содержать множество реестров и справочников. Для облегчения поиска в пользовательском интерфейсе можно использовать группы реестров/справочников.
Существует одна группа по умолчанию - "ROOT".
Свойства групп:
name - имя группы (обязательное; может содержать латинские буквы, цифры, символ '_');
displayName - имя группы, отображаемое в пользовательском интерфейсе (обязательное; может содержать буквы разных языков, цифры, различные символы, включая пробел).
Доступно создание глубокой иерархии групп реестров/справочников. Каждая внутренняя группа может содержать внутри себя множество внутренних групп.
Рисунок 5 – Группы реестров/справочников
Часть “relations”¶
Реестры могут быть связаны со справочниками с помощью простых или массив-атрибутов с заданными свойствами lookupEntityType и lookupEntityCodeAttributeType.
Существуют связи 3 типов: "Contains" (Включение), "References" (ссылка) и "ManyToMany" (Многие-ко-многим). Тип описывает свойство relType.
Каждая связь, например, register или lookup, имеет имя и отображаемое имя (свойства name и displayName). Они могут быть обязательными или нет (свойство required). Имя основного реестра определяется свойством fromEntity; toEntity - имя подчиненного реестра.
Связи типа register или lookup могут иметь и простые атрибуты.
Рисунок 6 – Связи