Структура данных
Структура данных - это основная часть модели данных. Для ее получения можно использовать файл model.xml, состоящий из 5 частей.
Часть "registers"
Часть содержит 6 реестров, каждый из которых имеет определенные свойства (Рисунок 1).
Свойства реестра:
name- имя реестра (обязательное; может содержать латинские буквы, цифры, символ '_');displayName- имя реестра, отображаемое в пользовательском интерфейсе (обязательное; может содержать буквы разных языков, цифры, различные символы, включая пробел);groupName- группа реестров/справочников (обязательное; может содержать латинские буквы, цифры, символ '_'). См. описание части entitiesGroup.
Перечень атрибутов реестра может содержать множество атрибутов трех типов: простой, массив-атрибут и комплексный.
Реестр "MASTER" имеет в своем составе только два простых атрибута (Рисунок 2).
Свойства атрибутов реестра:
name- имя атрибута (обязательное; может содержать латинские буквы, цифры, символ '_');displayName- имя атрибута, отображаемое в пользовательском интерфейсе (обязательное; может содержать буквы разных языков, цифры, различные символы, включая пробел);order- порядок атрибутов в списке атрибутов реестра.
Большинство простых атрибутов имеют свойство 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.
Рисунок 1 – Реестры в части “registers”
Рисунок 2 – Реестр “MASTER” и его свойства
Часть “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 – Связи