Skip to content

Лабораторные работы по "Бизнес логике программных систем"

Notifications You must be signed in to change notification settings

DiedCloud/blps-lab

Repository files navigation

BLPS lab

Spring boot приложение, реализация лабораторных работ по курсу "Бизнес логика программных систем".

Лабораторная 1

Вариант №117:

YouTube — почти заблокированный видеохостинг — https://www.youtube.com. Бизнес-процесс: управление и монетизация видео на канале, модерирование комментариев.

Задание:

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

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

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

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

Вариант №100:

Доработать приложение из лабораторной работы #1, реализовав в нем управление транзакциями и разграничение доступа к операциям бизнес-логики в соответствии с заданной политикой доступа.

Управление транзакциями необходимо реализовать следующим образом:

  • Переработать согласованные с преподавателем прецеденты (или по согласованию с ним разработать новые), объединив взаимозависимые операции в рамках транзакций.
  • Управление транзакциями необходимо реализовать с помощью Spring JTA.
  • В реализованных (или модифицированных) прецедентах необходимо использовать декларативное управление транзакциями.
  • В качестве менеджера транзакций необходимо использовать Atomikos.

Разграничение доступа к операциям необходимо реализовать следующим образом:

  • Разработать, специфицировать и согласовать с преподавателем набор привилегий, в соответствии с которыми будет разграничиваться доступ к операциям.
  • Специфицировать и согласовать с преподавателем набор ролей, осуществляющих доступ к операциям бизнес-логики приложения.
  • Реализовать разработанную модель разграничений доступа к операциям бизнес-логики на базе Spring Security. Информацию об учетных записях пользователей необходимо сохранять в реляционную базу данных, для аутентификации использовать JWT.

How to запустить на Helios

  1. Собираем jar ./gradlew bootJar и закидываем на Helios любым удобным способом
  2. Закидываем .env туда же
  3. Устанавливаем whisper-cli с моделью
  git clone https://github.com/ggml-org/whisper.cpp.git
  
  cd whisper.cpp
  
  sh ./models/download-ggml-model.sh base
  
  cmake -B build
  cmake --build build -j --config Release
  1. Заносим в PATH export PATH=${PATH}:/path_to_whisper_cli
  2. Устанавливаем ffmpeg fetch https://github.com/Thefrank/ffmpeg-static-freebsd/releases/download/v7.1/ffmpeg и тоже заносим в PATH
  3. Устанавливаем Minio
fetch https://pkg.freebsd.org/FreeBSD:14:amd64/latest/All/minio-2025.07.23.15.54.02_1.pkg
mv minio-2025.07.23.15.54.02_1.pkg minio-2025.07.23.15.54.02_1.tar.gz
tar -xf minio-2025.07.23.15.54.02_1.tar.gz
cp usr/local/bin/minio minio
chmod +x minio
  1. Запускаем и создаем бакеты videos и transcriptions через WebUI
mkdir data
minio server ./data
  1. Прокидываем порты
ssh -R 5432:localhost:5432 sXXXXXX@helios.se.ifmo.ru -p 2222
ssh -L 8080:localhost:8080 sXXXXXX@helios.se.ifmo.ru -p 2222
ssh -L minioadminport:localhost:miniadminport sXXXXXX@helios.se.ifmo.ru -p 2222 # minioadminport генерируется при запуске minio server в логах
  1. Запускаем приложение env $(cat .env | xargs) java -jar blps.jar

Лабораторная 3

Вариант 3233

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

Требования к реализации асинхронной обработки:

  • Перед выполнением работы неободимо согласовать с преподавателем набор прецедентов, в реализации которых целесообразно использование асинхронного распределённого выполнения задач. Если таких прецедентов использования в имеющейся бизнес-процесса нет, нужно согласовать реализацию новых прецедентов, доработав таким образом модель бизнес-процесса из лабораторной работы #1.
  • Асинхронное выполнение задач должно использовать модель доставки "очередь сообщений".
  • В качестве провайдера сервиса асинхронного обмена сообщениями необходимо использовать очередь сообщений на базе RabbitMQ.
  • Для отправки сообщений необходимо использовать протокол AMQP 0-9-1. Библиотеку для реализации отправки сообщений можно взять любую на выбор студента.
  • Для получения сообщений необходимо использовать JMS API.

Требования к реализации распределённой обработки:

  • Обработка сообщений должна осуществляться на двух независимых друг от друга узлах сервера приложений.
  • Если логика сценария распределённой обработки предполагает транзакционность выполняемых операций, они должны быть включены в состав распределённой транзакции.

Требования к реализации запуска периодических задач по расписанию:

  • Согласовать с преподавателем прецедент или прецеденты, в рамках которых выглядит целесообразным использовать планировщик задач. Если такие прецеденты отсутствуют -- согласовать с преподавателем новые и добавить их в модель автоматизируемого бизнес-процесса.
  • Реализовать утверждённые прецеденты с использованием планировщика задач Spring (@Scheduled).

Требования к интеграции с внешней Корпоративной Информационной Системой (EIS):

  • Корпоративная Информационная Cистема, с которой производится интеграция, а также её функциональные возможности выбираются на усмотрение преподавателя и согласуются с ним.
  • Взаимодействие с внешней Копроративной Информационной Системой должно быть реализовано с помощью технологии JCA (Jakarta Connectors).

How to запустить docker-compose?

В resources приложения transcriptions необходимо добавить модель из предыдущей лабораторной и указать её тип (например, base) в .env

Остальные переменные из .env.example тоже нужно заполнить. Файл .env должен автоматически подтянуться в docker-compose.

docker-compose up --build --scale transcriptions=2

Если этого не произошло, можно указать .env файл вручную.

docker-compose up --build --scale transcriptions=2 --env-file .env

About

Лабораторные работы по "Бизнес логике программных систем"

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •