65 lines
1.1 KiB
Plaintext
65 lines
1.1 KiB
Plaintext
@startuml
|
|
!define DARK_BLUE #264653
|
|
!define ORANGE #F4A261
|
|
!define YELLOW #E9C46A
|
|
!define LIGHT_BLUE #2A9D8F
|
|
|
|
skinparam class {
|
|
BackgroundColor DARK_BLUE
|
|
ArrowColor DARK_BLUE
|
|
BorderColor DARK_BLUE
|
|
FontColor WHITE
|
|
}
|
|
|
|
skinparam arrow {
|
|
Color DARK_BLUE
|
|
}
|
|
|
|
' Définition des classes
|
|
class Employee {
|
|
+ name : String
|
|
+ skills : Set<Skill>
|
|
}
|
|
|
|
class BloodDrive {
|
|
+ id : UUID
|
|
+ location : String
|
|
+ date : LocalDate
|
|
--
|
|
+ <<transient>> shifts : List<Shift>
|
|
}
|
|
|
|
class Shift {
|
|
+ id : UUID
|
|
+ start : LocalDateTime
|
|
+ end : LocalDateTime
|
|
+ requiredSkill : Skill
|
|
}
|
|
|
|
enum Skill {
|
|
+ NURSE
|
|
+ DOCTOR
|
|
+ DRIVER
|
|
+ RECEPTIONIST
|
|
}
|
|
|
|
' Définition des relations
|
|
BloodDrive "1" --> "1..*" Shift : <<compose>>
|
|
Shift "1" --> "1" Employee : <<assigned to>>
|
|
Shift "1" --> "1" Skill : <<requires>>
|
|
Employee "1" -- "0..*" Shift : <<is assigned to>>
|
|
Employee "1" -- "0..*" Skill : <<has>>
|
|
|
|
' Notes explicatives
|
|
note top of BloodDrive
|
|
Nouvelle entité pour regrouper
|
|
tous les shifts d'une même collecte.
|
|
end note
|
|
|
|
note top of Shift
|
|
Chaque rôle (infirmier, médecin)
|
|
est un shift distinct avec ses propres horaires.
|
|
end note
|
|
|
|
@enduml
|