Загрузка данных
.
[Пересланное сообщение]
Макс Миля, 18 сентября в 13:48
@startuml
actor "Пользователь" as User
boundary "Интерфейс приложения" as Interface
control "Менеджер доступа" as AccessManager
database "База данных" as Database
loop Пока авторизация не выполнена и количество попыток меньше 3
activate User
User -> Interface : Ввести логин и пароль
deactivate User
activate Interface
Interface -> AccessManager : Передать данные для авторизации
activate AccessManager
AccessManager -> Database : Проверить логин и пароль
activate Database
Database --> AccessManager : Результат проверки\nучетных данных
deactivate Database
alt Учетные данные верны
AccessManager -> Database : Сбросить счетчик\nнеудачных попыток входа
activate Database
Database --> AccessManager : Счетчик сброшен
deactivate Database
AccessManager --> Interface : Авторизация успешна
else Учетные данные неверны
AccessManager -> Database : Увеличить счетчик последовательных\nнеудачных попыток входа
activate Database
Database --> AccessManager : Количество неудачных попыток
deactivate Database
AccessManager --> Interface : Авторизация не выполнена\nи количество неудачных попыток
Interface --> User : Сообщить об ошибке и количестве\nоставшихся попыток
activate User
deactivate User
end
deactivate AccessManager
deactivate Interface
end
break Три неправильные попытки подряд
activate AccessManager
AccessManager -> Database : Заблокировать доступ пользователя
activate Database
Database --> AccessManager : Доступ заблокирован
deactivate Database
AccessManager --> Interface : Сообщить о блокировке доступа
deactivate AccessManager
activate Interface
Interface --> User : Оповестить о блокировке доступа
activate User
deactivate User
deactivate Interface
end
activate Interface
Interface -> AccessManager : Запросить список доступных книг
activate AccessManager
AccessManager -> Database : Получить доступные\nпользователю книги
activate Database
Database --> AccessManager : Список доступных книг
deactivate Database
AccessManager --> Interface : Список доступных книг
deactivate AccessManager
Interface --> User : Отобразить список доступных книг
deactivate Interface
activate User
alt Выбрана одна книга
User -> Interface : Выбрать книгу
else Выбрана серия книг
User -> Interface : Выбрать серию книг
end
deactivate User
activate Interface
loop Для каждой выбранной книги
Interface -> AccessManager : Запросить скачивание книги
activate AccessManager
AccessManager -> Database : Получить файл книги
activate Database
Database --> AccessManager : Файл книги
deactivate Database
AccessManager -> Database : Увеличить количество\nскачанных пользователем книг
activate Database
Database --> AccessManager : Общее количество\nскачанных книг
deactivate Database
AccessManager --> Interface : Файл книги и общее количество\nскачанных книг
deactivate AccessManager
Interface --> User : Передать файл книги
activate User
deactivate User
opt Общее количество скачанных книг равно 101
Interface -> AccessManager : Передать данные о получении\nдостижения «Книжник»
activate AccessManager
AccessManager -> Database : Сохранить достижение «Книжник»\nв данных пользователя
activate Database
Database --> AccessManager : Достижение сохранено
deactivate Database
AccessManager --> Interface : Подтвердить сохранение достижения
deactivate AccessManager
Interface --> User : Оповестить о получении\nдостижения «Книжник»
activate User
deactivate User
end
end
deactivate Interface
@enduml