lti-provider/docs/class-diagram.puml

146 lines
3.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@startuml LTI Provider
' Настройка для A4 портретной ориентации с ГОСТ отступами (3см слева)
skinparam dpi 150
skinparam defaultFontSize 10
skinparam class {
BackgroundColor<<Controller>> LightBlue
BackgroundColor<<Service>> LightGreen
BackgroundColor<<Entity>> Wheat
BackgroundColor<<Infrastructure>> LightSalmon
FontSize 10
}
skinparam packageStyle rectangle
skinparam linetype polyline
' Слой Controllers - верх по центру
package "Controller Layer" {
class LaunchController <<Controller>> {
+ login()
+ redirect()
}
class TaskController <<Controller>> {
+ getTask()
+ updateTask()
+ submitTask()
}
}
' Левая колонка - Service/Repository/Infrastructure
package "Service Layer" {
class TaskServiceImpl <<Service>> {
+ getTask(UUID): TaskData
+ saveTask(RequestUpdateTask)
+ checkTask(ResultRequest)
}
class JwtService <<Service>> {
+ getPayload(jwt): Payload
+ getTokenPayload(jwt): IdTokenPayload
}
class HistoryService <<Service>> {
+ logEvent()
+ logAction()
}
}
package "Repository Layer" {
interface LMSContentRepository {
+ getLMSContentByContentUuid()
}
interface HistoryRepository {
+ findByContentUuid()
+ findByDeploymentId()
}
}
package "Infrastructure Layer" {
class LMSService <<Infrastructure>> {
+ ltiAuth()
+ exchangeForAccessToken()
}
class Runner <<Infrastructure>> {
+ run(userId, script)
+ check(userId, script)
}
}
' Правая колонка - Entity/Domain
package "Entity Layer" {
class LMSContent <<Entity>> {
- id: long
- contentUuid: UUID
- deploymentId: UUID
- task: Task
}
class Task <<Entity>> {
- id: long
- name: String
- description: String
- initScript: String
- verificationScript: String
- deleteScript: String
}
class History <<Entity>> {
- id: long
- contentUuid: UUID
- message: String
}
}
package "Domain Models" {
class TaskData {
- name: String
- description: String
- initScript: String
- verificationScript: String
- deleteScript: String
}
}
' Вертикальное выравнивание левой колонки
"Controller Layer" -[hidden]down- "Service Layer"
"Service Layer" -[hidden]down- "Repository Layer"
"Repository Layer" -[hidden]down- "Infrastructure Layer"
' Вертикальное выравнивание правой колонки
"Entity Layer" -[hidden]down- "Domain Models"
' Горизонтальное расположение колонок
"Service Layer" -[hidden]right- "Entity Layer"
"Repository Layer" -[hidden]right- "Entity Layer"
"Infrastructure Layer" -[hidden]right- "Domain Models"
' Связи Controllers -> Services
LaunchController --> JwtService
LaunchController --> LMSService
LaunchController --> HistoryService
TaskController --> TaskServiceImpl
TaskController --> HistoryService
' Связи Services -> Infrastructure/Repository
TaskServiceImpl --> LMSContentRepository
TaskServiceImpl --> Runner
TaskServiceImpl --> LMSService
TaskServiceImpl --> HistoryService
TaskServiceImpl ..> TaskData
Runner --> HistoryService
' Связи Repository -> Entity
LMSContentRepository ..> LMSContent
HistoryRepository ..> History
' Связи Entity
LMSContent "*" --> "1" Task
@enduml