Самоучитель

В данном самоучителе вы познакомитесь с основами фреймворка Jmix путем создания простого веб-приложения с полным стеком. Самоучитель охватывает весь процесс разработки: от моделирования данных до создания пользовательского интерфейса и управления правами доступа.

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

О приложении

Вы разработаете приложение, которое помогает автоматизировать процесс онбординга сотрудника. Компания состоит из отделов. В каждом отделе есть HR-менеджер, который следит за процессом онбординга, регистрирует новых сотрудников и разрабатывает план их адаптации в компании. Новый сотрудник получает список необходимых шагов и отмечает их выполненение.

Полный исходный код приложения доступен в репозитории GitHub: jmix-framework/jmix-onboarding. Мы рекомендуем следовать инструкциям этого самоучителя, чтобы создать приложение шаг за шагом, но если вы хотите просто изучить готовое приложение, клонируйте репозиторий и откройте его в Jmix Studio, как описано в разделе Открытие существующего проекта.

Далее мы подробнее рассмотрим модель данных, роли пользователей и познакомимся с пользовательским интерфейсом, который мы собираемся создать.

Модель данных

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

Diagram

Главной сущностью в приложении является Пользователь (User). Пользователь характеризуется логином для входа в систему и другими атрибутами, такими как дата приема на работу (joiningDate) и статус процесса онбординга (onboardingStatus). Пользователь состоит в отделе, который обозначается ссылкой на сущность Отдел (Department).

Сущность Department - это отдел компании. У него есть имя и HR-менеджер - пользователь, который регистрирует новых сотрудников, принадлежащих к отделу.

Сущность Шаг (Step) определяет этап онбординга, например, "Инструктаж по технике безопасности", "Заполнение профиля" и так далее. Шаг имеет название (name) и продолжительность (duration) - период времени в днях после даты приема, когда сотрудник должен выполнить этот шаг. Атрибут sortValue задает порядок выполнения шага в списке шагов.

Сущность UserStep - это этап онбординга конкретного пользователя. Она связывает сущности User и Step и добавляет атрибуты даты выполнения (dueDate) и даты завершения (completedDate). Дата выполнения рассчитывается как дата приема пользователя плюс продолжительность шага. Дата завершения устанавливается на ту дату, когда пользователь отмечает выполненный шаг.

Роли пользователей

Наше приложение поддерживает следующие роли пользователей:

  • Администраторы имеют полный контроль над приложением. Они видят всех пользователей, настраивают этапы онбординга, отделы и назначают HR-менеджеров.

    admin ui 1
  • HR-менеджеры регистрируют новых сотрудников в своих отделах и начинают процесс онбординга, генерируя шаги для конкретного пользователя. Они также могут отслеживать процесс адаптации сотрудников своего отдела.

    hr manager ui 1
  • Сотрудники могут видеть свои собственные шаги онбординга и отмечать выполненные шаги.

    employee ui 1