Структура данных¶
Структура данных - это основная часть модели данных. Для ее получения можно использовать файл 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 – Связи