docs: Ajout MCD UnionFlow en format PlantUML
Modèle Conceptuel de Données complet avec: - 9 entités JPA (BaseEntity + 8 entités métier) - Tous les attributs avec contraintes (PK, FK, unique, not null, etc.) - Relations JPA (@ManyToOne, @OneToMany) - Enums (TypeEvenement, StatutEvenement, StatutInscription, TypeAide, StatutAide) - Notes explicatives sur les règles métier - Hiérarchie Organisation (auto-référence) - Génération automatique de champs Format PlantUML pour visualisation avec outils UML.
This commit is contained in:
480
MCD_UNIONFLOW.puml
Normal file
480
MCD_UNIONFLOW.puml
Normal file
@@ -0,0 +1,480 @@
|
|||||||
|
@startuml MCD_UnionFlow
|
||||||
|
!theme plain
|
||||||
|
skinparam linetype ortho
|
||||||
|
skinparam packageStyle rectangle
|
||||||
|
skinparam classAttributeIconSize 0
|
||||||
|
|
||||||
|
title Modèle Conceptuel de Données - UnionFlow
|
||||||
|
|
||||||
|
' ============================================
|
||||||
|
' ENTITÉS DE BASE
|
||||||
|
' ============================================
|
||||||
|
|
||||||
|
abstract class BaseEntity {
|
||||||
|
{abstract} --
|
||||||
|
+ {PK} id : UUID <<generated>>
|
||||||
|
+ dateCreation : LocalDateTime <<not null>>
|
||||||
|
+ dateModification : LocalDateTime
|
||||||
|
+ creePar : String
|
||||||
|
+ modifiePar : String
|
||||||
|
+ version : Long <<version>>
|
||||||
|
+ actif : Boolean <<not null, default=true>>
|
||||||
|
--
|
||||||
|
+ onCreate() : void <<@PrePersist>>
|
||||||
|
+ onUpdate() : void <<@PreUpdate>>
|
||||||
|
}
|
||||||
|
|
||||||
|
' ============================================
|
||||||
|
' ENTITÉS MÉTIER
|
||||||
|
' ============================================
|
||||||
|
|
||||||
|
class Organisation {
|
||||||
|
+ {PK} id : UUID <<inherited>>
|
||||||
|
+ dateCreation : LocalDateTime <<inherited>>
|
||||||
|
+ dateModification : LocalDateTime <<inherited>>
|
||||||
|
+ creePar : String <<inherited>>
|
||||||
|
+ modifiePar : String <<inherited>>
|
||||||
|
+ version : Long <<inherited>>
|
||||||
|
+ actif : Boolean <<inherited>>
|
||||||
|
--
|
||||||
|
+ nom : String <<not null, length=200>>
|
||||||
|
+ nomCourt : String <<length=50>>
|
||||||
|
+ typeOrganisation : String <<not null, length=50>>
|
||||||
|
+ statut : String <<not null, length=50>>
|
||||||
|
+ description : String <<length=2000>>
|
||||||
|
+ dateFondation : LocalDate
|
||||||
|
+ numeroEnregistrement : String <<unique, length=100>>
|
||||||
|
--
|
||||||
|
' Contact
|
||||||
|
+ email : String <<unique, not null, length=255>>
|
||||||
|
+ telephone : String <<length=20>>
|
||||||
|
+ telephoneSecondaire : String <<length=20>>
|
||||||
|
+ emailSecondaire : String <<length=255>>
|
||||||
|
--
|
||||||
|
' Adresse
|
||||||
|
+ adresse : String <<length=500>>
|
||||||
|
+ ville : String <<length=100>>
|
||||||
|
+ codePostal : String <<length=20>>
|
||||||
|
+ region : String <<length=100>>
|
||||||
|
+ pays : String <<length=100>>
|
||||||
|
+ latitude : BigDecimal <<precision=9,scale=6>>
|
||||||
|
+ longitude : BigDecimal <<precision=9,scale=6>>
|
||||||
|
--
|
||||||
|
' Web
|
||||||
|
+ siteWeb : String <<length=500>>
|
||||||
|
+ logo : String <<length=500>>
|
||||||
|
+ reseauxSociaux : String <<length=1000>>
|
||||||
|
--
|
||||||
|
' Hiérarchie
|
||||||
|
+ organisationParenteId : UUID
|
||||||
|
+ niveauHierarchique : Integer <<not null, default=0>>
|
||||||
|
--
|
||||||
|
' Statistiques
|
||||||
|
+ nombreMembres : Integer <<not null, default=0>>
|
||||||
|
+ nombreAdministrateurs : Integer <<not null, default=0>>
|
||||||
|
--
|
||||||
|
' Finances
|
||||||
|
+ budgetAnnuel : BigDecimal <<precision=14,scale=2>>
|
||||||
|
+ devise : String <<length=3, default=XOF>>
|
||||||
|
+ cotisationObligatoire : Boolean <<not null, default=false>>
|
||||||
|
+ montantCotisationAnnuelle : BigDecimal <<precision=12,scale=2>>
|
||||||
|
--
|
||||||
|
' Compléments
|
||||||
|
+ objectifs : String <<length=2000>>
|
||||||
|
+ activitesPrincipales : String <<length=2000>>
|
||||||
|
+ certifications : String <<length=500>>
|
||||||
|
+ partenaires : String <<length=1000>>
|
||||||
|
+ notes : String <<length=1000>>
|
||||||
|
+ organisationPublique : Boolean <<not null, default=true>>
|
||||||
|
+ accepteNouveauxMembres : Boolean <<not null, default=true>>
|
||||||
|
--
|
||||||
|
+ getNomComplet() : String
|
||||||
|
+ getAncienneteAnnees() : int
|
||||||
|
+ isRecente() : boolean
|
||||||
|
+ isActive() : boolean
|
||||||
|
+ ajouterMembre() : void
|
||||||
|
+ retirerMembre() : void
|
||||||
|
+ activer(String utilisateur) : void
|
||||||
|
+ suspendre(String utilisateur) : void
|
||||||
|
+ dissoudre(String utilisateur) : void
|
||||||
|
}
|
||||||
|
|
||||||
|
class Membre {
|
||||||
|
+ {PK} id : UUID <<inherited>>
|
||||||
|
+ dateCreation : LocalDateTime <<inherited>>
|
||||||
|
+ dateModification : LocalDateTime <<inherited>>
|
||||||
|
+ creePar : String <<inherited>>
|
||||||
|
+ modifiePar : String <<inherited>>
|
||||||
|
+ version : Long <<inherited>>
|
||||||
|
+ actif : Boolean <<inherited>>
|
||||||
|
--
|
||||||
|
+ numeroMembre : String <<unique, not null, length=20>>
|
||||||
|
+ prenom : String <<not null, length=100>>
|
||||||
|
+ nom : String <<not null, length=100>>
|
||||||
|
+ email : String <<unique, not null, length=255>>
|
||||||
|
+ motDePasse : String <<length=255>>
|
||||||
|
+ telephone : String <<length=20>>
|
||||||
|
+ dateNaissance : LocalDate <<not null>>
|
||||||
|
+ dateAdhesion : LocalDate <<not null>>
|
||||||
|
+ roles : String <<length=500>>
|
||||||
|
--
|
||||||
|
+ getNomComplet() : String
|
||||||
|
+ isMajeur() : boolean
|
||||||
|
+ getAge() : int
|
||||||
|
}
|
||||||
|
|
||||||
|
class TypeOrganisationEntity {
|
||||||
|
+ {PK} id : UUID <<inherited>>
|
||||||
|
+ dateCreation : LocalDateTime <<inherited>>
|
||||||
|
+ dateModification : LocalDateTime <<inherited>>
|
||||||
|
+ creePar : String <<inherited>>
|
||||||
|
+ modifiePar : String <<inherited>>
|
||||||
|
+ version : Long <<inherited>>
|
||||||
|
+ actif : Boolean <<inherited>>
|
||||||
|
--
|
||||||
|
+ code : String <<unique, not null, length=50>>
|
||||||
|
+ libelle : String <<not null, length=150>>
|
||||||
|
+ description : String <<length=500>>
|
||||||
|
+ ordreAffichage : Integer
|
||||||
|
}
|
||||||
|
|
||||||
|
class Cotisation {
|
||||||
|
+ {PK} id : UUID <<inherited>>
|
||||||
|
+ dateCreation : LocalDateTime <<inherited>>
|
||||||
|
+ dateModification : LocalDateTime <<inherited>>
|
||||||
|
+ creePar : String <<inherited>>
|
||||||
|
+ modifiePar : String <<inherited>>
|
||||||
|
+ version : Long <<inherited>>
|
||||||
|
+ actif : Boolean <<inherited>>
|
||||||
|
--
|
||||||
|
+ numeroReference : String <<unique, not null, length=50>>
|
||||||
|
+ typeCotisation : String <<not null, length=50>>
|
||||||
|
+ montantDu : BigDecimal <<not null, precision=12,scale=2>>
|
||||||
|
+ montantPaye : BigDecimal <<not null, default=0, precision=12,scale=2>>
|
||||||
|
+ codeDevise : String <<not null, length=3, pattern=^[A-Z]{3}$>>
|
||||||
|
+ statut : String <<not null, length=30>>
|
||||||
|
+ dateEcheance : LocalDate <<not null>>
|
||||||
|
+ datePaiement : LocalDateTime
|
||||||
|
+ description : String <<length=500>>
|
||||||
|
+ periode : String <<length=20>>
|
||||||
|
+ annee : Integer <<not null, min=2020, max=2100>>
|
||||||
|
+ mois : Integer <<min=1, max=12>>
|
||||||
|
+ observations : String <<length=1000>>
|
||||||
|
+ recurrente : Boolean <<not null, default=false>>
|
||||||
|
+ nombreRappels : Integer <<not null, default=0>>
|
||||||
|
+ dateDernierRappel : LocalDateTime
|
||||||
|
+ valideParId : UUID
|
||||||
|
+ nomValidateur : String <<length=100>>
|
||||||
|
+ dateValidation : LocalDateTime
|
||||||
|
+ methodePaiement : String <<length=50>>
|
||||||
|
+ referencePaiement : String <<length=100>>
|
||||||
|
--
|
||||||
|
+ getMontantRestant() : BigDecimal
|
||||||
|
+ isEntierementPayee() : boolean
|
||||||
|
+ isEnRetard() : boolean
|
||||||
|
+ genererNumeroReference() : String <<static>>
|
||||||
|
}
|
||||||
|
|
||||||
|
class Adhesion {
|
||||||
|
+ {PK} id : UUID <<inherited>>
|
||||||
|
+ dateCreation : LocalDateTime <<inherited>>
|
||||||
|
+ dateModification : LocalDateTime <<inherited>>
|
||||||
|
+ creePar : String <<inherited>>
|
||||||
|
+ modifiePar : String <<inherited>>
|
||||||
|
+ version : Long <<inherited>>
|
||||||
|
+ actif : Boolean <<inherited>>
|
||||||
|
--
|
||||||
|
+ numeroReference : String <<unique, not null, length=50>>
|
||||||
|
+ dateDemande : LocalDate <<not null>>
|
||||||
|
+ fraisAdhesion : BigDecimal <<not null, precision=12,scale=2>>
|
||||||
|
+ montantPaye : BigDecimal <<not null, default=0, precision=12,scale=2>>
|
||||||
|
+ codeDevise : String <<not null, length=3, pattern=^[A-Z]{3}$>>
|
||||||
|
+ statut : String <<not null, length=30>>
|
||||||
|
+ dateApprobation : LocalDate
|
||||||
|
+ datePaiement : LocalDateTime
|
||||||
|
+ methodePaiement : String <<length=20>>
|
||||||
|
+ referencePaiement : String <<length=100>>
|
||||||
|
+ motifRejet : String <<length=1000>>
|
||||||
|
+ observations : String <<length=1000>>
|
||||||
|
+ approuvePar : String <<length=255>>
|
||||||
|
+ dateValidation : LocalDate
|
||||||
|
--
|
||||||
|
+ isPayeeIntegralement() : boolean
|
||||||
|
+ isEnAttentePaiement() : boolean
|
||||||
|
+ getMontantRestant() : BigDecimal
|
||||||
|
}
|
||||||
|
|
||||||
|
class Evenement {
|
||||||
|
+ {PK} id : UUID <<inherited>>
|
||||||
|
+ dateCreation : LocalDateTime <<inherited>>
|
||||||
|
+ dateModification : LocalDateTime <<inherited>>
|
||||||
|
+ creePar : String <<inherited>>
|
||||||
|
+ modifiePar : String <<inherited>>
|
||||||
|
+ version : Long <<inherited>>
|
||||||
|
+ actif : Boolean <<inherited>>
|
||||||
|
--
|
||||||
|
+ titre : String <<not null, length=200>>
|
||||||
|
+ description : String <<length=2000>>
|
||||||
|
+ dateDebut : LocalDateTime <<not null>>
|
||||||
|
+ dateFin : LocalDateTime
|
||||||
|
+ lieu : String <<length=500>>
|
||||||
|
+ adresse : String <<length=1000>>
|
||||||
|
+ typeEvenement : TypeEvenement <<enum>>
|
||||||
|
+ statut : StatutEvenement <<enum, not null, default=PLANIFIE>>
|
||||||
|
+ capaciteMax : Integer <<min=0>>
|
||||||
|
+ prix : BigDecimal <<precision=10,scale=2>>
|
||||||
|
+ inscriptionRequise : Boolean <<not null, default=false>>
|
||||||
|
+ dateLimiteInscription : LocalDateTime
|
||||||
|
+ instructionsParticulieres : String <<length=1000>>
|
||||||
|
+ contactOrganisateur : String <<length=500>>
|
||||||
|
+ materielRequis : String <<length=2000>>
|
||||||
|
+ visiblePublic : Boolean <<not null, default=true>>
|
||||||
|
--
|
||||||
|
+ isOuvertAuxInscriptions() : boolean
|
||||||
|
+ getNombreInscrits() : int
|
||||||
|
+ isComplet() : boolean
|
||||||
|
+ isEnCours() : boolean
|
||||||
|
+ isTermine() : boolean
|
||||||
|
+ getDureeEnHeures() : Long
|
||||||
|
+ getPlacesRestantes() : Integer
|
||||||
|
+ isMemberInscrit(UUID membreId) : boolean
|
||||||
|
+ getTauxRemplissage() : Double
|
||||||
|
}
|
||||||
|
|
||||||
|
class InscriptionEvenement {
|
||||||
|
+ {PK} id : UUID <<inherited>>
|
||||||
|
+ dateCreation : LocalDateTime <<inherited>>
|
||||||
|
+ dateModification : LocalDateTime <<inherited>>
|
||||||
|
+ creePar : String <<inherited>>
|
||||||
|
+ modifiePar : String <<inherited>>
|
||||||
|
+ version : Long <<inherited>>
|
||||||
|
+ actif : Boolean <<inherited>>
|
||||||
|
--
|
||||||
|
+ dateInscription : LocalDateTime <<not null, default=now()>>
|
||||||
|
+ statut : StatutInscription <<enum, default=CONFIRMEE>>
|
||||||
|
+ commentaire : String <<length=500>>
|
||||||
|
--
|
||||||
|
+ isConfirmee() : boolean
|
||||||
|
+ isEnAttente() : boolean
|
||||||
|
+ isAnnulee() : boolean
|
||||||
|
+ confirmer() : void
|
||||||
|
+ annuler(String commentaire) : void
|
||||||
|
+ mettreEnAttente(String commentaire) : void
|
||||||
|
+ refuser(String commentaire) : void
|
||||||
|
}
|
||||||
|
|
||||||
|
class DemandeAide {
|
||||||
|
+ {PK} id : UUID <<inherited>>
|
||||||
|
+ dateCreation : LocalDateTime <<inherited>>
|
||||||
|
+ dateModification : LocalDateTime <<inherited>>
|
||||||
|
+ creePar : String <<inherited>>
|
||||||
|
+ modifiePar : String <<inherited>>
|
||||||
|
+ version : Long <<inherited>>
|
||||||
|
+ actif : Boolean <<inherited>>
|
||||||
|
--
|
||||||
|
+ titre : String <<not null, length=200>>
|
||||||
|
+ description : String <<not null, TEXT>>
|
||||||
|
+ typeAide : TypeAide <<enum, not null>>
|
||||||
|
+ statut : StatutAide <<enum, not null>>
|
||||||
|
+ montantDemande : BigDecimal <<precision=10,scale=2>>
|
||||||
|
+ montantApprouve : BigDecimal <<precision=10,scale=2>>
|
||||||
|
+ dateDemande : LocalDateTime <<not null>>
|
||||||
|
+ dateEvaluation : LocalDateTime
|
||||||
|
+ dateVersement : LocalDateTime
|
||||||
|
+ justification : String <<TEXT>>
|
||||||
|
+ commentaireEvaluation : String <<TEXT>>
|
||||||
|
+ urgence : Boolean <<not null, default=false>>
|
||||||
|
+ documentsFournis : String
|
||||||
|
--
|
||||||
|
+ isEnAttente() : boolean
|
||||||
|
+ isApprouvee() : boolean
|
||||||
|
+ isRejetee() : boolean
|
||||||
|
+ isUrgente() : boolean
|
||||||
|
+ getPourcentageApprobation() : BigDecimal
|
||||||
|
}
|
||||||
|
|
||||||
|
class AuditLog {
|
||||||
|
+ {PK} id : UUID <<inherited>>
|
||||||
|
+ dateCreation : LocalDateTime <<inherited>>
|
||||||
|
+ dateModification : LocalDateTime <<inherited>>
|
||||||
|
+ creePar : String <<inherited>>
|
||||||
|
+ modifiePar : String <<inherited>>
|
||||||
|
+ version : Long <<inherited>>
|
||||||
|
+ actif : Boolean <<inherited>>
|
||||||
|
--
|
||||||
|
+ typeAction : String <<not null, length=50>>
|
||||||
|
+ severite : String <<not null, length=20>>
|
||||||
|
+ utilisateur : String <<length=255>>
|
||||||
|
+ role : String <<length=50>>
|
||||||
|
+ module : String <<length=50>>
|
||||||
|
+ description : String <<length=500>>
|
||||||
|
+ details : String <<TEXT>>
|
||||||
|
+ ipAddress : String <<length=45>>
|
||||||
|
+ userAgent : String <<length=500>>
|
||||||
|
+ sessionId : String <<length=255>>
|
||||||
|
+ dateHeure : LocalDateTime <<not null>>
|
||||||
|
+ donneesAvant : String <<TEXT>>
|
||||||
|
+ donneesApres : String <<TEXT>>
|
||||||
|
+ entiteId : String <<length=255>>
|
||||||
|
+ entiteType : String <<length=100>>
|
||||||
|
}
|
||||||
|
|
||||||
|
' ============================================
|
||||||
|
' ENUMS
|
||||||
|
' ============================================
|
||||||
|
|
||||||
|
enum TypeEvenement {
|
||||||
|
ASSEMBLEE_GENERALE
|
||||||
|
REUNION
|
||||||
|
FORMATION
|
||||||
|
CONFERENCE
|
||||||
|
ATELIER
|
||||||
|
SEMINAIRE
|
||||||
|
EVENEMENT_SOCIAL
|
||||||
|
MANIFESTATION
|
||||||
|
CELEBRATION
|
||||||
|
AUTRE
|
||||||
|
}
|
||||||
|
|
||||||
|
enum StatutEvenement {
|
||||||
|
PLANIFIE
|
||||||
|
CONFIRME
|
||||||
|
EN_COURS
|
||||||
|
TERMINE
|
||||||
|
ANNULE
|
||||||
|
REPORTE
|
||||||
|
}
|
||||||
|
|
||||||
|
enum StatutInscription {
|
||||||
|
CONFIRMEE
|
||||||
|
EN_ATTENTE
|
||||||
|
ANNULEE
|
||||||
|
REFUSEE
|
||||||
|
}
|
||||||
|
|
||||||
|
enum TypeAide {
|
||||||
|
FINANCIERE
|
||||||
|
MATERIELLE
|
||||||
|
ALIMENTAIRE
|
||||||
|
MEDICALE
|
||||||
|
SCOLAIRE
|
||||||
|
LOGEMENT
|
||||||
|
EMPLOI
|
||||||
|
FORMATION
|
||||||
|
AUTRE
|
||||||
|
}
|
||||||
|
|
||||||
|
enum StatutAide {
|
||||||
|
BROUILLON
|
||||||
|
SOUMISE
|
||||||
|
EN_ATTENTE
|
||||||
|
EN_COURS_EVALUATION
|
||||||
|
INFORMATIONS_REQUISES
|
||||||
|
APPROUVEE
|
||||||
|
APPROUVEE_PARTIELLEMENT
|
||||||
|
EN_COURS_TRAITEMENT
|
||||||
|
EN_COURS_VERSEMENT
|
||||||
|
VERSEE
|
||||||
|
LIVREE
|
||||||
|
TERMINEE
|
||||||
|
REJETEE
|
||||||
|
ANNULEE
|
||||||
|
EXPIREE
|
||||||
|
SUSPENDUE
|
||||||
|
EN_SUIVI
|
||||||
|
CLOTUREE
|
||||||
|
}
|
||||||
|
|
||||||
|
' ============================================
|
||||||
|
' RELATIONS
|
||||||
|
' ============================================
|
||||||
|
|
||||||
|
BaseEntity <|-- Organisation
|
||||||
|
BaseEntity <|-- Membre
|
||||||
|
BaseEntity <|-- TypeOrganisationEntity
|
||||||
|
BaseEntity <|-- Cotisation
|
||||||
|
BaseEntity <|-- Adhesion
|
||||||
|
BaseEntity <|-- Evenement
|
||||||
|
BaseEntity <|-- InscriptionEvenement
|
||||||
|
BaseEntity <|-- DemandeAide
|
||||||
|
BaseEntity <|-- AuditLog
|
||||||
|
|
||||||
|
' Relations Organisation
|
||||||
|
Organisation "1" *-- "0..*" Membre : "appartient à"
|
||||||
|
Organisation "0..1" --o "0..*" Organisation : "parente >\n(organisationParenteId)"
|
||||||
|
|
||||||
|
' Relations Membre
|
||||||
|
Membre "1" *-- "0..*" Cotisation : "a des"
|
||||||
|
Membre "1" *-- "0..*" Adhesion : "demande"
|
||||||
|
Membre "1" *-- "0..*" Evenement : "organise"
|
||||||
|
Membre "1" *-- "0..*" InscriptionEvenement : "s'inscrit"
|
||||||
|
Membre "1" *-- "0..*" DemandeAide : "demande (demandeur)"
|
||||||
|
Membre "0..1" *-- "0..*" DemandeAide : "évalue (evaluateur)"
|
||||||
|
|
||||||
|
' Relations Organisation (suite)
|
||||||
|
Organisation "1" *-- "0..*" Adhesion : "reçoit"
|
||||||
|
Organisation "1" *-- "0..*" Evenement : "organise"
|
||||||
|
Organisation "1" *-- "0..*" DemandeAide : "traite"
|
||||||
|
|
||||||
|
' Relations Evenement
|
||||||
|
Evenement "1" *-- "0..*" InscriptionEvenement : "a des inscriptions"
|
||||||
|
|
||||||
|
' Relations Enums
|
||||||
|
Evenement ..> TypeEvenement : "utilise"
|
||||||
|
Evenement ..> StatutEvenement : "utilise"
|
||||||
|
InscriptionEvenement ..> StatutInscription : "utilise"
|
||||||
|
DemandeAide ..> TypeAide : "utilise"
|
||||||
|
DemandeAide ..> StatutAide : "utilise"
|
||||||
|
|
||||||
|
note right of Organisation
|
||||||
|
**Hiérarchie** :
|
||||||
|
- organisationParenteId : UUID (référence)
|
||||||
|
- niveauHierarchique : 0 = racine
|
||||||
|
- Auto-référence pour structure hiérarchique
|
||||||
|
end note
|
||||||
|
|
||||||
|
note right of Membre
|
||||||
|
**Génération automatique** :
|
||||||
|
- numeroMembre : auto-généré si non fourni
|
||||||
|
- dateAdhesion : auto-générée à LocalDate.now() si null
|
||||||
|
- dateNaissance : auto-générée à il y a 18 ans si null
|
||||||
|
end note
|
||||||
|
|
||||||
|
note right of Cotisation
|
||||||
|
**Statuts possibles** :
|
||||||
|
- EN_ATTENTE
|
||||||
|
- PAYEE
|
||||||
|
- EN_RETARD
|
||||||
|
- PARTIELLEMENT_PAYEE
|
||||||
|
- ANNULEE
|
||||||
|
end note
|
||||||
|
|
||||||
|
note right of Adhesion
|
||||||
|
**Statuts possibles** :
|
||||||
|
- EN_ATTENTE
|
||||||
|
- APPROUVEE
|
||||||
|
- REJETEE
|
||||||
|
- ANNULEE
|
||||||
|
- EN_PAIEMENT
|
||||||
|
- PAYEE
|
||||||
|
end note
|
||||||
|
|
||||||
|
note right of Evenement
|
||||||
|
**Gestion des inscriptions** :
|
||||||
|
- inscriptionRequise : Boolean
|
||||||
|
- capaciteMax : Integer
|
||||||
|
- dateLimiteInscription : LocalDateTime
|
||||||
|
- Méthodes : isOuvertAuxInscriptions(),
|
||||||
|
getNombreInscrits(), isComplet()
|
||||||
|
end note
|
||||||
|
|
||||||
|
note right of DemandeAide
|
||||||
|
**Workflow d'aide** :
|
||||||
|
- demandeur : Membre (obligatoire)
|
||||||
|
- evaluateur : Membre (optionnel)
|
||||||
|
- organisation : Organisation (obligatoire)
|
||||||
|
- Statuts multiples avec workflow
|
||||||
|
end note
|
||||||
|
|
||||||
|
@enduml
|
||||||
|
|
||||||
Reference in New Issue
Block a user