1. Создание базы знаний с документами WebDAV

Начнем с реализации основной функциональности вашего приложения Onboarding: системы управления базой знаний.

Эта система будет содержать файлы и документы, представленные сущностью WebdavDocumentWrapper. Приложение будет хранить описание документа, ссылку на сущность WebdavDocument, предоставляемую дополнением, и ссылку на отдел, к которому относится документ. Пользователь с правами администратора сможет управлять списком документов, создавать новые документы, редактировать или удалять их с помощью специальных экранов. Функциональность будет включать следующее:

  • Сущность WebdavDocumentWrapper со ссылками на WebdavDocument и Department.

  • Таблицу базы данных для сущности.

  • CRUD-экраны для работы с сущностью.

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

Создадим сущность WebdavDocumentWrapper.

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

В окне инструмента Jmix нажмите New (add) → JPA Entity. Введите WebdavDocumentWrapper в поле Class.

Сущность WebdavDocumentWrapper имеет следующие атрибуты:

  • description типа String.

  • department типа Department.

  • webdavDocument типа WebdavDocument:

    webdav document attr

Посмотрим на итоговый класс сущности, сгенерированный дизайнером. Переключитесь на вкладку Text внизу:

webdav document text

Создание CRUD-экранов

Сгенерируем CRUD-экраны для сущности WebdavDocumentWrapper.

Нажмите Views → Create view на панели действий в верхней части дизайнера сущностей.

На первом шаге мастера создания экранов выберите шаблон Entity list and detail views. Нажмите Next.

Примите предложенные значения на первых двух шагах мастера.

На шаге Entity list view fetch plan добавьте атрибуты webdavDocument и department к выборке:

create doc wrapper list fetch

Теперь вы можете быть уверены, что сущности WebdavDocument и Department, на которые есть ссылки, будут загружены вместе с корневой сущностью WebdavDocumentWrapper и отображены в экране списка.

Если атрибут отсутствует в фетч-плане, Studio не создает для него визуальный компонент в сгенерированных экранах.

Нажмите Next.

На шаге Entity detail view fetch plan эти атрибуты будут выбраны автоматически. Нажмите Next.

Измените значение локализованного сообщения для экрана списка на Knowledge base на шаге Localizable messages и нажмите Create.

create doc wrapper list lmessage

Studio автоматически сгенерирует два экрана: WebdavDocumentWrapper.list и WebdavDocumentWrapper.detail, и откроет их исходный код.

Запуск приложения

После создания сущности и CRUD-экранов для нее вы можете запустить приложение, чтобы увидеть новую функциональность в действии. Нажмите кнопку Debug (start debugger) на главной панели инструментов.

Перед запуском приложения Studio сравнивает модель данных проекта со схемой базы данных. Поскольку вы создали новую сущность, Studio автоматически генерирует Liquibase changelog, отражающий соответствующие изменения базы данных (например, создание таблицы WEBDAV_DOCUMENT_WRAPPER):

db wd 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.

wd wrapper detail blank

Вы можете выбрать документ WebDAV, нажав на кнопку с многоточием в поле пикера. Экран WebDAV Documents, предоставляемый дополнением, откроется в диалоговом окне. Выберите строку в таблице документов WebDAV или загрузите новый документ, затем прокрутите вниз, чтобы увидеть кнопку Select:

wd wrapper detail select doc

Выберите документ WebDAV и нажмите Select. Идентификатор выбранного документа WebDAV будет отображен в поле пикера:

wb doc id picker

Нажмите OK. Идентификатор документа WebDAV, на который есть ссылка, также будет отображен в таблице данных:

wb doc id data grid

Как видите, работать с документами WebDAV на этом этапе не очень удобно. Загрузка документа в приложение требует множества шагов, а после загрузки мы видим только идентификатор документа без какой-либо дополнительной информации о нем. В следующем разделе мы воспользуемся UI-компонентами, предоставляемыми дополнением, и улучшим внешний вид экрана Knowledge Base.

Итоги

В этом разделе вы создали базовую функциональность приложения: систему управления базой знаний.

Вы узнали, что:

  • Дополнение WebDAV предоставляет сущность WebdavDocument, которая представляет документ в рамках функциональности WebDAV. Эта сущность позволяет редактировать и просматривать документы с помощью внешних приложений, управлять версиями документов и контролировать доступ к конкретным документам.

  • Компонент entityPicker по умолчанию используется для выбора ссылки в сгенерированном экране деталей. Нажатие на кнопку с многоточием в поле WebDAV document откроет стандартный экран документов WebDAV, предоставляемый дополнением.