Задания к лабораторным работам

Lab Work #1

Please enter your variant number to get your site name.

Описать бизнес-процесс в соответствии с нотацией BPMN 2.0, после чего реализовать его в виде приложения на базе Spring Boot.

Порядок выполнения работы:

  1. Выбрать один из бизнес-процессов, реализуемых сайтом из варианта задания.
  2. Утвердить выбранный бизнес-процесс у преподавателя.
  3. Специфицировать модель реализуемого бизнес-процесса в соответствии с требованиями BPMN 2.0.
  4. Разработать приложение на базе Spring Boot, реализующее описанный на предыдущем шаге бизнес-процесс. Приложение должно использовать СУБД PostgreSQL для хранения данных, для всех публичных интерфейсов должны быть разработаны REST API.
  5. Разработать набор curl-скриптов, либо набор запросов для REST клиента Insomnia для тестирования публичных интерфейсов разработанного программного модуля. Запросы Insomnia оформить в виде файла экспорта.
  6. Развернуть разработанное приложение на сервере helios.

Содержание отчёта:

  1. Текст задания.
  2. Модель потока управления для автоматизируемого бизнес-процесса.
  3. UML-диаграммы классов и пакетов разработанного приложения.
  4. Спецификация REST API для всех публичных интерфейсов разработанного приложения.
  5. Исходный код системы или ссылка на репозиторий с исходным кодом.
  6. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Понятие бизнес-логики в программных системах. Уровень бизнес-логики в многоуровневой архитектуре программных систем.
  2. Основные концепции, используемые при разработке бизнес-логики. CDI, IoC, управление транзакциями, безопасность, распределённая обработка данных.
  3. Моделирование бизнес-процессов. BPM и BPMN.
  4. Спецификация BPMN 2.0. Принципы составления и основные элементы моделей бизнес-процессов.
  5. Объекты потока управления, роли и артефакты в BPMN.
  6. Использование Spring Framework для реализации бизнес-логики. Реализация CDI и IoC. Связь уровня бизнес-логики с другими уровнями архитектуры программных систем в Spring.
  7. Spring Boot. Способы конфигурации бинов. Двухфазовый, трёхфазовый конструктор.
  8. Профили запуска приложения в Spring Boot.
  9. Реализация REST API с помощью Spring MVC REST.

Лабораторная работа #2

Please enter your variant number to get your task text.

Правила выполнения работы:

  1. Все изменения, внесённые в реализуемый бизнес-процесс, должны быть учтены в описывающей его модели, REST API и наборе скриптов для тестирования публичных интерфейсов модуля.
  2. Доработанное приложение необходимо развернуть на сервере helios.

Содержание отчёта:

  1. Текст задания.
  2. Модель потока управления для автоматизируемого бизнес-процесса.
  3. Спецификация пользовательских привилегий и ролей, реализованных в приложении.
  4. UML-диаграммы классов и пакетов разработанного приложения.
  5. Спецификация REST API для всех публичных интерфейсов разработанного приложения.
  6. Исходный код системы или ссылка на репозиторий с исходным кодом.
  7. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Понятие транзакции. Особенности реализации транзакций на уровне бизнес-логики, отличия от транзакций на уровне БД.
  2. Распределённые транзакции, спецификация XA. Реализация в приложениях на базе Java EE и Spring.
  3. Реализация управления транзакциями в Spring. Аннотация @Transactional. Декларативное и программное управления транзакциями.
  4. Java Transaction API. Основные принципы и программные интерфейсы. Работа с JTA в приложениях на базе Spring / Spring Boot.
  5. Менеджеры транзакций: Atomikos, Bitronix. Использование менеджера транзакций Java EE в приложениях на базе Spring / Spring Boot.
  6. Разграничение доступа и политики безопасности в корпоративных приложениях. Пользователи, роли и привилегии. Реализация политик безопасности на уровне бизнес-логики.
  7. Технология Spring Security. Основные понятия, аннотации, конфигурационные файлы и API. Использование на уровне бизнес-логики.
  8. Технология JAAS. Основные понятия, конфигурационные файлы и API. Использование на уровне бизнес-логики, в т.ч. совместно с Spring Security.
  9. Способы хранения информации об учётных записях пользователей в приложениях на Java.
  10. Подходы к реализации аутентификации пользователей в приложениях на Java.

Lab Work #3

Please enter your variant number to get your task text.

