
- •Глава 1. Постановка задачи, формирование требований к системе 8
- •Глава 2. Проектирование архитектуры системы и описание логики взаимодействия ее компонентов 16
- •Глава 3. Разработка 31
- •Список сокращений и условных обозначений
- •Введение
- •Глава 1. Постановка задачи, формирование требований к системе
- •1.1 Функциональные и нефункциональные требования к системе
- •1.1.1 Функциональные требования
- •1.1.2 Нефункциональные требования
- •Глава 2. Проектирование архитектуры системы и описание логики взаимодействия ее компонентов
- •2.1 Системная архитектура
- •2.2 Взаимодействие с бэкендом
- •2.3 Интеграция с Access Control и pip Service
- •2.3.1 Конфигурация прав доступа в Access Control
- •2.3.2 Конфигурация расширенных прав доступа в pip Service
- •2.4 Микрофронтенд архитектура
- •2.4.1 Microservices ui Platform Framework
- •2.5 Архитектура данных
- •Глава 3. Разработка
- •3.1 Создание и регистрация Hiring фрагмента
- •3.2. Создание пользовательской роли hr Hiring
- •3.3. Маршрутизация
- •3.3.1 Hiring в глобальном меню Host Application
- •3.3.2 Маршрутизация в Hiring
- •3.4 Vault ldap-аутентификация
- •3.5 Примеры реализации функциональности компонентов системы
- •3.5.1 Создание Hiring Request’а
- •3.5.1.1 Отправка формы по нажатию кнопки “Submit”
- •3.5.2 Поиск Hiring Request’а по названию
- •3.5.3 Настройка видимости колонок таблиц дашбордов
- •3.5.4 Оправка нотификации “Send to Payroll Group”
- •3.5.5 Работа с документами
- •3.6 Выдача прав доступа
- •3.7 Модули проекта
- •3.8 Демонстрация интерфейса веб-приложения
- •3.9 Тестирование
- •Заключение
- •Список использованных источников
- •Приложение а
Глава 3. Разработка
3.1 Создание и регистрация Hiring фрагмента
Был создан новый Angular-проект и произведены базовые действия, конфигурирующие его: стандартный реестр пакетного менеджера npm был изменен на корпоративный, были установлены необходимые для дальнейшей разработки зависимости, созданы файл дескриптора сборки, исполняемый файл distrib.sh, реализующий создание артефакта сборки, сконфигурированы настройки для компилятора TypeScript, собран Gulpfile.js, отредактирован angular.json, а также в pom.xml был сконфигурирован процесс сборки приложения и публикации его артефактов, после чего в config.xml, являющемся конфигурационным файлом Jenkins, был прописан путь до проекта для получения возможности дальнейшей сборки веток проекта в Jenkins. Также согласно диаграмме, изображённой на рисунке 9, были созданы и помещены в пакет models модели данных и создан пакет services с сервисами, реализующими методы необходимых CRUD-операций для тех моделей данных, бизнес-логика которых этого требовала. Завершающим этапом первого шага разработки была регистрация фрагмента в MUI Platform: после сборки фрагмента в Jenkins был скачан артефакт сборки, для которого для всех окружений был выполнен предоставляемый MUI Platform REST API POST запрос, позволяющий зарегистрировать фрагмент в MUI Platform. В ходе дальнейшей разработки для деплоя фрагмента будет проделываться тот же алгоритм с выполнением PUT запроса к MUI Platform.
Для локальной разработки Hiring был обновлен конфигурационный файл локально сконфигурированного в качестве обратного-прокси до удаленного сервера Nginx.
3.2. Создание пользовательской роли hr Hiring
В интерфейсе Identity Provider для существующих Realm’ов была создана и выдана тестовым пользователям новая пользовательская роль HR Hiring, которая также была добавлена в enum ролей библиотеки Core.
3.3. Маршрутизация
3.3.1 Hiring в глобальном меню Host Application
На рисунке 11 продемонстрировано, что в модуле, отвечающем за маршрутизацию в Host Application, был добавлен маршрут до Hiring, для которого в качестве дочернего маршрута был выбран предварительно доработанный компонент FragmentsLauncherComponent, инициирующий запуск MUI Platform, создание фрагментов и логику выбора текущего открытого меню. Ограничение доступа было описано в классе FragmentAuthGuard, реализующем библиотечный Angular интерфейс авторизации навигации, в котором предварительно пользователю с ролью HR Hiring был выдан доступ на навигацию до стартовой страницы приложения и Hiring фрагмента. В классе, реализующем меню Host-Application и логику навигации между его пунктами, был добавлен пункт меню Hiring.
Рисунок 11 – app-routing.module
3.3.2 Маршрутизация в Hiring
В Host Application был создан Angular компонент, реализующий меню Hiring. При навигации между пунктами меню Hiring в классе Host Application FragmentsLauncherComponent (рисунок 11) генерируется событие, на которое подписан инициирующий маршрутизацию класс в Hiring. На рисунке 12 продемонстрирован этап инициализации компонента Hiring, в котором осуществлена подписка:
Рисунок 12 – FactoryComponent
В Hiring были созданы компоненты Archive, Requests in Progress и Reports, для которых были определены маршруты для навигации между пунктами меню Hiring, а также были реализованы компоненты, к котором будет осуществляться навигация при перехвате ошибок доступа и другие компоненты, для которых было необходимо определить маршрутизацию.
На рисунках 13 и 14 продемонстрированы Hiring меню и глобальное меню Host Application в свернутом и развернутом видах.
Рисунок 13 – Развернутый вид меню Рисунок 14 – Свернутый вид меню