Описание сценария
Новый читатель (студент или член библиотеки) посещает онлайн-портал библиотеки для создания аккаунта. Он предоставляет личные данные (имя, электронная почта, пароль), система проверяет уникальность (например, электронная почта еще не зарегистрирована), создает аккаунт в базе данных и отправляет приветственное/активационное письмо. После успешной регистрации пользователь ищет книгу по названию/автору, просматривает наличие и бронирует ее, если она доступна (ставит резерв). Если книга недоступна, система предлагает уведомить, когда она станет доступной. Процесс завершается подтверждением на пользовательском интерфейсе.
Этот процесс характерен для университетских и публичных библиотечных систем и демонстрирует процесс регистрации пользователя и взаимодействие с основными ресурсами.
Ключевые понятия диаграмм последовательностей UML (Актуально для данного примера)
Жизненная линия — Вертикальная пунктирная линия для участников (например, :Пользователь, :Браузер, :Библиотечное приложение).
Сообщение — Стрелки для вызовов: синхронные (сплошные со сплошной головкой →), ответы (пунктирные <–), создание объекта (пунктирная стрелка к новой жизненной линии с «create»).
Блок активации — Показывает, когда объект выполняет обработку (активировать/деактивировать).
Фрагмент альтернативы — Условная логика (например, [регистрация успешна] против [почта уже существует]).
Фрагмент опциональности — Опциональное поведение (например, [пользователь выбирает забронировать сразу]).
Цикл — Для итеративных действий (например, уточнение поиска при отсутствии результатов).
Актер — Человеческий пользователь (рисунок фигурки).
Сообщения возврата — Пунктирные стрелки, несущие результаты обратно.
Время течет сверху вниз.
Участники (жизненные линии):
Читатель (актер)
Браузер (фронтенд/интерфейс пользователя)
Библиотечное приложение (уровень приложения/контроллер)
База данных пользователей (UserDB) (база данных для аккаунтов)
BookCatalog (база данных/служба для книг и бронирования)
EmailService (внешняя служба уведомлений)
Этот скрипт PlantUML полностью отражает исследуемый случай. Он включает создание учетной записи, проверку, отправку электронной почты, поиск/бронирование книги после регистрации с использованием alt для проверки доступности и опцию уведомления.
@startuml
название Диаграмма последовательности регистрации нового пользователя и бронирования книги в онлайн-библиотеке
skinparam monochrome true
skinparam shadowing false
skinparam sequenceMessageAlign center
autonumber “[0]”
актер Читатель
участник “Браузер” как UI
участник “LibraryApp” как App
участник “UserDB” как UserDB
участник “BookCatalog” как Catalog
участник “EmailService” как Email
Читатель -> UI: доступ к странице регистрации
активировать UI
UI -> App: submitRegistration(имя, электронная почта, пароль)
активировать App
App -> UserDB: checkEmailExists(электронная почта)
активировать UserDB
UserDB –> App: существует = false / true
деактивировать UserDB
alt Электронная почта уже существует
App –> UI: returnError(“Электронная почта уже зарегистрирована. Пожалуйста, войдите или используйте другую электронную почту.”)
UI –> Читатель: отобразить сообщение об ошибке
‘ Удалено: destroy App → не нужно + вызывало проблему парсера в ветке alt
иначе Регистрация допустима
App -> UserDB: createUserAccount(имя, электронная почта, хэшированный пароль)
активировать UserDB
UserDB –> App: userId, accountCreated
деактивировать UserDB
App -> Email: sendWelcomeEmail(userId, email, activationLink)
активировать Email
Email –> App: emailSent
деактивировать Email
App -> UI: returnSuccess(«Аккаунт создан! Проверьте электронную почту для активации.», userId)
UI –> Patron: Показать успех и перенаправить на вход/панель управления
‘ Последующая регистрация: поток бронирования книги
опт Пользователь переходит к бронированию книги
Пользователь -> UI: Поиск книги (название или автор)
UI -> App: searchBooks(запрос)
активировать App
App -> Catalog: queryBooks(запрос)
активировать Catalog
Catalog --> App: списокКниг (с доступностью)
деактивировать Catalog
альт Найдены книги
цикл Уточнить поиск при необходимости
App --> UI: displayResults(списокКниг)
UI --> Пользователь: Показать список книг
Пользователь -> UI: Выбрать книгу и запросить бронирование
UI -> App: reserveBook(idКниги, idПользователя)
конец
App -> Catalog: checkAvailability(idКниги)
Catalog --> App: доступно = true/false
альт Доступна
App -> Catalog: placeHold(idКниги, idПользователя, датаБронирования)
активировать Catalog
Catalog --> App: holdPlaced, idБронирования
деактивировать Catalog
App --> UI: displayConfirmation("Книга забронирована! Возьмите при наличии.")
UI --> Пользователь: Показать сообщение об успехе
иначе Не доступна
App --> UI: offerNotification("Книга недоступна. Уведомить, когда будет готова?")
Пользователь -> UI: Подтвердить уведомление
UI -> App: subscribeNotification(idКниги, idПользователя)
App -> Catalog: addToWaitlist(idКниги, idПользователя)
Catalog --> App: waitlistAdded
App --> UI: confirm("Уведомление установлено.")
конец
иначе Не найдено книг
App --> UI: displayNoResults("Нет совпадений. Попробуйте другие ключевые слова.")
конец
деактивировать App
конец
конец
деактивировать UI
@enduml
Как использовать этот код PlantUML
Вставьте в https://www.plantuml.com/plantuml/uml/ для мгновенного отображения.
В Visual Paradigm Desktop: Новая диаграмма последовательности → Инструменты → Импорт → PlantUML → вставить → сгенерировать и редактировать визуально.
В VP Online или AI чат-бот: Используйте как основу в запросах или импортируйте для улучшения ИИ.
Настройка: добавить цвета (skinparam sequenceArrowThickness 2), стереотипы участников (<<database>>), или удалить монохромный для стилизованного вывода.

