1. Создание базы знаний с документами WebDAV
Начнем с реализации основной функциональности вашего приложения Onboarding: системы управления базой знаний.
Эта система будет содержать файлы и документы, представленные сущностью WebdavDocumentWrapper. Приложение будет хранить описание документа, ссылку на сущность WebdavDocument, предоставляемую дополнением, и ссылку на отдел, к которому относится документ. Пользователь с правами администратора сможет управлять списком документов, создавать новые документы, редактировать или удалять их с помощью специальных экранов. Функциональность будет включать следующее:
-
Сущность
WebdavDocumentWrapperсо ссылками наWebdavDocumentиDepartment. -
Таблицу базы данных для сущности.
-
CRUD-экраны для работы с сущностью.
Создание сущности WebdavDocumentWrapper
Создадим сущность WebdavDocumentWrapper.
| Подробные инструкции по созданию сущностей можно найти в разделе Простой CRUD самоучителя. |
В окне инструмента Jmix нажмите New () → JPA Entity. Введите
WebdavDocumentWrapper в поле Class.
Сущность WebdavDocumentWrapper имеет следующие атрибуты:
-
descriptionтипаString. -
departmentтипаDepartment. -
webdavDocumentтипаWebdavDocument:
Посмотрим на итоговый класс сущности, сгенерированный дизайнером. Переключитесь на вкладку Text внизу:
Создание CRUD-экранов
Сгенерируем CRUD-экраны для сущности WebdavDocumentWrapper.
Нажмите Views → Create view на панели действий в верхней части дизайнера сущностей.
На первом шаге мастера создания экранов выберите шаблон Entity list and detail views. Нажмите Next.
Примите предложенные значения на первых двух шагах мастера.
На шаге Entity list view fetch plan добавьте атрибуты webdavDocument и department к выборке:
Теперь вы можете быть уверены, что сущности WebdavDocument и Department, на которые есть ссылки, будут загружены вместе с корневой сущностью WebdavDocumentWrapper и отображены в экране списка.
| Если атрибут отсутствует в фетч-плане, Studio не создает для него визуальный компонент в сгенерированных экранах. |
Нажмите Next.
На шаге Entity detail view fetch plan эти атрибуты будут выбраны автоматически. Нажмите Next.
Измените значение локализованного сообщения для экрана списка на Knowledge base на шаге Localizable messages и нажмите Create.
Studio автоматически сгенерирует два экрана: WebdavDocumentWrapper.list и WebdavDocumentWrapper.detail, и откроет их исходный код.
Запуск приложения
После создания сущности и CRUD-экранов для нее вы можете запустить приложение, чтобы увидеть новую функциональность в действии.
Нажмите кнопку Debug () на главной панели инструментов.
Перед запуском приложения Studio сравнивает модель данных проекта со схемой базы данных. Поскольку вы создали новую сущность, Studio автоматически генерирует Liquibase changelog, отражающий соответствующие изменения базы данных (например, создание таблицы WEBDAV_DOCUMENT_WRAPPER):
Нажмите Save and run.
Studio выполнит changelog в вашей базе данных, а затем соберет и запустит приложение.
После запуска приложения перейдите по адресу http://localhost:8080 в веб-браузере и войдите в приложение с учетными данными admin/admin.
Выберите пункт Knowledge base в меню Application. Откроется экран Webdav document wrapper.list. Нажмите Create. Откроется экран Webdav document wrappers.detail. Помимо текстового поля, используемого для описания файла, вы увидите пикеры сущностей Department и Webdav document.
Вы можете выбрать документ WebDAV, нажав на кнопку с многоточием в поле пикера. Экран WebDAV Documents, предоставляемый дополнением, откроется в диалоговом окне. Выберите строку в таблице документов WebDAV или загрузите новый документ, затем прокрутите вниз, чтобы увидеть кнопку Select:
Выберите документ WebDAV и нажмите Select. Идентификатор выбранного документа WebDAV будет отображен в поле пикера:
Нажмите OK. Идентификатор документа WebDAV, на который есть ссылка, также будет отображен в таблице данных:
Как видите, работать с документами WebDAV на этом этапе не очень удобно. Загрузка документа в приложение требует множества шагов, а после загрузки мы видим только идентификатор документа без какой-либо дополнительной информации о нем. В следующем разделе мы воспользуемся UI-компонентами, предоставляемыми дополнением, и улучшим внешний вид экрана Knowledge Base.
Итоги
В этом разделе вы создали базовую функциональность приложения: систему управления базой знаний.
Вы узнали, что:
-
Дополнение WebDAV предоставляет сущность
WebdavDocument, которая представляет документ в рамках функциональности WebDAV. Эта сущность позволяет редактировать и просматривать документы с помощью внешних приложений, управлять версиями документов и контролировать доступ к конкретным документам. -
Компонент entityPicker по умолчанию используется для выбора ссылки в сгенерированном экране деталей. Нажатие на кнопку с многоточием в поле WebDAV document откроет стандартный экран документов WebDAV, предоставляемый дополнением.