В данном разделе описан порядок создания справочника в 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.