Перейдите на chat.visual-paradigm.com.
Используйте подробный запрос (или вставьте код PlantUML выше как отправную точку):
Создайте диаграмму последовательности UML для онлайн-библиотеки: новый пользователь регистрируется с именем/электронной почтой/паролем, система проверяет уникальность электронной почты, создает учетную запись в базе данных, отправляет приветственное письмо. Затем пользователь ищет/резервирует книгу — если она доступна, ставит резерв, иначе предлагает уведомление о списке ожидания. Включите alt для дублирующейся электронной почты, opt для резервирования после регистрации, цикл для уточнения поиска.
AI выводит визуальную диаграмму + код PlantUML. Повторите:
«Добавьте полосы активности и заметки для операций с базой данных.»
«Сделайте BookCatalog внешним сервисом со стереотипом.»
Экспортируйте PlantUML для следующих шагов.
Запустите Visual Paradigm Desktop.
Создайте или импортируйте диаграмму последовательности (вставьте PlantUML → сгенерируйте).
Инструменты > Приложения > Инструмент уточнения диаграмм последовательности.
Запрос/уточнение: «Уточните эту последовательность регистрации/резервирования библиотеки до многоуровневой архитектуры: разделите слои UI/View, Controller, Service (например, UserService, ReservationService), Repository/DB.»
AI расширяет линии жизни (например, LibraryApp → RegistrationController → UserService → UserRepository; добавляет детальные вызовы, такие как hashPassword(), validateInput()).
Редактирование: добавьте заметки, стереотипы (<>, <>), настройте фрагменты.
Доступonline.visual-paradigm.com → Создать страницу OpenDocs («Система библиотеки — Онбординг и бронирование»).
Вставить диаграмму: используйте генерацию с помощью ИИ или импортируйте PlantUML/улучшенную версию.
Вставить: добавьте текстовые разделы (описание использования, предусловия, например, «пользователь не авторизован», постусловия «учетная запись активна + бронирование оформлено»).
Поделиться: пригласите команду для комментариев, отслеживайте версии.
В настольной версии: улучшите компоновку (автоподбор), включите иерархическую нумерацию, добавьте типы возвращаемых значений (например, :User user).
Связать модели: отследить до диаграммы случаев использования («Зарегистрировать нового читателя», «Забронировать книгу»).
Экспорт: PNG/PDF для спецификаций, .vpp проект для контроля версий.
Новый пример исследования предлагает свежий, ориентированный на образование пример, одновременно демонстрируя инструменты ИИ Visual Paradigm для быстрого и точного моделирования UML. Отобразите код PlantUML, чтобы сразу увидеть результат — если хотите варианты (например, добавить шаг утверждения библиотекаря), просто попросите!