Правила выполнения работы:

  1. Все изменения, внесённые в реализуемый бизнес-процесс, должны быть учтены в описывающей его модели, REST API и наборе скриптов для тестирования публичных интерфейсов модуля.
  2. Доработанное приложение необходимо либо развернуть на сервере helios, либо продемонстрировать его работоспособность на собственной инфраструктуре обучающегося.

Содержание отчёта:

  1. Текст задания.
  2. Модель потока управления для автоматизируемого бизнес-процесса со всеми внесёнными изменениями.
  3. UML-диаграммы классов и пакетов разработанного приложения.
  4. Спецификация REST API для всех публичных интерфейсов разработанного приложения.
  5. Исходный код системы или ссылка на репозиторий с исходным кодом.
  6. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. Асинхронное выполнение задач. Преимущества и недостатки, подходы к реализации.
  2. Спецификация Java Message Service.
  3. Ресурсы и сообщения JMS. Модели взаимодействия "очередь" и "подписка". Распределённая обработка сообщений.
  4. Протоколы взаимодействия с очередями сообщений: MQTT, AMQP, STOMP, XMPP. Отправка сообщений с использованием HTTP + WebSockets.
  5. Apache ActiveMQ. Архитектура, способы взаимодействия, поддерживаемые протоколы, особенности реализации JMS. Протокол OpenWire и его реализации для различных платформ.
  6. RabbitMQ. Архитектура, способы взаимодействия, поддерживаемые протоколы, особенности реализации JMS.
  7. Apache Kafka. Особенности обработки сообщений, сходства и отличия с очередями сообщений. Архитектура, особенности построения масштабируемых решений, интеграция с Service Discovery.
  8. Периодические задачи, планировщики выполнения задач.
  9. Cron. Архитектура, интеграция в ОС, способы конфигурации, синтаксис Cron Expression.
  10. Quartz. Архитектура, интеграция с приложением, способы конфигурации.
  11. Выполнение периодических задач в Java / Jakarta EE и Spring. Java / Jakarta EE Timer Services и Spring @Scheduled.

Лабораторная работа #4

Переработать программу, созданную в результате выполнения лабораторной работы #3, следующим образом:

  1. Интегрировать в состав приложения фреймворк jBPM.
  2. Заменить всю "статическую" бизнес-логику на "динамическую" на базе jBPM. Весь бизнес-процесс, реализованный в ходе выполнения предыдущих лабораторных работ (включая разграничение доступа по ролям, управление транзакциями, асинхронная обработка и периодические задачи), должен быть сохранён!
  3. Для описания бизнес-процесса необходимо использовать jBPM Case Management showcase app.
  4. Сгенерировать с помощью jBPM-форм пользовательский интерфейс приложения.

Итоговую сборку на базе jBPM Server необходимо развернуть на сервере helios.

Правила выполнения работы:

  1. Описание бизнес-процесса необходимо реализовать на языке BPMN 2.0.
  2. Необходимо интегрировать в состав процесса, управляемого jBPM, всё, что в принципе возможно в него интегрировать. Если какой-то из компонентов архитектуры приложения (например, асинхронный обмен сообщениями с помощью JMS) не поддерживается, необходимо использовать для интеграции с этой подсистемой соответствующие API и адаптеры.
  3. Распределённую обработку задач и распределённые транзакции на платформу jBPM переносить не требуется.

Содержание отчёта:

  1. Текст задания.
  2. Модель потока управления для автоматизируемого бизнес-процесса со всеми внесёнными изменениями.
  3. Блок-схема архитектуры приложения с указанием "точек интеграции" BPM-фреймвока с остальными подсистемами.
  4. Исходный код системы, код описания бизнес-процесса или ссылка на репозиторий.
  5. Выводы по работе.

Вопросы к защите лабораторной работы:

  1. BPM-фреймворки. Особенности реализации бизнес-логики, преимущества и недостатки по сравнению с реализацией логики "вручную".
  2. Платформа jBPM. Архитектура, поддерживаемые языки, особенности разработки программ, редакторы бизнес-процессов.
  3. Роли и права доступа в jBPM.
  4. Использование в качестве подсистемы "внутри" приложения на базе Java / Jakarta EE и Spring.
  5. Интеграция jBPM с "внешними" сервисами (в т.ч. на базе Java / Jakarta EE и Spring). Основные API и адаптеры.
  6. Транзакции в jBPM. Поддержка JTA.
  7. Реализация GUI в jBPM.