Атрибуты сущностей

Общее описание

В данном разделе описан порядок добавления атрибутов в диалогах создания сущностей ТЕЗИС. Сведения предназначены для администратора или разработчика, выполняющего настройку и сопровождение проекта.

В диалогах создания сущностей ТЕЗИС можно добавлять, изменять и удалять атрибуты. В таблице атрибутов доступны следующие действия:

  • добавление нового атрибута;

  • изменение ранее добавленного атрибута;

  • удаление атрибута.

Для каждого добавленного атрибута создаются или изменяются следующие элементы:

  • атрибуты, аннотации и методы get/set в классе сущности;

  • ключи локализации;

  • свойства в представлениях;

  • инверсные атрибуты для отношений типа «много»;

  • столбцы в таблицах экранов browse для атрибутов типа datatype и ссылок на сущности;

  • поля в соответствующих контейнерах экранов edit для атрибутов типа datatype и ссылок на сущности;

  • таблицы в экранах edit для атрибутов с отношением типа «много».

Диалог создания и изменения атрибута

Диалоговое окно отображается при добавлении или редактировании атрибута в диалогах создания карточки, документа, справочника, а также при добавлении атрибута к существующей сущности.

Параметры диалогового окна

Name — имя атрибута.

Требования:

  • поле обязательно для заполнения;

  • значение может содержать только буквы английского алфавита и цифры;

  • значение не должно совпадать с ключевыми словами Java;

  • значение не должно совпадать с именами уже добавленных или существующих атрибутов сущности;

  • значение не должно совпадать с именами атрибутов предков сущности, например createTs из StandardEntity или versionOf из Doc.

Localized name (ru, en) — локализованные названия атрибута.

Требования:

  • поля обязательны для заполнения.

Required — признак обязательности атрибута. Если параметр установлен, значение атрибута должно быть задано.

Типы атрибутов

Для атрибута доступны три типа:

  • Simple attribute

Simple attribute — атрибут типа Datatype.

Поле Type содержит список всех datatypes, указанных в конфигурационных файлах metadata.xml проекта и подключенных компонентов, с учетом переопределений.

Для отдельных типов отображаются дополнительные поля:

  • для BigDecimal — Precision и Scale со значениями по умолчанию 19 и 2;

  • для String — Length со значением по умолчанию 50. Если указать значение 0, будет создана строка без ограничения длины с аннотацией @Lob;

  • для Enumeration — поле Type со списком перечислений проекта и подключенных компонентов.

  • Entity reference

    Entity reference — ссылка на сущность с отношением Many_To_One.

    Поле Type содержит список сущностей проекта и подключенных компонентов. В список не включаются:

    • метаклассы с аннотацией @MetaClass;

    • встраиваемые сущности с аннотацией @Embeddable;

    • системные сущности с аннотацией @SystemLevel;

    • сущности без заданного имени;

    • переопределенные сущности, у потомков которых указана аннотация @Extends.

  • Entity collection

    Entity collection — ссылка на сущность с отношением To_Many.

Поле Type содержит список сущностей проекта, которые не являются вложениями, то есть наследниками Attachment, и карточками, то есть наследниками TsCard.

Поле Cardinality определяет тип отношения. Логика выбора зависит от наличия экранов выбранной сущности, зарегистрированных в меню.

В конфигурации меню проверяется наличие тегов item, в том числе во вложенных меню, с атрибутами id или screen, значение которых содержит имя выбранной сущности. Проверка выполняется с учетом того, что идентификаторы экранов должны формироваться по шаблону ${entityName}.${screenType}, например df$Bank.browse.

Если для сущности есть зарегистрированные экраны, пользователь может выбрать отношение ONE_TO_MANY или MANY_TO_MANY. Если зарегистрированные экраны отсутствуют, автоматически выбирается ONE_TO_MANY без возможности изменения.

Ключи локализации

Для каждого атрибута в пакеты локализации сущностей добавляется ключ следующего вида:

${className}.${attributeName}=${attributeLocName}

где:

  • className — имя класса сущности, указанное в поле Class name диалога создания сущности;

  • attributeName — имя атрибута, указанное в поле Name диалога создания атрибута;

  • attributeLocName — локализованное название атрибута, указанное в поле Localized name диалога создания атрибута.

Свойства в представлениях

Порядок добавления атрибутов в представления зависит от типа атрибута и вида представления.

Datatype и Enum

Атрибуты типов Datatype и Enum добавляются в представления, используемые в экранах browse и edit.

Если представление транзитивно наследуется от _local или _base, свойство атрибута в представление не добавляется. Если представление транзитивно наследуется от _minimal, свойство добавляется.

При этом не выполняется проверка, входит ли атрибут в NamePattern.

Entity reference

Атрибуты типа Entity reference добавляются в представления, используемые в экранах browse и edit, с представлением _minimal.

Entity collection

Атрибуты типа Entity collection добавляются только в представления, используемые в экранах edit.

Для сущности, указанной как тип атрибута, создается отдельное представление. С этим представлением атрибут включается в представление экрана edit.

Имя создаваемого представления формируется по шаблону:

${decapitalizedClassName}-${decapitalizedAttributeName}-${viewName}

где:

  • decapitalizedClassName — имя класса сущности, в которую добавляется атрибут-коллекция, с первой строчной буквой;

  • decapitalizedAttributeName — имя атрибута с первой строчной буквой;

  • viewName — имя представления, в которое добавляется атрибут.

Например, если для сущности с классом MyEntity создается представление edit, а в сущности есть атрибут-коллекция users типа User, будет создано представление:

myEntity-users-edit

Если в конфигурации представлений для сущности, выбранной как тип атрибута, существует представление browse, создаваемое представление наследуется от него. Если представление browse отсутствует, создаваемое представление наследуется от _local, и в него добавляются все атрибуты Entity reference, включая унаследованные, с представлением _minimal.

Инверсные атрибуты

Для атрибутов-коллекций создаются инверсные атрибуты:

  • MANY_TO_ONE — для атрибутов ONE_TO_MANY;

  • MANY_TO_MANY — для атрибутов MANY_TO_MANY.

Инверсные атрибуты добавляются в класс сущности и только в представление edit соответствующей сущности. В представление browse они не добавляются, чтобы не включаться в таблицы, создаваемые при добавлении атрибутов-коллекций.

Для инверсных атрибутов также создаются ключи локализации. Значения ключей соответствуют локализованному названию сущности.

Особенности добавления атриубтов в экраны

При добавлении атрибутов в экраны учитываются следующие особенности:

  • атрибуты типа ByteArray не добавляются в экраны;

  • если добавляемый атрибут имеет аннотацию @Lob, для соответствующей колонки таблицы добавляется атрибут sortable="false";

  • атрибуты-коллекции не добавляются в списочные экраны browse и lookup.