/business-logic-of-software-systems

Moved from another repository and refactored

Primary LanguageJava

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

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

Вариант 1902: МИР КВАРТИР - недвижимость без границ - http://mirkvartir.ru/

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

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

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

Вариант 1232

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

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

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

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

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

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

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

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

Вариант 1232

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

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

  1. Перед выполнением работы неободимо согласовать с преподавателем набор прецедентов, в реализации которых целесообразно использование асинхронного распределённого выполнения задач. Если таких прецедентов использования в имеющейся бизнес-процесса нет, нужно согласовать реализацию новых прецедентов, доработав таким образом модель бизнес-процесса из лабораторной работы #1.
  2. Асинхронное выполнение задач должно использовать модель доставки "очередь сообщений".
  3. В качестве провайдера сервиса асинхронного обмена сообщениями необходимо использовать очередь сообщений на базе RabbitMQ.
  4. Для отправки сообщений необходимо использовать протокол MQTT. Библиотеку для реализации отправки сообщений можно взять любую на выбор студента.
  5. Для получения сообщений необходимо использовать слушателя сообщений JMS на базе Spring Boot (@JmsListener).

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

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

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

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

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

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

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

Вариант 1915

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

  1. Для управления бизнес-процессом использовать BPM-движок Camunda.
  2. Заменить всю "статическую" бизнес-логику на "динамическую" на базе BPMS. Весь бизнес-процесс, реализованный в ходе выполнения предыдущих лабораторных работ (включая разграничение доступа по ролям, управление транзакциями, асинхронную обработку и периодические задачи), должен быть сохранён!.
  3. BPM-движок должен быть запущен в режиме standalone-сервиса.
  4. Для описания бизнес-процесса необходимо использовать приложение Camunda Modeler.
  5. Пользовательский интерфейс приложения должен быть сгенерирован с помощью генератора форм Camunda.
  6. Итоговая сборка должно быть развёрнута на сервере helios под управление сервера приложений WildFly.

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

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