Создание справочника

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

Диалог создания справочника открывается через пункт New → Reference, доступный в соответствующем меню.

Поля диалога

В диалоговом окне создания справочника заполняются следующие поля:

  • Name — название справочника, по которому формируется имя класса сущности. Требования:
    • поле обязательно для заполнения;
    • значение может содержать только буквы английского алфавита и цифры;
    • значение не должно совпадать с ключевыми словами Java.
  • Localized name (ru, en) — локализованные названия справочника. Требования:
    • поля обязательны для заполнения.
  • Class name — класс сущности справочника. Поле автоматически заполняется на основе Name, но может быть изменено вручную. Значение также используется при формировании имени класса сущности Вложение. Требования:
    • поле обязательно для заполнения;
    • класс с таким именем не должен существовать в пакете сущностей;
    • имя класса должно начинаться с заглавной буквы и состоять из букв английского алфавита, цифр и знаков подчеркивания;
    • имя класса не должно совпадать с аннотациями JPA и CUBA;
    • класс сущности Вложение с таким именем не должен существовать.
  • Menu — пункт меню, в котором регистрируются экраны созданного справочника. Значение по умолчанию — меню Reference (Справочники).
  • Editor Tabs — настройка видимости вкладок редактора справочника. По умолчанию используются следующие значения:
  • Вложения — Invisible;
  • История изменений — Invisible.
  • Attributes — таблица атрибутов сущности. Используется для указания атрибутов создаваемого справочника.

Создаваемые объекты

После нажатия кнопки OK выполняется проверка полей на соответствие требованиям. Если значение не соответствует требованиям, поле подсвечивается красным цветом и отображается соответствующее сообщение. Некоторые поля, например Name и Class name, проверяются при вводе значения.

После успешной проверки выполняются действия, описанные ниже.

Создание сущности

В модуле global в пакете ${rootPackage}.entity создается сущность Справочник, наследующая StandardEntity.

При создании сущности учитываются следующие правила:

  • значение дискриминатора определяется по правилам формирования @DiscriminatorValue;

  • имя сущности формируется по правилам определения значения @Entity;

  • если вкладка Вложения видима, создается сущность Вложение, а в сущность Справочник добавляется атрибут attachments с отношением One_To_Many.

Если вкладка Вложения видима, в том же пакете создается сущность Вложение со следующими особенностями:

  • имя класса формируется по шаблону ${referenceClassName}Attachment, где referenceClassName — имя класса сущности Справочник;

  • сущность наследуется от com.haulmont.workflow.core.entity.Attachment;

  • значение дискриминатора определяется по правилам формирования @DiscriminatorValue;

  • в класс добавляется атрибут с отношением Many_To_One, указывающий на справочник. Имя атрибута соответствует имени класса справочника с первой строчной буквой.

Добавление ключей локализации

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

Регистрация сущности в дескрипторах и свойствах

Созданные сущности регистрируются в следующих конфигурационных файлах:

  • persistence.xml — справочник и вложение, если оно создавалось, регистрируются в конфигурации persistence, определяемой свойством cuba.persistenceConfig. Если в файле уже существуют теги со значениями, соответствующими созданным сущностям, повторные записи не добавляются;

  • fts.xml — сущности регистрируются в дескрипторе полнотекстового поиска, определяемом свойством cuba.ftsConfig. Если в файле уже существуют теги, соответствующие созданным сущностям, они заменяются;

  • logged-entities.xml — справочник и вложение, если оно создавалось, регистрируются в дескрипторе loggedEntities, определяемом свойством thesis.loggedEntities. Если в файле уже существует тег, соответствующий созданной сущности, он заменяется.

Имя сущности справочника добавляется в свойство ext.reporting.wizardEntitiesWhiteList в файле app.properties модуля core.

Если это свойство уже содержит имя созданной сущности, значение свойства не изменяется.

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

Для справочника создаются представления browse и edit, наследуемые от _local. В представления включаются атрибуты, добавленные пользователем.

Если создается сущность Вложение, атрибут attachments включается в представление edit справочника с представлением:

${REFERENCE_CLASS_NAME}-attachments-edit

Создание и регистрация экранов

При создании справочника создаются дескрипторы и контроллеры экранов edit и browse, а также пакет сообщений messages. Файлы создаются в пакете, который определяется по логике формирования пакета экранов сущности.

Экран Edit

Экран Edit имеет следующие особенности:

  • вкладки определяются в соответствии с настройками видимости, указанными в таблице Editor Tabs;

  • для атрибутов-сущностей и коллекций сущностей добавляются дочерние источники данных для основного источника данных;

  • для полей выбора соответствующих атрибутов добавляются optionsDataSource;

  • если вкладка Вложения видима, добавляется соответствующий источник данных.

Для атрибутов, не являющихся коллекциями, внутри вкладки mainTab формируется область отображения полей:

  • в ТЕЗИС 5.0 добавляется fieldGroup, в который одной колонкой добавляются поля для атрибутов типа datatype и Many_To_One;

  • в ТЕЗИС 5.1 добавляется grid, содержащий строки с полями для атрибутов типа datatype и Many_To_One;

  • если в ТЕЗИС 5.1 количество добавляемых атрибутов больше шести, они распределяются между двумя grid с разделителем. При нечетном количестве атрибутов левая область содержит на один атрибут больше.

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

  • в ТЕЗИС 5.0 под fieldGroup добавляются таблицы для каждого атрибута One_To_Many или Many_To_Many;

  • в ТЕЗИС 5.1 для каждого атрибута One_To_Many или Many_To_Many создается отдельная вкладка с таблицей;

  • вкладка включается в дескриптор только при соответствующем значении видимости.

Экран Browse

В таблицу экрана browse добавляются столбцы, соответствующие атрибутам типа datatype и Many_To_One.

Пакет локализации

Создаваемые файлы включают пакет com.haulmont.thesis.web.ui.basic, а также содержат ключи, используемые в экранах.

Регистрация экранов

Регистрация экранов

Экраны регистрируются в конфигурационном файле экранов web-screens.xml, определяемом свойством cuba.windowConfig:

  • browse-экран — идентификатор формируется по шаблону ${entityName}.browse, в атрибуте template указывается ссылка на дескриптор browse-экрана;

  • edit-экран — идентификатор формируется по шаблону ${entityName}.edit, в атрибуте template указывается ссылка на дескриптор edit-экрана;

  • lookup-экран — идентификатор формируется по шаблону ${entityName}.lookup, в атрибуте template указывается ссылка на дескриптор browse-экрана.

В конфигурационном файле меню web-menu.xml, определяемом свойством cuba.menuConfig, регистрируется lookup-экран.

В основной пакет сообщений модуля web, определяемый свойством cuba.mainMessagePack, добавляется ключ:

menu-config.${entityName}.lookup=${entityLocName}

Заменяемые данные

Если пользователь некорректно удалил сущность без использования средств рефакторинга и создает новую сущность с тем же классом или именем, в THESIS Studio применяется следующая логика:

  • существование классов сущности справочника и вложения проверяется на этапе валидации. Пользователю необходимо самостоятельно удалить или переименовать существующие классы, иначе создать сущность через диалог будет невозможно;

  • имена сущностей записываются в свойства файлов app.properties. Если нужное свойство уже содержит запись, значение свойства не изменяется;

  • ключи в пакете локализации сущностей заменяются;

  • записи в конфигурационных файлах fts и logged-entities заменяются;

  • представления заменяются;

  • экраны и записи в конфигурационных файлах экранов и меню заменяются.

Добавление информации о справочнике в локальный кэш

Полное имя класса справочника записывается в локальный кэш проекта.

Кэш хранится в файле:

.idea/thesis-entities-info.xml

Отображение результатов создания

После создания или изменения необходимых файлов отображается уведомление.


Все имена созданных файлов являются ссылками. При переходе по ссылке выбранный файл открывается в редакторе или соответствующем конструкторе: сущностей, представлений либо дескрипторов экранов.

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