Post on 10-Sep-2018
Dessiner de l’UML avec PlantUML
Guide de référence du langage(lundi 25 septembre 2017 13:22)
PlantUML est un projet Open Source qui permet de dessiner rapidement :
• des diagrammes de séquences,
• des diagrammes de cas d’utilisation,
• des diagrammes de classes,
• des diagrammes d’activités,
• des diagrammes de composants,
• des diagrammes d’états,
• des diagrammes d’objets.
Les diagrammes sont définis à l’aide d’un langage simple et intuitif.
1 DIAGRAMME DE SÉQUENCE
1 Diagramme de séquence1.1 Exemples de baseLe symbole ”->” est utilisé pour dessiner un message entre deux participants. Les participants n’ont pasbesoin d’être explicitement déclarés.
Pour avoir une flèche en pointillés, il faut utiliser ”-->”.Il est aussi possible d’utiliser ”<-” et ”<--”. Cela ne change pas le dessin, mais cela peut améliorer
la lisibilité du texte source. Ceci est uniquement vrai pour les diagrammes de séquences, les règles sontdifférentes pour les autres diagrammes.@startumlAlice -> Bob: Authentication RequestBob --> Alice: Authentication Response
Alice -> Bob: Another authentication RequestAlice <-- Bob: another authentication Response@enduml
1.2 Déclaration de participantsIl est possible de changer l’ordre des participants à l’aide du mot clé participant.
Il est aussi possible d’utiliser d’autres mot-clés pour déclarer un participant :
• actor
• boundary
• control
• entity
• database
@startumlactor Foo1boundary Foo2control Foo3entity Foo4database Foo5collections Foo6Foo1 -> Foo2 : To boundaryFoo1 -> Foo3 : To controlFoo1 -> Foo4 : To entityFoo1 -> Foo5 : To databaseFoo1 -> Foo6 : To collections
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 1 of 127
1.3 Caractères non alphanumérique dans les participants 1 DIAGRAMME DE SÉQUENCE
On peut aussi utiliser un nom court à l’aide grâce au mot-clé as.La couleur de fond d’un acteur ou d’un participant peut être définie avec son code ou son nom HTML.
@startumlactor Bob #red' The only difference between actor'and participant is the drawingparticipant Aliceparticipant "I have a really\nlong name" as L #99FF99/' You can also declare:participant L as "I have a really\nlong name" #99FF99'/
Alice->Bob: Authentication RequestBob->Alice: Authentication ResponseBob->L: Log transaction@enduml
1.3 Caractères non alphanumérique dans les participantsSi vous voulez mettre des charactères non alphanumériques, il est possible d’utiliser des guillemets. Eton peut utiliser le mot clé as pour définir un alias pour ces participants.@startumlAlice -> "Bob()" : Hello"Bob()" -> "This is very\nlong" as Long' You can also declare:' "Bob()" -> Long as "This is very\nlong"Long --> "Bob()" : ok@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 2 of 127
1.4 Message à soi-même 1 DIAGRAMME DE SÉQUENCE
1.4 Message à soi-mêmeUn participant peut très bien s’envoyer un message.
Il est possible de mettre un message sur plusieurs lignes grâce à \n.@startumlAlice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext@enduml
1.5 Autre style de flèchesVous pouvez changer les flèches de plusieurs façons :
• Pour indiquer un message perdu, terminer la flèche avec x
• Utiliser \ ou / à la place de < ou > pour avoir seulement la partie supérieure ou inférieure de laflèche.
• Doubler un des caractères (par exemple, >> ou //)pour avoir une flèche plus fine.
• Utiliser -- à la place de - pour avoir des pointillés.
• Utiliser ”o” après la flèche
• Utiliser une flèche bi-directionnelle
@startumlBob ->x AliceBob -> AliceBob ->> AliceBob -\ AliceBob \\- AliceBob //-- Alice
Bob ->o AliceBob o\\-- Alice
Bob <-> AliceBob <->o Alice@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 3 of 127
1.6 Changer la couleur des flèches 1 DIAGRAMME DE SÉQUENCE
1.6 Changer la couleur des flèchesChanger la couleur d’une flèche ainsi:@startumlBob -[#red]> Alice : helloAlice -[#0000FF]->Bob : ok@enduml
1.7 Numérotation automatique des messagesLe mot clé autonumber est utilisé pour ajouter automatiquement des numéros aux messages.@startumlautonumberBob -> Alice : Authentication RequestBob <- Alice : Authentication Response@enduml
Spécifier le numéro de départ avec autonumber 'start' , et l’incrément avec autonumber 'start''increment'.@startumlautonumberBob -> Alice : Authentication RequestBob <- Alice : Authentication Response
autonumber 15Bob -> Alice : Another authentication RequestBob <- Alice : Another authentication Response
autonumber 40 10Bob -> Alice : Yet another authentication Request
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 4 of 127
1.7 Numérotation automatique des messages 1 DIAGRAMME DE SÉQUENCE
Bob <- Alice : Yet another authentication Response
@enduml
Spécifier le format d’un nombre entre guillemets anglais.Le formatage est fait par la classe DecimalFormat (’0’ signifie un chiffre, ’#’ signifie un chiffre ou zéro
si absent).Des balises HTML sont permises dans le format.
@startumlautonumber "<b>[000]"Bob -> Alice : Authentication RequestBob <- Alice : Authentication Response
autonumber 15 "<b>(<u>##</u>)"Bob -> Alice : Another authentication RequestBob <- Alice : Another authentication Response
autonumber 40 10 "<font color=red><b>Message 0 "Bob -> Alice : Yet another authentication RequestBob <- Alice : Yet another authentication Response
@enduml
Vous pouvez utiliser autonumber stop et autonumber resume 'increment' 'format' pour respec-tivement arrêter et reprendre la numérotation automatique.@startumlautonumber 10 10 "<b>[000]"Bob -> Alice : Authentication RequestBob <- Alice : Authentication Response
autonumber stopBob -> Alice : dummy
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 5 of 127
1.8 Découper un diagramme 1 DIAGRAMME DE SÉQUENCE
autonumber resume "<font color=red><b>Message 0 "Bob -> Alice : Yet another authentication RequestBob <- Alice : Yet another authentication Response
autonumber stopBob -> Alice : dummy
autonumber resume 1 "<font color=blue><b>Message 0 "Bob -> Alice : Yet another authentication RequestBob <- Alice : Yet another authentication Response@enduml
1.8 Découper un diagrammeLe mot clé newpage est utilisé pour découper un digramme en plusieurs images.
Vous pouvez mettre un titre pour la nouvelle page juste après le mot clé newpage.Ceci est très pratique pour mettre de très longs digrammes sur plusieurs pages.
@startuml
Alice -> Bob : message 1Alice -> Bob : message 2
newpage
Alice -> Bob : message 3Alice -> Bob : message 4
newpage A title for the\nlast page
Alice -> Bob : message 5Alice -> Bob : message 6@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 6 of 127
1.9 Regrouper les messages (cadres UML) 1 DIAGRAMME DE SÉQUENCE
1.9 Regrouper les messages (cadres UML)Il est possible de regrouper les messages dans un cadre UML à l’aide d’un des mot clés suivants:
• alt/else
• opt
• loop
• par
• break
• critical
• group, suivi par le texte à afficher
Il est aussi possible de mettre un texte à afficher dans l’entête. Le mot-clé end est utiliser pour fermerle groupe. Il est aussi possible d’imbriquer les groupes.
Terminer le cadre avec le mot-clé end.Il est possible d’imbriquer les cadres.
@startumlAlice -> Bob: Authentication Request
alt successful case
Bob -> Alice: Authentication Accepted
else some kind of failure
Bob -> Alice: Authentication Failuregroup My own labelAlice -> Log : Log attack startloop 1000 timesAlice -> Bob: DNS AttackendAlice -> Log : Log attack endend
else Another type of failure
Bob -> Alice: Please repeat
end@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 7 of 127
1.10 Note sur les messages 1 DIAGRAMME DE SÉQUENCE
1.10 Note sur les messagesPour attacher une note à un message, utiliser les mots-clés note left (pour une note à gauche) ou noteright (pour une note à droite) juste après le message.
Il est possible d’avoir une note sur plusieurs lignes avec le mot clé end note.@startumlAlice->Bob : hellonote left: this is a first note
Bob->Alice : oknote right: this is another note
Bob->Bob : I am thinkingnote lefta notecan also be definedon several linesend note@enduml
1.11 Encore plus de notesIl est aussi possible de mettre des notes placées par rapport aux participants.
Il est aussi possible de faire ressortir une note en changeant sa couleur de fond.On peut aussi avoir des notes sur plusieurs lignes à l’aide du mot clé end note.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 8 of 127
1.12 Changer l’aspect des notes 1 DIAGRAMME DE SÉQUENCE
@startumlparticipant Aliceparticipant Bobnote left of Alice #aquaThis is displayedleft of Alice.end note
note right of Alice: This is displayed right of Alice.
note over Alice: This is displayed over Alice.
note over Alice, Bob #FFAAAA: This is displayed\n over Bob and Alice.
note over Bob, AliceThis is yet anotherexample ofa long note.end note@enduml
1.12 Changer l’aspect des notesVous pouvez préciser la forme géométrique des notes. (rnote : rectangulaire, ou hnote : hexagonale)@startumlcaller -> server : conReqhnote over caller : idlecaller <- server : conConfrnote over server"r" as rectangle"h" as hexagonendrnote@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 9 of 127
1.13 Créole (langage de balisage léger) et HTML 1 DIAGRAMME DE SÉQUENCE
1.13 Créole (langage de balisage léger) et HTMLIl est également possible d’utiliser le formatage créole (langage de balisage léger):@startumlparticipant Aliceparticipant "The **Famous** Bob" as Bob
Alice -> Bob : hello --there--... Some ~~long delay~~ ...Bob -> Alice : oknote leftThis is **bold**This is //italics//This is ""monospaced""This is --stroked--This is __underlined__This is ~~waved~~end note
Alice -> Bob : A //well formatted// messagenote right of AliceThis is <back:cadetblue><size:18>displayed</size></back>__left of__ Alice.end notenote left of Bob<u:red>This</u> is <color #118888>displayed</color>**<color purple>left of</color> <s:red>Alice</strike> Bob**.end notenote over Alice, Bob<w:#FF33FF>This is hosted</w> by <img sourceforge.jpg>end note@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 10 of 127
1.14 Séparation 1 DIAGRAMME DE SÉQUENCE
1.14 SéparationSi vous voulez, vous pouvez séparer le diagramme avec l’aide de ”==” en étapes logiques.@startuml
== Initialization ==
Alice -> Bob: Authentication RequestBob --> Alice: Authentication Response
== Repetition ==
Alice -> Bob: Another authentication RequestAlice <-- Bob: another authentication Response
@enduml
1.15 RéférenceVous pouvez ajouter des références dans un diagramme, en utilisant le mot-clé ref over.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 11 of 127
1.16 Retard 1 DIAGRAMME DE SÉQUENCE
@startumlparticipant Aliceactor Bob
ref over Alice, Bob : init
Alice -> Bob : hello
ref over BobThis can be onseveral linesend ref@enduml
1.16 RetardUtiliser ... pour indiquer le passage de temps arbitraire dans le diagramme. Un message peut êtreassocié à un retard.@startuml
Alice -> Bob: Authentication Request...Bob --> Alice: Authentication Response...5 minutes latter...Bob --> Alice: Bye !
@enduml
1.17 Séparation verticaleUtiliser ||| pour créer un espace vertical dans le diagramme.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 12 of 127
1.18 Lignes de vie 1 DIAGRAMME DE SÉQUENCE
Il est également possible de spécifier un nombre de pixels pour la séparation verticale.@startuml
Alice -> Bob: message 1Bob --> Alice: ok|||Alice -> Bob: message 2Bob --> Alice: ok||45||Alice -> Bob: message 3Bob --> Alice: ok
@enduml
1.18 Lignes de vieVous pouvez utiliser activate et deactivate pour marquer l’activation des participants.
Une fois qu’un participant est activé, sa ligne de vie apparaît.Les ordres activate et deactivate s’applique sur le message situé juste avant.Le mot clé destroy sert à montrer la fin de vie d’un participant.
@startumlparticipant User
User -> A: DoWorkactivate A
A -> B: << createRequest >>activate B
B -> C: DoWorkactivate CC --> B: WorkDonedestroy C
B --> A: RequestCreateddeactivate B
A -> User: Donedeactivate A
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 13 of 127
1.19 Création de participants. 1 DIAGRAMME DE SÉQUENCE
Les lignes de vie peuvent être imbriquées, et il est possible de les colorer.@startumlparticipant User
User -> A: DoWorkactivate A #FFBBBB
A -> A: Internal callactivate A #DarkSalmon
A -> B: << createRequest >>activate B
B --> A: RequestCreateddeactivate Bdeactivate AA -> User: Donedeactivate A
@enduml
1.19 Création de participants.Vous pouvez utiliser le mot clé create juste avant la première réception d’un message pour montrer quele message en question est une création d’un nouvelle objet.@startumlBob -> Alice : hello
create OtherAlice -> Other : new
create control StringAlice -> Stringnote right : You can also put notes!
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 14 of 127
1.20 Messages entrant et sortant 1 DIAGRAMME DE SÉQUENCE
Alice --> Bob : ok
@enduml
1.20 Messages entrant et sortantVous pouvez utiliser des flèches qui viennent de la droite ou de la gauche pour dessiner un sous-diagramme.
Il faut utiliser des crochets pour indiquer la gauche ”[” ou la droite ”]” du diagramme.@startuml[-> A: DoWork
activate A
A -> A: Internal callactivate A
A ->] : << createRequest >>
A<--] : RequestCreateddeactivate A[<- A: Donedeactivate A@enduml
Vous pouvez aussi utiliser la syntaxe suivante:@startuml[-> Bob[o-> Bob[o->o Bob[x-> Bob
[<- Bob[x<- Bob
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 15 of 127
1.21 Stéréotypes et décoration 1 DIAGRAMME DE SÉQUENCE
Bob ->]Bob ->o]Bob o->o]Bob ->x]
Bob <-]Bob x<-]@enduml
1.21 Stéréotypes et décorationIl est possible de rajouter un stéréotype aux participants en utilisant ”<<” et ”>>”.
Dans le stéréotype, vous pouvez ajouter un caractère entouré d’un cercle coloré en utilisant la syntaxe(X,couleur).@startuml
participant "Famous Bob" as Bob << Generated >>participant Alice << (C,#ADD1B2) Testable >>
Bob->Alice: First message
@enduml
Par défaut, le caractère guillemet est utilisé pour afficher les stéréotypes. Vous pouvez changer cecomportement en utilisant la propriété skinparam guillemet:@startuml
skinparam guillemet falseparticipant "Famous Bob" as Bob << Generated >>participant Alice << (C,#ADD1B2) Testable >>
Bob->Alice: First message
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 16 of 127
1.22 Plus d’information sur les titres 1 DIAGRAMME DE SÉQUENCE
@startuml
participant Bob << (C,#ADD1B2) >>participant Alice << (C,#ADD1B2) >>
Bob->Alice: First message
@enduml
1.22 Plus d’information sur les titresVous pouvez utiliser le formatage creole dans le titre.@startuml
title __Simple__ **communication** example
Alice -> Bob: Authentication RequestBob -> Alice: Authentication Response
@enduml
Vous pouvez mettre des retours à la ligne en utilisant \n dans la description.@startuml
title __Simple__ communication example\non several lines
Alice -> Bob: Authentication RequestBob -> Alice: Authentication Response
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 17 of 127
1.23 Cadre pour les participants 1 DIAGRAMME DE SÉQUENCE
Vous pouvez aussi mettre un titre sur plusieurs lignes à l’aide des mots-clé title et end title.@startuml
title<u>Simple</u> communication exampleon <i>several</i> lines and using <font color=red>html</font>This is hosted by <img:sourceforge.jpg>end title
Alice -> Bob: Authentication RequestBob -> Alice: Authentication Response
@enduml
1.23 Cadre pour les participantsIl est possible de dessiner un cadre autour de certains participants, en utilisant les commandes box etend box.
Vous pouvez ajouter un titre ou bien une couleur de fond après le mot-clé box.@startuml
box "Internal Service" #LightBlueparticipant Bobparticipant Aliceend boxparticipant Other
Bob -> Alice : helloAlice -> Other : hello
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 18 of 127
1.24 Supprimer les en-pieds 1 DIAGRAMME DE SÉQUENCE
1.24 Supprimer les en-piedsVous pouvez utiliser le mot-clé hide footbox pour supprimer la partie basse du diagramme.@startuml
hide footboxtitle Footer removed
Alice -> Bob: Authentication RequestBob --> Alice: Authentication Response
@enduml
1.25 PersonnalisationVous pouvez utiliser la commande skinparam pour changer les couleurs et les polices de caractères.
Vous pouvez utiliser cette commande :
• Dans le diagramme, comme toutes les autres commandes,
• Dans un fichier inclus,
• Dans un fichier de configuration, donné à la ligne de commande ou à la tâche ANT.
Vous pouvez aussi modifier d’autres paramètres pour le rendu, comme le montrent les exemplessuivants:@startumlskinparam sequenceArrowThickness 2skinparam roundcorner 20skinparam maxmessagesize 60skinparam sequenceParticipant underline
actor Userparticipant "First Class" as Aparticipant "Second Class" as Bparticipant "Last Class" as C
User -> A: DoWorkactivate A
A -> B: Create Requestactivate B
B -> C: DoWorkactivate C
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 19 of 127
1.25 Personnalisation 1 DIAGRAMME DE SÉQUENCE
C --> B: WorkDonedestroy C
B --> A: Request Createddeactivate B
A --> User: Donedeactivate A
@enduml
@startumlskinparam backgroundColor #EEEBDCskinparam handwritten true
skinparam sequence {ArrowColor DeepSkyBlueActorBorderColor DeepSkyBlueLifeLineBorderColor blueLifeLineBackgroundColor #A9DCDF
ParticipantBorderColor DeepSkyBlueParticipantBackgroundColor DodgerBlueParticipantFontName ImpactParticipantFontSize 17ParticipantFontColor #A9DCDF
ActorBackgroundColor aquaActorFontColor DeepSkyBlueActorFontSize 17ActorFontName Aapex}
actor Userparticipant "First Class" as Aparticipant "Second Class" as Bparticipant "Last Class" as C
User -> A: DoWorkactivate A
A -> B: Create Requestactivate B
B -> C: DoWork
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 20 of 127
1.26 Changer le padding 1 DIAGRAMME DE SÉQUENCE
activate CC --> B: WorkDonedestroy C
B --> A: Request Createddeactivate B
A --> User: Donedeactivate A
@enduml
1.26 Changer le paddingIl est possible de changer certains paramètres du padding.@startumlskinparam ParticipantPadding 20skinparam BoxPadding 10
box "Foo1"participant Alice1participant Alice2end boxbox "Foo2"participant Bob1participant Bob2end boxAlice1 -> Bob1 : helloAlice1 -> Out : out@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 21 of 127
2 DIAGRAMME DE CAS D’UTILISATION
2 Diagramme de cas d’utilisation2.1 Cas d’utilisationLes cas d’utilisation sont mis entre parenthèses (car deux parenthèses forment un ovale).
Vous pouvez aussi utiliser le mot-clé usecase pour définir un cas d’utilisation. Et vous pouvez définirun alias avec le mot-clé as. Cet alias sera ensuite utilisé lors de la définition des relations.@startuml
(First usecase)(Another usecase) as (UC2)usecase UC3usecase (Last\nusecase) as UC4
@enduml
2.2 ActeursUn Acteur est encadré par des deux points.
Vous pouvez aussi utiliser le mot-clé actor pour définir un acteur. Et vous pouvez définir un aliasavec le mot-clé as. Cet alias sera ensuite utilisé lors de la définition des relations.
Nous verrons que la définition des acteurs est optionnelle.@startuml
:First Actor::Another\nactor: as Men2actor Men3actor :Last actor: as Men4
@enduml
2.3 Description des cas d’utilisationSi vous voulez une description sur plusieurs lignes, vous pouvez utiliser des guillemets.
Vous pouvez aussi utiliser les séparateurs suivants: -- .. == __. Et vous pouvez mettre un titre dansles séparateurs.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 22 of 127
2.4 Exemples très simples 2 DIAGRAMME DE CAS D’UTILISATION
@startuml
usecase UC1 as "You can useseveral lines to define your usecase.You can also use separators.--Several separators are possible.==And you can add titles:..Conclusion..This allows large description."
@enduml
2.4 Exemples très simplesPour lier les acteurs et les cas d’utilisation, la flèche ”-->” est utilisée.
Plus il y a de tirets ”-” dans la flèche, plus elle sera longue. Vous pouvez ajouter un libellé sur laflèche, en ajoutant un caractère ”:” dans la définition de la flèche.
Dans cet exemple, vous voyez que User n’a pas été défini préalablement, et qu’il est implicitementreconnu comme acteur.@startuml
User -> (Start)User --> (Use the application) : A small label
:Main Admin: ---> (Use the application) : This is\nyet another\nlabel
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 23 of 127
2.5 Héritage 2 DIAGRAMME DE CAS D’UTILISATION
2.5 HéritageSi un acteur ou un cas d’utilisation en étend un autre, vous pouvez utiliser le symbole@startuml:Main Admin: as Admin(Use the application) as (Use)
User <|-- Admin(Start) <|-- (Use)
@enduml
2.6 NotesVous pouvez utiliser les mots clés note left of , note right of , note top of , note bottom of pourdéfinir les notes en relation avec un objet.
Une note peut également être définie seule avec des mots-clés, puis liée à d’autres objets en utilisantle symbole .. .@startuml:Main Admin: as Admin(Use the application) as (Use)
User -> (Start)User --> (Use)
Admin ---> (Use)
note right of Admin : This is an example.
note right of (Use)A note can alsobe on several linesend note
note "This note is connected\nto several objects." as N2(Start) .. N2N2 .. (Use)@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 24 of 127
2.7 Stéréotypes 2 DIAGRAMME DE CAS D’UTILISATION
2.7 StéréotypesVous pouvez ajouter des stéréotypes à la définition des acteurs et des cas d’utilisation avec ”<<” et ”>>”.@startumlUser << Human >>:Main Database: as MySql << Application >>(Start) << One Shot >>(Use the application) as (Use) << Main >>
User -> (Start)User --> (Use)
MySql --> (Use)
@enduml
2.8 Changer les directions des flèchesPar défaut, les liens entre les classes ont deux tirets -- et sont orientés verticalement. Il est possible demettre des liens horizontaux en mettant un seul tiret (ou un point) comme ceci:@startuml:user: --> (Use case 1):user: -> (Use case 2)@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 25 of 127
2.9 Découper les diagrames 2 DIAGRAMME DE CAS D’UTILISATION
Vous pouvez aussi changer le sens en renversant le lien :@startuml(Use case 1) <.. :user:(Use case 2) <- :user:@enduml
Il est possible de changer la direction d’une flèche en utilisant les mots-clé left, right, up ou downà l’intérieur de la flèche :@startuml:user: -left-> (dummyLeft):user: -right-> (dummyRight):user: -up-> (dummyUp):user: -down-> (dummyDown)@enduml
Vous pouvez abréger les noms des flèches en indiquant seulement le premier caractère de la direction(par exemple -d- pour -down-) ou les deux premiers caractères (-do-).
Il est conseillé de ne pas abuser de cette fonctionnalité : Graphviz qui donne d’assez bon résultatsquoique non ”garantis”.
2.9 Découper les diagramesLe mot-clé newpage est utilisé pour découper un diagrame en plusieurs images.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 26 of 127
2.10 De droite à gauche 2 DIAGRAMME DE CAS D’UTILISATION
@startuml:actor1: --> (Usecase1)newpage:actor2: --> (Usecase2)@enduml
2.10 De droite à gaucheLe comportement général de construction des diagrammes est de haut en bas.@startuml'defaulttop to bottom directionuser1 --> (Usecase 1)user2 --> (Usecase 2)
@enduml
Il est possible de changer pour aller plutôt de la droite vers la gauche avec la commande left to rightdirection. Le résultat est parfois meilleur dans ce cas.@startuml
left to right directionuser1 --> (Usecase 1)user2 --> (Usecase 2)
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 27 of 127
2.11 La commande Skinparam 2 DIAGRAMME DE CAS D’UTILISATION
2.11 La commande SkinparamUtilisez la commande skinparam pour changer la couleur et la mise en forme du texte du schéma.
Vous pouvez utiliser cette commande :
• Dans la définition du diagramme, comme pour les autres commandes,
• Dans un fichier inclus,
• Dans un fichier de configuration, renseigné dans la ligne de commande ou la tâche ANT.
Vous pouvez aussi spécifier les polices et les couleurs pour les acteurs et cas d’utilisation avec desstéréotypes.@startumlskinparam handwritten true
skinparam usecase {BackgroundColor DarkSeaGreenBorderColor DarkSlateGray
BackgroundColor<< Main >> YellowGreenBorderColor<< Main >> YellowGreen
ArrowColor OliveActorBorderColor blackActorFontName Courier
ActorBackgroundColor << Human >> Gold}
User << Human >>:Main Database: as MySql << Application >>(Start) << One Shot >>(Use the application) as (Use) << Main >>
User -> (Start)User --> (Use)
MySql --> (Use)
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 28 of 127
2.12 Exemple complet 2 DIAGRAMME DE CAS D’UTILISATION
2.12 Exemple complet
@startumlleft to right directionskinparam packageStyle rectangleactor customeractor clerkrectangle checkout {customer -- (checkout)(checkout) .> (payment) : include(help) .> (checkout) : extends(checkout) -- clerk}@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 29 of 127
3 DIAGRAMME DE CLASSES
3 Diagramme de classes3.1 Relations entre classesLes relations entre les classes sont définies en utilisant les symboles suivants :
Extension <|--Composition *--Agrégation o--
Il est possible de substituer ”--” par ”..” pour obtenir une ligne en pointillée.Grâce à ces règles, il est possible de faire les diagrammes suivants :
@startumlClass01 <|-- Class02Class03 *-- Class04Class05 o-- Class06Class07 .. Class08Class09 -- Class10@enduml
@startumlClass11 <|.. Class12Class13 --> Class14Class15 ..> Class16Class17 ..|> Class18Class19 <--* Class20@enduml
@startumlClass21 #-- Class22Class23 x-- Class24Class25 }-- Class26Class27 +-- Class28Class29 ^-- Class30@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 30 of 127
3.2 Libellés sur les relations 3 DIAGRAMME DE CLASSES
3.2 Libellés sur les relationsIl est possible de rajouter un libellé sur une relation, en utilisant les deux points ”:”, suivi du texte du
libellé.
Pour les cardinalité, vous pouvez utiliser des guillemets "" des deux cotés de la relation.
@startuml
Class01 "1" *-- "many" Class02 : contains
Class03 o-- Class04 : aggregation
Class05 --> "1" Class06
@enduml
Vous pouvez ajouter une flèche désignant quel objet agit sur l’autre en utilisant < ou > au début ouà la fin du libellé.@startumlclass Car
Driver - Car : drives >Car *- Wheel : have 4 >Car -- Person : < owns
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 31 of 127
3.3 Définir les méthodes 3 DIAGRAMME DE CLASSES
3.3 Définir les méthodesPour déclarer des méthodes ou des champs, vous pouvez utiliser le caractère ”deux-points” followed by
the field’s or method’s name.
Le système utilise la présence de parenthèses pour choisir entre méthodes et champs.
@startumlObject <|-- ArrayList
Object : equals()ArrayList : Object[] elementDataArrayList : size()
@enduml
Il est possible de regrouper tous les champs et méthodes en utilisant des crochets {}.
Notez que la syntaxe est très souple sur l’ordre des champs et des méthodes.
@startumlclass Dummy {String datavoid methods()}
class Flight {flightNumber : IntegerdepartureTime : Date}@enduml
You can use {field} and {method} modifiers to override default behaviour of the parser about fieldsand methods.@startumlclass Dummy {{field} A field (despite parentheses){method} Some method}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 32 of 127
3.4 Définir les visibilités 3 DIAGRAMME DE CLASSES
3.4 Définir les visibilitésQuand vous déclarez des champs ou des méthodes, vous pouvez utiliser certains caractères pour définir
la visibilité des éléments :
- privé# protégé̃ protégé package+ publique
@startuml
class Dummy {-field1#field2~method1()+method2()}
@enduml
Vous pouvez invalider cette fonctionnalité par la commande skinparam classAttributeIconSize 0 :
@startumlskinparam classAttributeIconSize 0class Dummy {-field1#field2~method1()+method2()}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 33 of 127
3.5 Abstrait et statique 3 DIAGRAMME DE CLASSES
3.5 Abstrait et statiqueVous pouvez définir une méthode statique ou abstraite ou un champ utilisant static ou abstract
modificateur.
Ce modificateur peut être utiliser au début ou à la fin de la ligne. Vous pouvez alors utiliser classifierplutôt que static.
@startumlclass Dummy {{static} String id{abstract} void methods()}@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 34 of 127
3.6 Corps de classe avancé 3 DIAGRAMME DE CLASSES
3.6 Corps de classe avancéPar défaut, méthodes et champs sont automatiquement regroupé par PlantUML. Vous pouvez utiliser un
séparateur pour définir votre propre manière d’ordonner les champs et les méthodes. Les séparateurssuivants sont possibles : -- .. == __.
Vous pouvez aussi utiliser les titres dans les séparateurs.
@startumlclass Foo1 {You can useseveral lines..as you wantand group==things together.__You can have as many groupsas you want--End of class}
class User {.. Simple Getter ..+ getName()+ getAddress().. Some setter ..+ setName()__ private data __int age-- encrypted --String password}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 35 of 127
3.7 Notes et stéréotypes 3 DIAGRAMME DE CLASSES
3.7 Notes et stéréotypesStéréotypes sont définies avec le mot clé class, ” << ” et ” >> ”.
Vous pouvez aussi définir une note en utilisant les mots clés note left of , note right of , note topof , note bottom of.
Vous pouvez aussi définir une note sur la dernière classe utilisant note left, note right, note top,note bottom.
Une note peut aussi être définie le mot clé note, puis être lié à un autre objet en utilisant le symbole...@startumlclass Object << general >>Object <|--- ArrayList
note top of Object : In java, every class\nextends this one.
note "This is a floating note" as N1note "This note is connected\nto several objects." as N2Object .. N2N2 .. ArrayList
class Foonote left: On last defined class
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 36 of 127
3.8 Encore des notes 3 DIAGRAMME DE CLASSES
3.8 Encore des notes
Il est possible d’utiliser quelques tag HTML comme :
• <b>• <u>• <i>• <s>, <del>, <strike>• <font color="#AAAAAA"> or <font color="colorName">• <color:#AAAAAA> or <color:colorName>• <size:nn> to change font size• <img src="file"> or <img:file> : the file must be accessible by the filesystem
Vous pouvez aussi définir des notes sur plusieurs lignes.Vous pouvez également définir une note sur la dernière classe définie en utilisant note left, noteright, note top, note bottom.@startuml
class Foonote left: On last defined class
note top of ObjectIn java, <size:18>every</size> <u>class</u><b>extends</b><i>this</i> one.end note
note as N1This note is <u>also</u><b><color:royalBlue>on several</color><s>words</s> linesAnd this is hosted by <img:sourceforge.jpg>end note
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 37 of 127
3.9 Note sur les liens 3 DIAGRAMME DE CLASSES
3.9 Note sur les liens
Il est possible d’ajouter une note sur un lien, juste après la définition d’un lien, utiliser note onlink.Vous pouvez aussi utiliser note left on link, note right on link, note top on link, notebottom on link si vous voulez changer la position relative de la note avec l’étiquette.@startuml
class DummyDummy --> Foo : A linknote on link #red: note that is red
Dummy --> Foo2 : Another linknote right on link #bluethis is my note on right linkand in blueend note
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 38 of 127
3.10 Classe abstraite et Interface 3 DIAGRAMME DE CLASSES
3.10 Classe abstraite et Interface
Vous pouvez déclarer un classe abstraite en utilisant ”abstract” ou ”abstract class”. La classesera alors écrite en italique.Vous pouvez aussi utiliser interface, annotation et enum.@startuml
abstract class AbstractListabstract AbstractCollectioninterface Listinterface Collection
List <|-- AbstractListCollection <|-- AbstractCollection
Collection <|- ListAbstractCollection <|- AbstractListAbstractList <|-- ArrayList
class ArrayList {Object[] elementDatasize()}
enum TimeUnit {DAYSHOURSMINUTES}
annotation SuppressWarnings
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 39 of 127
3.11 Caractères non alphabétiques 3 DIAGRAMME DE CLASSES
3.11 Caractères non alphabétiques
Si nous voulez utiliser autre chose que des lettres dans les classes (ou les enums...), vous pouvez:
• Utiliser le mot clé as dans la définition de la classe• Metter des guillemets "" autour du nom de la classe
@startumlclass "This is my class" as class1class class2 as "It works this way too"
class2 *-- "foo/dummy" : use@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 40 of 127
3.12 Masquer les attributs et les méthodes 3 DIAGRAMME DE CLASSES
3.12 Masquer les attributs et les méthodes
Vous pouvez paramétrer l’affichage des classes à l’aide de la commande hide/show .La commande de base est: hide empty members. Cette commande va masquer la zone des champsou des méthodes si celle-ci est vide.A la place de empty members, vous pouvez utiliser:
• empty fields ou empty attributes pour des champs vides,• empty methods pour des méthodes vides,• fields or attributes qui masque les champs, même s’il y en a de définis,• methods qui masque les méthodes, même s’il y en a de définies,• members qui masque les méthodes ou les champs, même s’il y en a de définies,• circle pour le caractère entouré en face du nom de la classe,• stereotype pour le stéréotype.
Vous pouvez aussi fournir, juste après le mot-clé hide ou show :
• class pour toutes les classes,• interface pour toutes les interfaces,• enum pour tous les enums,• <<foo1>> pour les classes qui sont stéréotypée avec foo1,• Un nom de classe existant
Vous pouvez utiliser plusieurs commandes show/hide pour définir des règles et des exceptions.@startuml
class Dummy1 {+myMethods()}
class Dummy2 {+hiddenMethod()}
class Dummy3 <<Serializable>> {String name}
hide membershide <<Serializable>> circleshow Dummy1 methodsshow <<Serializable>> fields
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 41 of 127
3.13 Cacher des classes 3 DIAGRAMME DE CLASSES
3.13 Cacher des classes
Vous pouvez également utiliser la commande show/hide pour cacher une classe.Cela peut être utile si vous définissez un large fichier !included, et si vous voulez en cacher quelquesunes après une inclusion de fichier.@startuml
class Foo1class Foo2
Foo2 *-- Foo1
hide Foo2
@enduml
3.14 Utilisation de la généricité
Vous pouvez aussi utiliser les signes inférieur < et supérieur > pour définir l’utilisation de la généricitédans une classe.@startuml
class Foo<? extends Element> {int size()}Foo *- Element
@enduml
On peut désactiver ce comportement avec la commande skinparam genericDisplay old.
3.15 Caractère spécial
Normalement, un caractère (C, I, E ou A) est utilisé pour les classes, les interfaces ou les énum.Vous pouvez aussi utiliser le caractère de votre choix, en définissant le stéréotype et en ajoutantune couleur, comme par exemple :@startuml
class System << (S,#FF7700) Singleton >>class Date << (D,orchid) >>@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 42 of 127
3.16 Packages 3 DIAGRAMME DE CLASSES
3.16 Packages
Vous pouvez définir un package en utilisant le mot-clé package, et optionnellement déclarer unecouleur de fond pour votre package (en utilisant un code couleur HTML ou son nom).Notez que les définitions de packages peuvent être imbriquées.@startuml
package "Classic Collections" #DDDDDD {Object <|-- ArrayList}
package net.sourceforge.plantuml {Object <|-- Demo1Demo1 *- Demo2}
@enduml
3.17 Modèle de paquet
Il y a différents styles de paquets disponibles.Vous pouvez les spécifier chacun par un réglage par défaut avec la commande : skinparam packageStyle,ou par l’utilisation d’un stéréotype sur le paquet:@startumlscale 750 widthpackage foo1 <<Node>> {class Class1}
package foo2 <<Rectangle>> {class Class2}
package foo3 <<Folder>> {class Class3}
package foo4 <<Frame>> {class Class4}
package foo5 <<Cloud>> {class Class5}
package foo6 <<Database>> {class Class6}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 43 of 127
3.18 Les espaces de noms 3 DIAGRAMME DE CLASSES
Vous pouvez aussi définir les liens entre les paquets, comme dans l’exemple suivant :@startuml
skinparam packageStyle rectangle
package foo1.foo2 {}
package foo1.foo2.foo3 {class Object}
foo1.foo2 +-- foo1.foo2.foo3
@enduml
3.18 Les espaces de noms
Avec les packages, le nom de la classe est l’identifiant unique de la classe. Cela signifie qu’on nepeux pas avoir deux classes avec le même nom dans deux packages différents. Pour ce faire, vousdevez utiliser des namespaces à la place des packages.Dans ce cas, vous pouvez utiliser les espaces de noms à la place des packages.Vous pouvez faire référence à des classes d’autres espace de nom en les nommant complétement.Les classes de l’espace de nom par défaut sont nommées en commençant par un point.Note that you don’t have to explicitly create namespace : a fully qualified class est automatiquementajouté au bon espace de nom.@startuml
class BaseClass
namespace net.dummy #DDDDDD {.BaseClass <|-- PersonMeeting o-- Person
.BaseClass <|- Meeting}
namespace net.foo {net.dummy.Person <|- Person.BaseClass <|-- Person
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 44 of 127
3.19 Creation automatique d’espace de nommage 3 DIAGRAMME DE CLASSES
net.dummy.Meeting o-- Person}
BaseClass <|-- net.unused.Person
@enduml
3.19 Creation automatique d’espace de nommage
Vous pouvez définir une autre séparateur (autre que le point) en utilisant la commande : setnamespaceSeparator ???.@startuml
set namespaceSeparator ::class X1::X2::foo {some info}
@enduml
Vous pouvez désactiver la création automatique de package en utilisant la commande set namespaceSeparatornone.@startuml
set namespaceSeparator noneclass X1.X2.foo {some info
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 45 of 127
3.20 Interface boucle 3 DIAGRAMME DE CLASSES
}
@enduml
3.20 Interface boucle• bar ()- foo• bar ()-- foo• foo -() bar
@startumlclass foobar ()- foo@enduml
3.21 Changer la direction
Par défaut, les liens entre les classe ont deux tirets -- et sont orientés verticalement. Il est possibled’utiliser une ligne horizontal en mettant un simple tiret (Ou un point) comme ceci:@startumlRoom o- StudentRoom *-- Chair@enduml
Vous pouvez aussi changer le sens en renversant le lien :@startumlStudent -o RoomChair --* Room@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 46 of 127
3.22 Classes d’association 3 DIAGRAMME DE CLASSES
Il est aussi possible de changer la direction d’une flèche en ajoutant les mots clés left, right, upou down à l’intérieur de la flèche:@startumlfoo -left-> dummyLeftfoo -right-> dummyRightfoo -up-> dummyUpfoo -down-> dummyDown@enduml
Il est possible de raccourcir la flèche en n’utilisant que la première lettre de la direction (par exemple,-d- au lieu de -down-) ou les deux premières lettres (-do-)Attention à ne pas abuser de cette fonctionnalité : GraphVizdonne généralement de bons résultatssans trop de raffistolages.
3.22 Classes d’association
Vous pouvez définir une classe d’association après qu’une relation ait été définie entre deux classes,comme dans l’exemple suivant:@startumlclass Student {Name}Student "0..*" - "1..*" Course(Student, Course) .. Enrollment
class Enrollment {drop()cancel()}@enduml
Vous pouvez la définir dans une autre direction :
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 47 of 127
3.23 Personnalisation 3 DIAGRAMME DE CLASSES
@startumlclass Student {Name}Student "0..*" -- "1..*" Course(Student, Course) . Enrollment
class Enrollment {drop()cancel()}@enduml
3.23 Personnalisation
La commande skinparam permet de changer la couleur et les polices de caractères.Vous pouvez utiliser cette commande :
• Dans le diagramme, comme toutes les autre commandes,• Dans un fichier inclus,• Dans un fichier de configuration précisé par la ligne de commande ou la tâche ANT.
@startuml
skinparam class {BackgroundColor PaleGreenArrowColor SeaGreenBorderColor SpringGreen}skinparam stereotypeCBackgroundColor YellowGreen
Class01 "1" *-- "many" Class02 : contains
Class03 o-- Class04 : aggregation
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 48 of 127
3.24 Stéréotypes Personnalisés 3 DIAGRAMME DE CLASSES
3.24 Stéréotypes Personnalisés
Vous pouvez définir des couleurs et des fontes de caractères spécifiques pour les classes stéréotypées.@startuml
skinparam class {BackgroundColor PaleGreenArrowColor SeaGreenBorderColor SpringGreenBackgroundColor<<Foo>> WheatBorderColor<<Foo>> Tomato}skinparam stereotypeCBackgroundColor YellowGreenskinparam stereotypeCBackgroundColor << Foo >> DimGray
Class01 <<Foo>>Class03 <<Foo>>Class01 "1" *-- "many" Class02 : contains
Class03 o-- Class04 : aggregation
@enduml
3.25 Dégradé de couleur
Il est possible de déclarer individuellement une couleur pour des classes ou une note en utilisant lanotation .Vous pouvez utiliser un nom de couleur standard ou un code RGB.Vous pouvez aussi utiliser un dégradé de couleur en fond, avec la syntaxe suivante : deux noms decouleurs séparés par :
• |,• /,• \,• or -
en fonction de la direction du dégradéPar exemple, vous pouvez avoir :
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 49 of 127
3.26 Aide pour la mise en page 3 DIAGRAMME DE CLASSES
@startuml
skinparam backgroundcolor AntiqueWhite/Goldskinparam classBackgroundColor Wheat|CornflowerBlue
class Foo #red-greennote left of Foo #blue\9932CCthis is mynote on this classend note
package example #GreenYellow/LightGoldenRodYellow {class Dummy}
@enduml
3.26 Aide pour la mise en page
Sometimes, the default layout is not perfect...You can use together keyword to group some classes together : the layout engine will try to groupthem (as if they were in the same package).You can also use hidden links to force the layout.@startuml
class Bar1class Bar2together {class Together1class Together2class Together3}Together1 - Together2Together2 - Together3Together2 -[hidden]--> Bar1Bar1 -[hidden]> Bar2
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 50 of 127
3.27 Découper les grands diagrammes 3 DIAGRAMME DE CLASSES
3.27 Découper les grands diagrammes
Parfois, vous obtiendrez des images de taille importante.Vous pouvez utiliser la commande ”page (hpages)x(vpages)” pour découper l’image en plusieursfichiers:hpages est le nombre de pages horizontales, et vpages indique le nombre de pages verticales.Vous pouvez aussi utiliser des paramètres spécifiques pour rajouter des bords sur les pages découpées(voir l’exemple).@startuml' Split into 4 pagespage 2x2skinparam pageMargin 10skinparam pageExternalColor grayskinparam pageBorderColor black
class BaseClass
namespace net.dummy #DDDDDD {.BaseClass <|-- PersonMeeting o-- Person
.BaseClass <|- Meeting
}
namespace net.foo {net.dummy.Person <|- Person.BaseClass <|-- Person
net.dummy.Meeting o-- Person}
BaseClass <|-- net.unused.Person@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 51 of 127
3.27 Découper les grands diagrammes 3 DIAGRAMME DE CLASSES
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 52 of 127
4 DIAGRAMMES D’ACTIVITÉ
4 Diagrammes d’activité
4.1 Exemple de base
Vous devez utiliser (*) pour le début et la fin du diagramme d’activité.Dans certaines occasions, vous pouriez vouloir utiliser (*top) pour forcer le début à être en hautdu diagramme.Utiliser --> pour les flèches.@startuml
(*) --> "First Activity""First Activity" --> (*)
@enduml
4.2 Texte sur les flèches.
Par défaut, une flèche commence à partir de la dernière activité définie.Vous pouvez rajouter un libellé sur une flèche en mettant des crochets [ et ] juste après la définitionde la flèche.@startuml
(*) --> "First Activity"-->[You can put also labels] "Second Activity"--> (*)
@enduml
4.3 Changer la direction des flèches
Vous pouvez utiliser -> pour les flèches horizontales. Il est aussi possible de forcer la direction d’uneflèche en utilisant la syntaxe suivante :
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 53 of 127
4.4 Branches 4 DIAGRAMMES D’ACTIVITÉ
• -down-> (default arrow)• -right-> or ->• -left->• -up->
@startuml
(*) -up-> "First Activity"-right-> "Second Activity"--> "Third Activity"-left-> (*)
@enduml
4.4 Branches
Vous pouvez utiliser le mot clé if/then/else pour définir une branche.@startuml(*) --> "Initialization"
if "Some Test" then-->[true] "Some Activity"--> "Another activity"-right-> (*)else->[false] "Something else"-->[Ending process] (*)endif
@enduml
Malheureusement, vous devez parfois avoir à répéter la même activité dans le diagramme de texte.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 54 of 127
4.5 Encore des branches 4 DIAGRAMMES D’ACTIVITÉ
@startuml(*) --> "check input"If "input is verbose" then--> [Yes] "turn on verbosity"--> "run command"else--> "run command"Endif-->(*)@enduml
4.5 Encore des branches
Par défaut, une branche commence à la dernière activité définie, mais il est possible de passer outreet de définir un lien avec le mot clé if.Il est aussi possible d’imbriquer les branches.@startuml
(*) --> if "Some Test" then
-->[true] "activity 1"
if "" then-> "activity 3" as a3elseif "Other test" then-left-> "activity 5"else--> "activity 6"endifendif
else
->[false] "activity 2"
endif
a3 --> if "last test" then--> "activity 7"else-> "activity 8"
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 55 of 127
4.6 Synchronisation 4 DIAGRAMMES D’ACTIVITÉ
endif
@enduml
4.6 Synchronisation
Vous pouvez utiliser la syntaxe”=== code ===” pour afficher des barres de synchronisation.@startuml
(*) --> ===B1===--> "Parallel Activity 1"--> ===B2===
===B1=== --> "Parallel Activity 2"--> ===B2===
--> (*)
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 56 of 127
4.7 Description détaillée 4 DIAGRAMMES D’ACTIVITÉ
4.7 Description détaillée
Lorsque vous déclarez des activités, vous pouvez positionner sur plusieurs lignes le texte de descrip-tion Vous pouvez également ajouter \n dans la description. Il est également possible d’utiliserquelques tags HTML tels que :Vous pouvez aussi donner un court code à l’activité avec le mot clé as. Ce code peut être utiliséplus tard dans le diagramme de description.@startuml(*) -left-> "this <size:20>activity</size>is <b>very</b> <color:red>long2</color>and defined on several linesthat contains many <i>text</i>" as A1
-up-> "Another activity\n on several lines"
A1 --> "Short activity <img:sourceforge.jpg>"@enduml
4.8 Notes
Vous pouvez rajouter des notes sur une activités en utilisant les commandes: note left, noteright, note top or note bottom, juste après la définition de l’activité concernée.Si vous voulez mettre une note sur le démarrage du diagramme, définissez la note au tout début dudiagramme.Vous pouvez aussi avoir une note sur plusieurs lignes, en utilisant les mots clés endnote.@startuml
(*) --> "Some Activity"note right: This activity has to be defined"Some Activity" --> (*)note leftThis note is onseveral linesend note
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 57 of 127
4.9 Partition 4 DIAGRAMMES D’ACTIVITÉ
4.9 Partition
Vous pouvez définir une partition en utilisant le mot clé partition, et optionnellement déclarer unfond de couleur pour votre partition (En utilisant un code couleur html ou un nom)Quand vous déclarez les activités, ils sont automatiquement mis dans la dernière partition utilisée.Vous pouvez fermer la partition de définition en utilisant les crochets fermants }.@startuml
partition Conductor {(*) --> "Climbs on Platform"--> === S1 ===--> Bows}
partition Audience #LightSkyBlue {=== S1 === --> Applauds}
partition Conductor {Bows --> === S2 ===--> WavesArmesApplauds --> === S2 ===}
partition Orchestra #CCCCEE {WavesArmes --> Introduction--> "Play music"}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 58 of 127
4.10 Paramètre de thème 4 DIAGRAMMES D’ACTIVITÉ
4.10 Paramètre de thème
Vous pouvez utiliser la commande skinparam pour changer la couleur et la police d’écriture pourdessiner.Vous pouvez utiliser cette commande :
• Dans le diagramme de définition, comme n’importe quelle autre commande,• Dans un fichier inclus,• Dans un fichier de configuration, à condition que la ligne de commande ou la tâche ANT.
Vous pouvez spécifier une couleur et une police d’écriture dans les stéréotypes d’activités.@startuml
skinparam backgroundColor #AAFFFFskinparam activity {StartColor redBarColor SaddleBrownEndColor SilverBackgroundColor PeruBackgroundColor<< Begin >> OliveBorderColor PeruFontName Impact}
(*) --> "Climbs on Platform" << Begin >>--> === S1 ===--> Bows--> === S2 ===--> WavesArmes
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 59 of 127
4.11 Octogone 4 DIAGRAMMES D’ACTIVITÉ
--> (*)
@enduml
4.11 Octogone
Vous pouvez changer la forme des activités en octogone en utilisant la commande skinparamactivityShape octagon.@startuml'Default is skinparam activityShape roundBoxskinparam activityShape octagon
(*) --> "First Activity""First Activity" --> (*)
@enduml
4.12 Exemple complet
@startumltitle Servlet Container
(*) --> "ClickServlet.handleRequest()"--> "new Page"
if "Page.onSecurityCheck" then->[true] "Page.onInit()"
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 60 of 127
4.12 Exemple complet 4 DIAGRAMMES D’ACTIVITÉ
if "isForward?" then->[no] "Process controls"
if "continue processing?" then-->[yes] ===RENDERING===else-->[no] ===REDIRECT_CHECK===endif
else-->[yes] ===RENDERING===endif
if "is Post?" then-->[yes] "Page.onPost()"--> "Page.onRender()" as render--> ===REDIRECT_CHECK===else-->[no] "Page.onGet()"--> renderendif
else-->[false] ===REDIRECT_CHECK===endif
if "Do redirect?" then->[yes] "redirect request"--> ==BEFORE_DESTROY===elseif "Do Forward?" then-left->[yes] "Forward request"--> ==BEFORE_DESTROY===else-right->[no] "Render page template"--> ==BEFORE_DESTROY===endifendif
--> "Page.onDestroy()"-->(*)
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 61 of 127
4.12 Exemple complet 4 DIAGRAMMES D’ACTIVITÉ
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 62 of 127
5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
5 Diagrammes d’activité (béta)
La syntaxe courante pour les diagrammes d’activité a plusieurs limitations et inconvénients (parexemple, c’est difficile à maintenir).Une complète nouvelle syntaxe et implémentation est proposée avec beta version aux utilisateurs(commence avec V7947), ainsi cela permet de définir une nouvelle et meilleure syntaxe.Un autre avantage de cette nouvelle implémentation est qu’il n’y a pas besoin d’avoir Graphvizd’installé (comme pour les diagrammes de séquences).La nouvelle syntaxe remplace l’ancienne. Cependant, pour des raisons de compatibilité, l’anciennesyntaxe reste reconnu, pour assurer la compatibilité ascendante.Les utilisateurs sont simplement encouragés à migrer vers la nouvelle syntaxe.
5.1 Activité simple
Les étiquettes d’activités commencent avec : et finissent avec ;.Le formatage de texte peut être fait en utilisant la syntaxe creole wiki.Ils sont implicitement liés à leur ordre de définition.@startuml:Hello world;:This is on defined onseveral **lines**;@enduml
5.2 Départ/Arrêt
Vous pouvez utiliser les mots clés start et stop pour indiquer le début et la fin du diagramme.@startumlstart:Hello world;:This is on defined onseveral **lines**;stop@enduml
Vous pouvez aussi utiliser le mot clés end.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 63 of 127
5.3 Conditionnel 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
@startumlstart:Hello world;:This is on defined onseveral **lines**;end@enduml
5.3 Conditionnel
Vous pouvez utiliser les mots clés if, then et else pour mettre des tests si votre diagramme. Lesétiquettes peuvent être fournies entre parenthèse.@startuml
start
if (Graphviz installed?) then (yes):process all\ndiagrams;else (no):process only__sequence__ and __activity__ diagrams;endif
stop
@enduml
Vous pouvez utiliser le mot clé elseif pour avoir plusieurs tests :@startumlstartif (condition A) then (yes):Text 1;elseif (condition B) then (yes):Text 2;stopelseif (condition C) then (yes):Text 3;elseif (condition D) then (yes):Text 4;
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 64 of 127
5.4 Boucle de répétition 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
else (nothing):Text else;endifstop@enduml
5.4 Boucle de répétition
Vous pouvez utiliser les mots clés repeat et repeatwhile pour créer une boucle.@startuml
start
repeat:read data;:generate diagrams;repeat while (more data?)
stop
@enduml
5.5 Boucle While
Vous pouvez utiliser les mots clés while et end while pour définir une boucle.@startuml
start
while (data available?)
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 65 of 127
5.6 Processus parallèle 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
:read data;:generate diagrams;endwhile
stop
@enduml
Il est possible de mettre un libellé après le mot clé endwhile ou bien avec le mot clé is.@startumlwhile (check filesize ?) is (not empty):read file;endwhile (empty):close file;@enduml
5.6 Processus parallèle
Vous pouvez utiliser les mots clés fork, fork again et end fork pour indiquer un processusparallèle.@startuml
start
if (multiprocessor?) then (yes)fork:Treatment 1;fork again:Treatment 2;end forkelse (monoproc):Treatment 1;:Treatment 2;endif
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 66 of 127
5.7 Notes 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
5.7 Notes
Le formattage de texte peut être fait en utilisant la syntaxe créole wiki.Une note peut aussi être détachée, à l’aide du mot-clé floating.@startuml
start:foo1;floating note left: This is a note:foo2;note rightThis note is on several//lines// and cancontain <b>HTML</b>====* Calling the method ""foo()"" is prohibitedend notestop
@enduml
5.8 Couleurs
Vous pouvez spécifier une couleur pour certaines activités.@startuml
start:starting progress;#HotPink:reading configuration filesThese files should edited at this point!;#AAAAAA:ending of the process;
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 67 of 127
5.9 Flèches 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
5.9 Flèches
Utiliser la notation ->, vous pouvez ajouter le texte à la flèche, et changer leur couleur.Il est aussi possible d’avoir des flèches en pointillé, en gras, avec des tirets ou bien complètementcachées.@startuml:foo1;-> You can put text on arrows;if (test) then-[#blue]->:foo2;-[#green,dashed]-> The text canalso be on several linesand **very** long...;:foo3;else-[#black,dotted]->:foo4;endif-[#gray,bold]->:foo5;@enduml
5.10 Groupement
Vous pouvez grouper les activités ensembles en définissant les partitions.@startumlstartpartition Initialization {
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 68 of 127
5.11 Couloirs 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
:read config file;:init internal variable;}partition Running {:wait for user interaction;:print information;}
stop@enduml
5.11 Couloirs
A l’aide du symbole |, il est possible de définir des couloirs d’éxecution.Il est aussi possible de changer la couleur d’un couloir.@startuml|Swimlane1|start:foo1;|#AntiqueWhite|Swimlane2|:foo2;:foo3;|Swimlane1|:foo4;|Swimlane2|:foo5;stop@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 69 of 127
5.12 Détacher 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
5.12 Détacher
Il est possible de supprimer un utilisant le mot clé detach.@startuml:start;fork:foo1;:foo2;fork again:foo3;detachendforkif (foo4) then:foo5;detachendif:foo6;detach:foo7;stop@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 70 of 127
5.13 SDL 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
5.13 SDL
En changeant le séparateur final ;, vous pouvez déterminer différents rendu pour l’activité
• |• <
• >
• /• ]• }
@startuml:Ready;:next(o)|:Receiving;split:nak(i)<:ack(o)>split again:ack(i)<:next(o)on several line|:i := i + 1]:ack(o)>split again:err(i)<:nak(o)>split again:foo/split again:i > 5}stopend split:finish;@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 71 of 127
5.14 Exemple complet 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
5.14 Exemple complet
@startuml
start:ClickServlet.handleRequest();:new page;if (Page.onSecurityCheck) then (true):Page.onInit();if (isForward?) then (no):Process controls;if (continue processing?) then (no)stopendif
if (isPost?) then (yes):Page.onPost();else (no):Page.onGet();endif:Page.onRender();endifelse (false)endif
if (do redirect?) then (yes):redirect process;elseif (do forward?) then (yes):Forward request;else (no):Render page template;endifendif
stop
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 72 of 127
5.14 Exemple complet 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 73 of 127
6 DIAGRAMMES DE COMPOSANTS
6 Diagrammes de composants
6.1 Composants
Les composants doivent être mis entre crochets.Il est aussi possible d’utiliser le mot-clé component pour définir un composant. Et vous pouvezdéfinir un alias, grâce au mot-clé the as. Cet alias sera utile plus tard, pour définir des relationsentre composants.@startuml
[First component][Another component] as Comp2component Comp3component [Last\ncomponent] as Comp4
@enduml
6.2 Interfaces
Les interfaces sont définies à l’aide du symbole ”()” (parce que cela ressemble à un cercle).Vous pouvez aussi utiliser le mot-clé interface pour définir une interface. Vous pouvez aussi définirun alias, à l’aide du mot-clé as. Cet alias pourrait être utilisé plus tard, lors de la définition desrelations.Nous verrons plus tard qu’il n’est pas obligatoire de définir les interfaces.@startuml
() "First Interface"() "Another interface" as Interf2interface Interf3interface "Last\ninterface" as Interf4
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 74 of 127
6.3 Exemple simple 6 DIAGRAMMES DE COMPOSANTS
6.3 Exemple simple
Les liens entre les éléments sont à utiliser avec des combinaisons de lignes pointillés (..), lignesdroites(--), et de flèches (-->).@startuml
DataAccess - [First Component][First Component] ..> HTTP : use
@enduml
6.4 Mettre des notes
Vous pouvez utiliser les commandes suivantes : note left of , note right of , note top of ,note bottom of keywords to define notes related to a single object.Une note peut auusi etre e alone with the note keywords, then linked to other objects using the ..symbol.@startuml
interface "Data Access" as DA
DA - [First Component][First Component] ..> HTTP : use
note left of HTTP : Web Service only
note right of [First Component]A note can alsobe on several linesend note
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 75 of 127
6.5 Regrouper des composants 6 DIAGRAMMES DE COMPOSANTS
6.5 Regrouper des composants
Vous pouvez utiliser le mot-clé package pour regrouper des composants et des interfaces ensembles.
• package• node• folder• frame• cloud• database
@startuml
package "Some Group" {HTTP - [First Component][Another Component]}
node "Other Groups" {FTP - [Second Component][First Component] --> FTP}
cloud {[Example 1]}
database "MySql" {folder "This is my folder" {[Folder 3]}frame "Foo" {[Frame 4]}}
[Another Component] --> [Example 1][Example 1] --> [Folder 3][Folder 3] --> [Frame 4]
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 76 of 127
6.6 Changer la direction des flèches 6 DIAGRAMMES DE COMPOSANTS
6.6 Changer la direction des flèches
Par défaut, les liens entre classes ont deux tirets -- et sont orientées verticalement. C’est possibled’utiliser horizontalement un lien en mettant un simple tiret (ou point) comme ceci :@startuml[Component] --> Interface1[Component] -> Interface2@enduml
Vous pouvez aussi changer le sens en renversant le lien@startumlInterface1 <-- [Component]Interface2 <- [Component]@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 77 of 127
6.7 Utiliser la notation UML2 6 DIAGRAMMES DE COMPOSANTS
Il est aussi possible de changer la direction des flèches e, ajoutant les mots clés left, right, up oudown à l’intérieur des flèches :@startuml[Component] -left-> left[Component] -right-> right[Component] -up-> up[Component] -down-> down@enduml
Vous pouvez raccourcir les flèches en utilisant seulement les premiers caractères de la direction (parexemple, -d- instead of -down-) ou les deux premiers caractères (-do-).Veuillez noter qu’il ne faut pas abuser de cette fonctionnalité : Graphviz donne généralement debon résultat sans modification.
6.7 Utiliser la notation UML2
La commande skinparam componentStyle uml2 est utilisée pour changer vers la notation UML2.@startumlskinparam componentStyle uml2
interface "Data Access" as DA
DA - [First Component][First Component] ..> HTTP : use
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 78 of 127
6.8 Description longue 6 DIAGRAMMES DE COMPOSANTS
6.8 Description longue
Il est possible de mettre un long texte sur plusieurs lignes en utilisant des crochets.@startumlcomponent comp1 [This componenthas a long commenton several lines]@enduml
6.9 Couleurs individuelles
Il est possible de spécifier une couleur après la définition du composant.@startumlcomponent [Web Server] #Yellow@enduml
6.10 Sprites et stéréotypes
Vous pouvez utiliser des sprites dans les stéréotypes des composants.@startumlsprite $businessProcess [16x16/16] {FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF00FFFFFF00000000000FFFFF000000000000FFFF00000000000FFFFFFFFFFFFF00FFFFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 79 of 127
6.11 Skinparam 6 DIAGRAMMES DE COMPOSANTS
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}
rectangle " End to End\nbusiness process" <<$businessProcess>> {rectangle "inner process 1" <<$businessProcess>> as srcrectangle "inner process 2" <<$businessProcess>> as tgtsrc -> tgt}@enduml
6.11 Skinparam
Vous pouvez utiliser la commande skinparam pour changer les couleurs et les polices du dessin.Vous pouvez utiliser cette commande :
• Dans la définition du diagramme, comme n’importe qu’elle autre commandes.• Dans un fichier inclus,• Dans le fichier de configuration, fournit par la ligne de commande ou la tâche ANT.
Vous pouvez définir des couleurs et des fontes spécifiques pour les composants et interfaces stéréo-typés.@startuml
skinparam interface {backgroundColor RosyBrownborderColor orange}
skinparam component {FontSize 13BackgroundColor<<Apache>> RedBorderColor<<Apache>> #FF6655FontName CourierBorderColor blackBackgroundColor goldArrowFontName ImpactArrowColor #FF6655ArrowFontColor #777777}
() "Data Access" as DA
DA - [First Component][First Component] ..> () HTTP : useHTTP - [Web Server] << Apache >>
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 80 of 127
6.11 Skinparam 6 DIAGRAMMES DE COMPOSANTS
@startuml[AA] <<static lib>>[BB] <<shared lib>>[CC] <<static lib>>
node node1node node2 <<shared node>>database Production
skinparam component {backgroundColor<<static lib>> DarkKhakibackgroundColor<<shared lib>> Green}
skinparam node {borderColor GreenbackgroundColor YellowbackgroundColor<<shared node>> Magenta}skinparam databaseBackgroundColor Aqua
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 81 of 127
7 DIAGRAMMES D’ÉTAT
7 Diagrammes d’état
7.1 Exemple simple
Vous devez utiliser [*] pour le début et la fin du diagramme d’état.Utilisez --> pour les flèches.@startuml
[*] --> State1State1 --> [*]State1 : this is a stringState1 : this is another string
State1 -> State2State2 --> [*]
@enduml
7.2 Etat composite
Un état peut également être composite. Vous devez alors le définir avec le mot-clé state et desaccolades.@startumlscale 350 width[*] --> NotShooting
state NotShooting {[*] --> IdleIdle --> Configuring : EvConfigConfiguring --> Idle : EvConfig}
state Configuring {[*] --> NewValueSelectionNewValueSelection --> NewValuePreview : EvNewValueNewValuePreview --> NewValueSelection : EvNewValueRejectedNewValuePreview --> NewValueSelection : EvNewValueSaved
state NewValuePreview {State1 -> State2}
}@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 82 of 127
7.3 Nom long 7 DIAGRAMMES D’ÉTAT
7.3 Nom long
Vous pouvez aussi utiliser le mot-clé state pour donner un nom avec des espaces à un état.@startumlscale 600 width
[*] -> State1State1 --> State2 : SucceededState1 --> [*] : AbortedState2 --> State3 : SucceededState2 --> [*] : Abortedstate State3 {state "Accumulate Enough Data\nLong State Name" as long1long1 : Just a test[*] --> long1long1 --> long1 : New Datalong1 --> ProcessData : Enough Data}State3 --> State3 : FailedState3 --> [*] : Succeeded / Save ResultState3 --> [*] : Aborted
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 83 of 127
7.4 Etat concurrent 7 DIAGRAMMES D’ÉTAT
7.4 Etat concurrent
Vous pouvez définir un état concurrent dans un état composé en utilisant le symbole -- commeséparateur.@startuml[*] --> Active
state Active {[*] -> NumLockOffNumLockOff --> NumLockOn : EvNumLockPressedNumLockOn --> NumLockOff : EvNumLockPressed--[*] -> CapsLockOffCapsLockOff --> CapsLockOn : EvCapsLockPressedCapsLockOn --> CapsLockOff : EvCapsLockPressed--[*] -> ScrollLockOffScrollLockOff --> ScrollLockOn : EvCapsLockPressedScrollLockOn --> ScrollLockOff : EvCapsLockPressed}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 84 of 127
7.5 Direction des flèches 7 DIAGRAMMES D’ÉTAT
7.5 Direction des flèches
Vous pouvez utiliser -> pour les flèches horizontales. Il est aussi possible de forcer la direction dela flèche avec la syntaxe suivante:
• -down-> (default arrow)• -right-> or ->• -left->• -up->
@startuml
[*] -up-> FirstFirst -right-> SecondSecond --> ThirdThird -left-> Last
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 85 of 127
7.6 Note 7 DIAGRAMMES D’ÉTAT
Vous pouvez aussi utiliser une notation abrégée, avec soit le premier caractère de la direction (parexemple -d- à la place de -down-) ou bien les deux premiers caractères (-do-).Veuillez noter qu’il ne faut pas abuser de cette fonction : Graphviz donne généralement de bonsrésultats sans peaufinage.
7.6 Note
Vous pouvez définir des notes avec : note left of, note right of, note top of, note bottomof Mots clés.Vous pouvez aussi définir des notes sur plusieurs lignes.@startuml
[*] --> ActiveActive --> Inactive
note left of Active : this is a short\nnote
note right of InactiveA note can alsobe defined onseveral linesend note
@enduml
Vous pouvez aussi avoir des notes flottantes.@startuml
state foonote "This is a floating note" as N1
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 86 of 127
7.7 Plus de notes 7 DIAGRAMMES D’ÉTAT
7.7 Plus de notes
Vous pouvez mettre des notes sur les états de composite@startuml
[*] --> NotShooting
state "Not Shooting State" as NotShooting {state "Idle mode" as Idlestate "Configuring mode" as Configuring[*] --> IdleIdle --> Configuring : EvConfigConfiguring --> Idle : EvConfig}
note right of NotShooting : This is a note on a composite state
@enduml
7.8 Skinparam
Vous pouvez utiliser la commande skinparam pour changer les couleurs et les polices pour le dessin.Vous pouvez utiliser cette commande :
• Dans la définition du diagramme, comme n’importe quelle autre commande,• Dans un fichier inclus,• Dans un fichier de configuration, à condition que dans la ligne de commande ou la tâche ANT.
Vous pouvez définir une couleur spécifique et une police d’écriture pour les états stéréotypés.@startumlskinparam backgroundColor LightYellowskinparam state {StartColor MediumBlueEndColor RedBackgroundColor PeruBackgroundColor<<Warning>> OliveBorderColor GrayFontName Impact}
[*] --> NotShooting
state "Not Shooting State" as NotShooting {
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 87 of 127
7.8 Skinparam 7 DIAGRAMMES D’ÉTAT
state "Idle mode" as Idle <<Warning>>state "Configuring mode" as Configuring[*] --> IdleIdle --> Configuring : EvConfigConfiguring --> Idle : EvConfig}
NotShooting --> [*]@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 88 of 127
8 DIAGRAMMES D’OBJETS
8 Diagrammes d’objets
8.1 Définition des objets
Les instances d’objets sont défnies avec le mot clé object.@startumlobject firstObjectobject "My Second Object" as o2@enduml
8.2 Relations entre les objets
Les relations entre objets sont définies à l’aide des symboles suivants :Héritage <|--Composition *--Agrégation o--
Il est possible de remplacer -- par .. pour avoir des pointillés.Grâce à ces règles, on peut avoir les dessins suivants:Il est possible d’ajouter une étiquette sur la relation, en utilisant ” : ”, suivi par le texte del’étiquette.Pour les cardinalités, vous pouvez utiliser les doubles quotes "" sur chaque côté de la relation.@startumlobject Object01object Object02object Object03object Object04object Object05object Object06object Object07object Object08
Object01 <|-- Object02Object03 *-- Object04Object05 o-- "4" Object06Object07 .. Object08 : some labels@enduml
8.3 Ajout de champs
Pour déclarer un champ, vous pouvez utiliser le symbole ":" suivi par le nom du champs.@startuml
object user
user : name = "Dummy"
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 89 of 127
8.4 Caractéristiques communes avec les diagrammes de classes 8 DIAGRAMMES D’OBJETS
user : id = 123
@enduml
It is also possible to ground between brackets { all fields.@startuml
object user {name = "Dummy"id = 123}
@enduml
8.4 Caractéristiques communes avec les diagrammes de classes• Visibilité• Ajout de notes• Utilisation de packages• Personnalisation de l’affichage
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 90 of 127
9 COMMANDES COMMUNES
9 Commandes communes
9.1 Commentaires
Notez que tout ce qui commence par une apostrophe ' est ignoré.Vous pouvez aussi mettre des commentaires sur plusieurs lignes en utilisant /' au début et '/ à lafin.
9.2 Entête et pied de page
Vous pouvez utiliser les commandes header ou footer pour ajouter un entête ou pied de page surun diagramme généré.Vous pouvez éventuellement spécifier la position de l’élément en utilisant les mots cléscenter, left ou right.Comme pour le titre, il est possible de définir un entête ou pied de page sur plusieurs lignes.Il est aussi possible de mettre du HTML dans l’entête ou dans le pied de page@startumlAlice -> Bob: Authentication Request
header<font color=red>Warning:</font>Do not use in production.endheader
center footer Generated for demonstration
@enduml
9.3 Zoom
Vous pouvez utiliser la commande scale pour zoomer l’image générée.Vous pouvez utiliser un nombre ou une fraction pour définir le facteur d’échelle. Vous pouvez aussispécifier la largeur et la hauteur (en pixel). Et vous pouvez aussi donner la largeur et la hauteur :l’image est mis à l’échelle pour s’adapter aux dimensions spécifiées.
• scale 1.5• scale 2/3• scale 200 width• scale 200 height• scale 200*100• scale max 300*200• scale max 1024 width• scale max 800 height
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 91 of 127
9.4 Titre 9 COMMANDES COMMUNES
@startumlscale 180*90Bob->Alice : hello@enduml
9.4 Titre
Le mot clée title est utilisé pour mettre un titre. Vous pouvez mettre des retours à la ligne enutilisant \n dans la description.Il est possible de mettre des bordures autour du titre.@startumlskinparam titleBorderRoundCorner 15skinparam titleBorderThickness 2skinparam titleBorderColor redskinparam titleBackgroundColor Aqua-CadetBlue
title Simple communication\nexample
Alice -> Bob: Authentication RequestBob --> Alice: Authentication Response
@enduml
Vous pouvez utiliser le formatage creole dans le titre.Vous pouvez aussi mettre un titre sur plusieurs lignes à l’aide des mots-clé title et end title.@startuml
title<u>Simple</u> communication exampleon <i>several</i> lines and using <back:cadetblue>creole tags</back>end title
Alice -> Bob: Authentication RequestBob -> Alice: Authentication Response
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 92 of 127
9.5 Sous-titre 9 COMMANDES COMMUNES
9.5 Sous-titre
Le mot-clé caption permet de rajouter un sous-titre en dessous du diagramme.@startuml
caption figure 1Alice -> Bob: Hello
@enduml
9.6 Spécifier la légende d’un diagramme
Les mots-clés legend et end legend délimitent la spécification d’une légende.Utiliser left, right ou center pour aligner la légende à gauche, à droite ou au centre respective-ment.@startuml
Alice -> Bob : Hellolegend rightShortlegendendlegend
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 93 of 127
10 SALT
10 Salt
Salt est un sous projet inclus dans PlantUML qui peut vous aider à modeler une interface graphique.Vous pouvez utiliser sois le mot clé @startsalt, ou bien @startuml suivi par une ligne avec le motclé salt.
10.1 widgets de base
Une fenêtre doit commencer et finir par une accolade. Vous pouvez ensuite définir:
• Un bouton en utilisant [ et ].• Un bouton radio en utilisant ( et ).• Une case à cocher en utilisant [ et ].• Zone de texte utilisateur utilisant ".
@startumlsalt{Just plain text[This is my button]() Unchecked radio(X) Checked radio[] Unchecked box[X] Checked box"Enter text here "^This is a droplist^}@enduml
Le but de cet outil est de discuter des échantillons de fenêtres simples.
10.2 Utilisation de grille
Un tableau est créé automatiquement en utilisant une accolade ouvrante {.Il faut utiliser | pour séparer les colomnes.Par exemple:@startsalt{Login | "MyName "Password | "**** "[Cancel] | [ OK ]}@endsalt
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 94 of 127
10.3 Utilisation des séparateurs 10 SALT
Tout de suite après l’accolade ouvrante, vous pouvez utiliser un caractère pour définir si vous voulezdessiner les lignes ou les colonnes de la grille :# Pour afficher toutes les lignes verticales et horizontales! Pour afficher toutes les lignes verticales- Pour afficher toutes les lignes horizontales+ Pour afficher les lignes extérieurs@startsalt{+Login | "MyName "Password | "**** "[Cancel] | [ OK ]}@endsalt
10.3 Utilisation des séparateurs
Vous pouvez utiliser de nombreuses lignes horizontales en tant que séparateur.@startsalt{Text1.."Some field"==Note on usage~~Another text--[Ok]}@endsalt
10.4 Widget d’arbre
Pour faire un arbre vous devez commencer avec {T et utiliser + pour signaler la hiérarchie.@startsalt{{T+ World++ America+++ Canada+++ USA++++ New York++++ Boston+++ Mexico++ Europe+++ Italy+++ Germany++++ Berlin
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 95 of 127
10.5 Accolades délimitantes 10 SALT
++ Africa}}@endsalt
10.5 Accolades délimitantes
Vous pouvez définir des sous-éléments en créant une accolade ouvrante.@startsalt{Name | " "Modifiers: | { (X) public | () default | () private | () protected[] abstract | [] final | [] static }Superclass: | { "java.lang.Object " | [Browse...] }}@endsalt
10.6 Ajout d’onglet
Vous pouvez ajouter des onglets avec la notation {/. Notez que vous pouvez utiliser du code HTMLpour avoir un texte en gras.@startsalt{+{/ <b>General | Fullscreen | Behavior | Saving }{{ Open image in: | ^Smart Mode^ }[X] Smooth images when zoomed[X] Confirm image deletion[ ] Show hidden images}[Close]}@endsalt
Les onglets peuvent également être orientés verticalement:
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 96 of 127
10.7 Utiliser les menus 10 SALT
@startsalt{+{/ <b>GeneralFullscreenBehaviorSaving } |{{ Open image in: | ^Smart Mode^ }[X] Smooth images when zoomed[X] Confirm image deletion[ ] Show hidden images[Close]}}@endsalt
10.7 Utiliser les menus
Vous pouvez ajouter un menu en utilisant la notation {*.@startsalt{+{* File | Edit | Source | Refactor }{/ General | Fullscreen | Behavior | Saving }{{ Open image in: | ^Smart Mode^ }[X] Smooth images when zoomed[X] Confirm image deletion[ ] Show hidden images}[Close]}@endsalt
Il est également possible d’ouvrir un menu:@startsalt{+{* File | Edit | Source | RefactorRefactor | New | Open File | - | Close | Close All }{/ General | Fullscreen | Behavior | Saving }{{ Open image in: | ^Smart Mode^ }[X] Smooth images when zoomed[X] Confirm image deletion[ ] Show hidden images}[Close]}@endsalt
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 97 of 127
10.8 Tableaux avancés 10 SALT
10.8 Tableaux avancés
Vous pouvez utiliser deux notations spéciales pour les tableaux :
• * pour indiquer que la cellule de gauche peut s’étendre sur l’actuelle• . pour indiquer une cellule vide
@startsalt{#. | Column 2 | Column 3Row header 1 | value 1 | value 2Row header 2 | A long cell | *}@endsalt
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 98 of 127
11 CRÉOLE
11 Créole
Un moteur Créole a été intégré à PlantUML de façon à standardiser la façon de définir les stylesde texte.Tous les digrammes acceptent cette syntaxe.La compatibilité ascendante avec la syntaxe HTML est préservée.
11.1 Mettre en avant du texte
@startumlAlice -> Bob : hello --there--... Some ~~long delay~~ ...Bob -> Alice : oknote leftThis is **bold**This is //italics//This is ""monospaced""This is --stroked--This is __underlined__This is ~~waved~~end note@enduml
11.2 Liste
@startumlobject demo {* Bullet list* Second item}note left* Bullet list* Second item** Sub itemend note
legend# Numbered list# Second item## Sub item## Another sub item# Third itemend legend@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 99 of 127
11.3 Caractère d’échappement 11 CRÉOLE
11.3 Caractère d’échappement
Vous pouvez utiliser le tilde ~ pour échapper des caractères spéciaux créoles.@startumlobject demo {This is not ~___underscored__.This is not ~""monospaced"".}@enduml
11.4 Lignes horizontales
@startumldatabase DB1 as "You can have horizontal line----Or double line====Or strong line____Or dotted line..My title..Enjoy!"note rightThis is working also in notesYou can also add title in all these lines==Title==--Another title--end note
@enduml
11.5 Entêtes
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 100 of 127
11.6 Code HTML 11 CRÉOLE
@startumlusecase UC1 as "= Extra-large headingSome text== Large headingOther text=== Medium headingInformation....==== Small heading"@enduml
11.6 Code HTML
Some HTML tags are also working:
• <b> pour du texte en gras• <u> ou <u:#AAAAAA> ou <u:colorName> pour souligner• <i> pour du texte en italic• <s> ou <s:#AAAAAA> ou <s:colorName> ou pour du texte barré• <w> ou <w:#AAAAAA> ou <w:colorName> pour souligner avec des vagues• <color:#AAAAAA> ou <color:colorName>• <back:#AAAAAA> ou <back:colorName> pour la couleur de fond• <size:nn> pour changer la taille de la police• <img:file> : le fichier doit être accessible par le système de fichier• <img:http://url> : l’URL doit être accessible depuis Internet
@startuml:* You can change <color:red>text color</color>* You can change <back:cadetblue>background color</back>* You can change <size:18>size</size>* You use <u>legacy</u> <b>HTML <i>tag</i></b>* You use <u:red>color</u> <s:green>in HTML</s> <w:#0000FF>tag</w>----* Use image : <img:sourceforge.jpg>;
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 101 of 127
11.7 Tableau 11 CRÉOLE
11.7 Tableau
Il est possible de créer des tableaux.@startumlskinparam titleFontSize 14titleExample of simple table|= |= table |= header || a | table | row || b | table | row |end title[*] --> State1@enduml
Vous pouvez choisir votre couleur de fond pour les cellules et les lignes.@startumlstart:Here is the result|= |= table |= header || a | table | row ||<#FF8080> red |<#80FF80> green |<#8080FF> blue |<#yellow>| b | table | row |;@enduml
11.8 Arbre
Vous pouvez utiliser le caractère |_ pour construire un arbre.@startumlskinparam titleFontSize 14titleExample of Tree|_ First line|_ **Bom(Model)**|_ prop1|_ prop2|_ prop3|_ Last lineend title[*] --> State1@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 102 of 127
11.9 Caractères spéciaux 11 CRÉOLE
11.9 Caractères spéciaux
Il est possible d’utiliser tous les caractères unicode avec la syntaxt &# ou <U+XXXX>@startumlusecase foo as "this is ∞ long"usecase bar as "this is also <U+221E> long"@enduml
11.10 OpenIconic
OpenIconic est un ensemble d’icône agréable au regard. Ces icônes ont été intégrés dans le parserCreole pour qu’ils soient prêt à l’emploi.Vous pouvez utiliser la syntaxe suivante: <&ICON_NAME>.@startumltitle: <size:20><&heart>Use of OpenIconic <&heart></size>class Wifinote leftClick on <&wifi>end note@enduml
La liste complète est disponible sur le site web OpenIconic, ou vous pouvez utiliser le diagrammesuivant:@startumllistopeniconic@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 103 of 127
11.10 OpenIconic 11 CRÉOLE
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 104 of 127
11.11 Déclarer et utiliser des sprites 11 CRÉOLE
11.11 Déclarer et utiliser des sprites
Un Sprite est un petit élément graphique que vous pouvez utiliser dans les diagrammes.Dans PlantUML, les sprites sont monochromes et peuvent avoir 4, 8 ou 16 niveaux de gris.Pour définir un sprite, vous devez utiliser des chiffres hexadecimaux, entre 0 et F, pour chaquepixel.Ensuite vous pouvez utiliser le sprite en faisant <$XXX> où XXX est le nom du sprite@startumlsprite $foo1 {FFFFFFFFFFFFFFFF0123456789ABCFF0123456789ABCFF0123456789ABCFF0123456789ABCFF0123456789ABCFF0123456789ABCFF0123456789ABCFF0123456789ABCFFFFFFFFFFFFFFFF}Alice -> Bob : Testing <$foo1>@enduml
You can scale the sprite.@startumlsprite $foo1 {FFFFFFFFFFFFFFFF0123456789ABCFF0123456789ABCFF0123456789ABCFF0123456789ABCFF0123456789ABCFF0123456789ABCFF0123456789ABCFF0123456789ABCFFFFFFFFFFFFFFFF}Alice -> Bob : Testing <$foo1{scale=3}>@enduml
11.12 Encoder des sprites
Pour encoder des sprites, vous pouvez utiliser la ligne de commande suivante:
java -jar plantuml.jar -encodesprite 16z foo.png
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 105 of 127
11.13 Importer des sprites 11 CRÉOLE
où foo.png est le fichier image que vous voulez utiliser (celui-ci va être converti en niveaux de grisautomatiquement).Après -encodesprite, vous pouvez spécifier un format: 4, 8, 16, 4z, 8z ou 16z.Le numéro indique le niveau de gris et vous pouvez rajouter un z pour activer de la compressiondans la définition du sprite.
11.13 Importer des sprites
Vous pouvez aussi démarrer l’interface graphique pour générer un sprite à partir d’une imageexistante.Cliquez dans les menus sur File/Open Sprite Window.
Après avoir copié l’image dans le presse-papier, plusieurs définitions possibles du sprite serontaffichées: il vous suffira d’extraire celle que vous désirez.
11.14 Exemples
@startumlsprite $printer [15x15/8z] NOtH3W0W208HxFz_kMAhj7lHWpa1XC716sz0Pq4MVPEWfBHIuxP3L6kbTcizR8tAhzaqFvXwvFfPEqm0start:click on <$printer> to print the page;@enduml
@startumlsprite $bug [15x15/16z] PKzR2i0m2BFMi15p__FEjQEqB1z27aeqCqixa8S4OT7C53cKpsHpaYPDJY_12MHM -BLRyywPhrrlw3qumqNThmXgd1TOterAZmOW8sgiJafogofWRwtV3nCFsprite $printer [15x15/8z] NOtH3W0W208HxFz_kMAhj7lHWpa1XC716sz0Pq4MVPEWfBHIuxP3L6kbTcizR8tAhzaqFvXwvFfPEqm0sprite $disk {44444556667788143600000000999143600000000ACA153700000001A7A153700000012B8A153800000123B8A163800001233C9A1634999AABBC99B1744566778899AB17456AAAAA99AAB18566AFC228AABB18567AC8118BBBB1867BD4433BBBBB139AAAAABBBBBBC1}
title Use of sprites (<$printer>, <$bug>...)
class Example {Can have some bug : <$bug>
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 106 of 127
11.14 Exemples 11 CRÉOLE
Click on <$disk> to save}
note left : The printer <$printer> is available
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 107 of 127
12 MODIFIER LES POLICES ET COULEURS DE CARACTÈRES
12 Modifier les polices et couleurs de caractères
12.1 Usage
Vous pouvez changer les couleurs et la police avec la commande skinparam. Exemple:skinparam backgroundColor yellow
Vous pouvez utiliser cette commande :
• Dans la définition du diagramme, comme les autres commandes,• Dans un fichier inclus (voir Preprocessing),• Dans un fichier de configuration, donné dans la ligne de commande ou dans la tâche ANT.
12.2 Imbrication
Pour éviter les répétitions, il est possible d’imbriquer les définitions. Ainsi, le texte suivant :skinparam xxxxParam1 value1skinparam xxxxParam2 value2skinparam xxxxParam3 value3skinparam xxxxParam4 value4
est absolument équivalent à :skinparam xxxx {
Param1 value1Param2 value2Param3 value3Param4 value4
}
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 108 of 127
12.3 Couleur 12 MODIFIER LES POLICES ET COULEURS DE CARACTÈRES
12.3 Couleur
Vous pouvez utiliser au choix le nom d’une couleur ou son code RVB.
Nom du paramètre Défaut Couleur CommentaireValeur
backgroundColor white Fond de la pageactivityArrowColor #A80036 Couleur des flèches des diagrammes d’activitéactivityBackgroundColor #FEFECE Couleur du fond des diagrammes d’activitéactivityBorderColor #A80036 Couleur des bordures des diagrammes d’activitéactivityStartColor black Etat (cercle) de départ dans les diagrammes d’activitéactivityEndColor black Etat (cercle) de fin dans les diagrammes d’activitéactivityBarColor black Barre de synchronisation dans les diagrammes d’activitéusecaseArrowColor #A80036 Couleurs des flèches dans les diagrammes de cas d’utilisationusecaseActorBackgroundColor #FEFECE Couleurs des acteurs dans les diagrammes de cas d’utilisationusecaseActorBorderColor #A80036 Couleur de la bordure d’un acteur dans un diagramme d’utilisationusecaseBackgroundColor #FEFECE Couleur de fond des cas d’utilisationusecaseBorderColor #A80036 Couleur de la bordure d’un cas d’utilisation dans un cas d’utilisationclassArrowColor #A80036 Couleurs des flèches dans les diagrammes de classeclassBackgroundColor #FEFECE Couleur de fond des classes dans les diagrammes de classeclassBorderColor #A80036 Bordure des classes/interface/enum dans les diagrammes de classespackageBackgroundColor #FEFECE Couleur de fond des packages dans les diagrammes de classespackageBorderColor #A80036 Bordures des packages dans les diagrammes de classesstereotypeCBackgroundColor #ADD1B2 Couleur de fond des points des classes dans les diagrammes de classesstereotypeABackgroundColor #A9DCDF Couleur de fond des points des classes abstraites dans les diagrammes de classesstereotypeIBackgroundColor #B4A7E5 Couleur de fond des points des interfaces dans les diagrammes de classesstereotypeEBackgroundColor #EB937F Couleur de fond des points des enum dans les diagrammes de classescomponentArrowColor #A80036 Couleur des flèches dans les diagrammes de composantscomponentBackgroundColor #FEFECE Couleur de fond des composantscomponentBorderColor #A80036 Bordure des composantscomponentInterfaceBackgroundColor #FEFECE Couleur de fond des interfaces dans les diagrammes de composantscomponentInterfaceBorderColor #A80036 Bordure des interfaces dans les diagrammes de composantsnoteBackgroundColor #FBFB77 Couleur de fond des notesnoteBorderColor #A80036 Bordure des notesstateBackgroundColor #FEFECE Fond d’état d’un diagramme d’étatstateBorderColor #A80036 Bordure d’état d’un diagramme d’étatstateArrowColor #A80036 Couleurs de flèches dans les diagrammes d’étatstateStartColor black Etat démarrage dans les diagrammes d’étatstateEndColor black Fin d’un cercle dans les diagrammes d’étatsequenceArrowColor #A80036 Couleurs des flèches dans les diagramme de séquencesequenceActorBackgroundColor #FEFECE Couleur de la tête des acteurs dans les diagrammes de séquencesequenceActorBorderColor #A80036 Contour des acteurs dans les diagrammes de séquencesequenceGroupBackgroundColor #EEEEEE Couleur de la tête de page de alt/opt/loop dans un diagramme de séquencesequenceLifeLineBackgroundColor white Fond d’une ligne de vie dans des diagrammes de séquencessequenceLifeLineBorderColor #A80036 Bordure de ligne de vie dans un digramme de séquencesequenceParticipantBackgroundColor #FEFECE Couleur de fond des participants dans les diagrammes de séquencessequenceParticipantBorderColor #A80036 Bordure des participants dans les diagrammes de séquence
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 109 of 127
12.4 Couleur de police, nom et taille12 MODIFIER LES POLICES ET COULEURS DE CARACTÈRES
12.4 Couleur de police, nom et taille
Vous pouvez changer la police d’écriture en utilisant xxxFontColor, paramètres xxxFontSize etxxxFontName .Exemple:skinparam classFontColor redskinparam classFontSize 10skinparam classFontName Aapex
Vous pouvez aussi changer la police par défaut pour toutes les polices utilisées skinparam defaultFontName.Exemple :skinparam defaultFontName Aapex
Veuillez noter que le nom de la police est hautement dépendent, alors ne l’utilisez pas trop, si c’estce que vous recherchez portabilité.
Paramètre Défaut CommentaireNom ValeuractivityFontColor black
Utilisé pour une boite d’activitéactivityFontSize 14activityFontStyle plainactivityFontNameactivityArrowFontColor black
Utilisé pour le texte et les flèches dans les diagrammes d’activité.activityArrowFontSize 13activityArrowFontStyle plainactivityArrowFontNamecircledCharacterFontColor black
Utilisé pour le texte en cercle pour les classes, énumérations et autres.circledCharacterFontSize 17circledCharacterFontStyle boldcircledCharacterFontName CouriercircledCharacterRadius 11classArrowFontColor black
Utilisé pour le texte sur les flèches dans les diagrammes de classe.classArrowFontSize 10classArrowFontStyle plainclassArrowFontNameclassAttributeFontColor black
Attribut et méthode de classesclassAttributeFontSize 10classAttributeIconSize 10classAttributeFontStyle plainclassAttributeFontNameclassFontColor black
Utilisé pour les noms de classeclassFontSize 12classFontStyle plainclassFontNameclassStereotypeFontColor black
Utilisé pour les stéréotypes de classesclassStereotypeFontSize 12classStereotypeFontStyle italicclassStereotypeFontNamecomponentFontColor black
Utilisé pour les noms de composantcomponentFontSize 14componentFontStyle plaincomponentFontNamecomponentStereotypeFontColor black
Utilisé pour stéréotypes de composantcomponentStereotypeFontSize 14componentStereotypeFontStyle italiccomponentStereotypeFontName
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 110 of 127
12.4 Couleur de police, nom et taille12 MODIFIER LES POLICES ET COULEURS DE CARACTÈRES
componentArrowFontColor black
Utilisé pour du texte sur les flèches dans un diagramme de composant.componentArrowFontSize 13componentArrowFontStyle plaincomponentArrowFontNamenoteFontColor black
Utilisé pour des notes dans tous les diagrammes mais le diagramme de séquencenoteFontSize 13noteFontStyle plainnoteFontNamepackageFontColor black
Utilisé pour le package les noms de partitionpackageFontSize 14packageFontStyle plainpackageFontNamesequenceActorFontColor black
Utilisé pour les acteurs dans le diagramme de séquencesequenceActorFontSize 13sequenceActorFontStyle plainsequenceActorFontNamesequenceDividerFontColor black
Utilisé pour le texte sur les séparateurs dans les diagrammes de séquence.sequenceDividerFontSize 13sequenceDividerFontStyle boldsequenceDividerFontNamesequenceArrowFontColor black
Texte sur les flèches dans les diagrammes de séquencesequenceArrowFontSize 13sequenceArrowFontStyle plainsequenceArrowFontNamesequenceGroupingFontColor black
Utilisé pour le texte pour ”else” dans les diagrammes de séquence.sequenceGroupingFontSize 11sequenceGroupingFontStyle plainsequenceGroupingFontNamesequenceGroupingHeaderFontColor black
Utilisé pour le texte pour ”alt/opt/loop” dans les diagrammes de séquence.sequenceGroupingHeaderFontSize 13sequenceGroupingHeaderFontStyle plainsequenceGroupingHeaderFontNamesequenceParticipantFontColor black
Utilisé pour le textesur les participants dans les diagrammes de séquence.sequenceParticipantFontSize 13sequenceParticipantFontStyle plainsequenceParticipantFontNamesequenceTitleFontColor black
Utilisé pour les titres dans les diagrammes de séquencesequenceTitleFontSize 13sequenceTitleFontStyle plainsequenceTitleFontNametitleFontColor black
Utilisé pour les titres de tous les diagrammes sauf diagrammes de séquence.titleFontSize 18titleFontStyle plaintitleFontNamestateFontColor black
Utlisé pour les états dans les diagrammes d’état.stateFontSize 14stateFontStyle plainstateFontNamestateArrowFontColor black
Utlisé pour le texte sur les flèches dans les diagrammes d’état.stateArrowFontSize 13stateArrowFontStyle plainstateArrowFontNamestateAttributeFontColor black
Utlisé pour les descriptions d’états dans les diagrammes d’état.stateAttributeFontSize 12stateAttributeFontStyle plainstateAttributeFontName
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 111 of 127
12.4 Couleur de police, nom et taille12 MODIFIER LES POLICES ET COULEURS DE CARACTÈRES
usecaseFontColor black
Utlisé pour les labels de cas d’utilisation dans les diagrammes de cas d’utilisation.usecaseFontSize 14usecaseFontStyle plainusecaseFontNameusecaseStereotypeFontColor black
Utlisé pour les stéréotypes dans les cas d’utilisationusecaseStereotypeFontSize 14usecaseStereotypeFontStyle italicusecaseStereotypeFontNameusecaseActorFontColor black
Utlisé pour les labels d’acteurs dans les diagrammes de cas d’utilisationusecaseActorFontSize 14usecaseActorFontStyle plainusecaseActorFontNameusecaseActorStereotypeFontColor black
Utlisé pour les stéréotypes d’acteursusecaseActorStereotypeFontSize 14usecaseActorStereotypeFontStyle italicusecaseActorStereotypeFontNameusecaseArrowFontColor black
Texte des flèches dans les diagrammes de cas d’utilisationusecaseArrowFontSize 13usecaseArrowFontStyle plainusecaseArrowFontNamefooterFontColor black
Utilisé pour le pied de pagefooterFontSize 10footerFontStyle plainfooterFontNameheaderFontColor black
Utilisé pour entête de pageheaderFontSize 10headerFontStyle plainheaderFontName
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 112 of 127
12.5 Noir et blanc 12 MODIFIER LES POLICES ET COULEURS DE CARACTÈRES
12.5 Noir et blanc
Vous pouvez forcer l’utilisation du noir et blanc en utilisant la commande skinparam monochrometrue.@startumlskinparam monochrome true
actor Userparticipant "First Class" as Aparticipant "Second Class" as Bparticipant "Last Class" as C
User -> A: DoWorkactivate A
A -> B: Create Requestactivate B
B -> C: DoWorkactivate CC --> B: WorkDonedestroy C
B --> A: Request Createddeactivate B
A --> User: Donedeactivate A
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 113 of 127
13 PRÉPROCESSEUR
13 Préprocesseur
Quelques fonctionnalités de préprocesseur sont présentes dans PlantUML, et disponibles pour tousles diagrammes.Ces fonctionnalités sont très proches du langage C, sauf que le point d’exclamation ”!” a été utiliséà la place du caractère ”#” pour les directives.
13.1 Inclusion de fichier
Il faut utiliser la directive !include pour inclure des fichiers dans les diagrammes.Supposons que vous avez la même classe qui apparaît dans de nombreux diagrammes. Au lieude dupliquer la description de la classe, vous pouvez créer un fichier unique qui contient cettedescription.@startuml!include List.iumlList <|.. ArrayList@enduml
File List.iuml: interface List List : int size() List : void clear()Le fichier List.iuml peut ainsi être inclu dans plusieurs fichiers, et tout changement dans ce fichiermodifiera l’ensemble des diagrammes qui l’utilise.Un fichier ne peut être inclus qu’une seule fois. Si vous voulez inclure plusieurs fois le même fichier,vous devez utiliser !include_many à la place de !include.Vous pouvez aussi mettre plusieurs @startuml/@enduml blocs de texte dans un fichier inclus etensuite spécifier le bloc que vous voulez inclure en ajoutant !0 où 0 est le numéro du bloc.Par example, si vous utilisez !include foo.txt!1, le second @startuml/@enduml bloque à l’intérieurfoo.txt sera inclus.You can also put an id to some @startuml/@enduml text block in an included file using @startuml(id=MY_OWN_ID)syntax and then include the block adding !MY_OWN_ID when including the file, so using somethinglike !include foo.txt!MY_OWN_ID.
13.2 Inclusion d’URL
Utiliser la directive !includeurl pour inclure dans votre diagramme un fichier depuis Internet ouun Intranet.Utilisez !includeurl http://someurl.com/mypath!0 pour spécifier quel @startuml/@endumlbloque vous voulez inclure à partir de http://someurl.com/mypath . La notation !0 désignele premier diagramme.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 114 of 127
13.3 Définition de constantes 13 PRÉPROCESSEUR
13.3 Définition de constantes
Vous pouvez définir les constantes en utilisant l’instruction !define. Comme en c, le nom d’uneconstante peut seulement utiliser des caractères alphanumérique et des underscore, et ne peut pascommencer par un nombre.@startuml
!define SEQUENCE (S,#AAAAAA) Database Sequence!define TABLE (T,#FFAAAA) Database Table
class USER << TABLE >>class ACCOUNT << TABLE >>class UID << SEQUENCE >>USER "1" -- "*" ACCOUNTUSER -> UID@enduml
Bien sur vous pouvez utiliser l’instruction !include pour définir toute les constantes dans un fichiersimple que vous pouvez inclure dans votre diagramme.Les constantes peuvent être définies avec l’instruction !undef XXX.Vous pouvez aussi définir les constantes en ligne de commande, avec le ”flag” -D.
java -jar plantuml.jar -DTITLE="My title" atest1.txt
Notez que l’option -D doit être mise après la partie ”-jar plantuml.jar”.
13.4 Définition de macro
Vous pouvez aussi définir des macros avec des arguments@startuml
!define module(x) component x <<module>>module(ABC)module(XYZ)@enduml
Les macros peuvent avoir plusieurs arguments@startuml!define send(a,b,c) a->b : csend(Alice, Bob, Hello)send(Bob, Alice, ok)@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 115 of 127
13.5 Ajout de la date et de l’heure 13 PRÉPROCESSEUR
13.5 Ajout de la date et de l’heure
Vous pouvez aussi afficher la date et l’heure actuelles en utilisant la variable spéciale %date%.Le format de la date peut être spécifié en utilisant le format spécifié dans la documentation deSimpleDataFormat.@startuml!define ANOTHER_DATE %date[yyyy.MM.dd 'at' HH:mm]%Title Generated %date% or ANOTHER_DATEalice -> bob@enduml
13.6 Autres variables spéciales
Vous pouvez aussi utiliser les variables spéciales suivantes :%dirpath% Emplacement du fichier courant%filename% Nom du fichier courant
13.7 Macro sur plusieurs lignes
Vous pouvez alors définir des macros sur plusieurs lignes en utilisant !definelong et !enddefinelong.@startuml!define DOUBLE(x) x x!definelong AUTHEN(x,y)x -> y : DOUBLE(hello)y -> x : ok!enddefinelong
AUTHEN(Bob,Alice)@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 116 of 127
13.8 Valeurs par défaut pour les paramètres de macros 13 PRÉPROCESSEUR
13.8 Valeurs par défaut pour les paramètres de macros
Il est possible d’assigner des valeurs par défaut pour les paramètres de macros.@startuml!define some_macro(x, y = "some default" , z = 'another default' ) x and y and zclass foo {some_macro(Z1, Z2, Z3)some_macro(Z1, Z2)some_macro(A)}@enduml
13.9 Conditions
Vous pouvez utiliser les directives !ifdef XXX et !endif pour avoir des parties optionnelles.Les lignes entre les deux directives ne seront mis que si la constante après la directive !ifdef a étédéfinie auparavant.Il est aussi possible d’utiliser un !else qui ne sera mis que si la constante n’a pas été définie.Les lignes qui sont entre les deux directives doivent être incluses seulement si la constante après!ifdef ont été définie avant.Vous pouvez aussi utiliser !else pour une partie qui doit être incluse si la constante n’a pas étédéfinie.@startuml!include ArrayList.iuml@enduml
File ArrayList.iuml:
class ArrayList!ifdef SHOW_METHODSArrayList : int size()ArrayList : void clear()!endif
Vous pouvez alors utiliser la directive !define pour activer la part conditionnel du diagramme.@startuml!define SHOW_METHODS!include ArrayList.iuml@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 117 of 127
13.10 Chemin de recherche 13 PRÉPROCESSEUR
Vous pouvez alors utiliser la directive !ifndef qui inclut les lignes à condition que la constantefournie n’ait pas été définie.Vous pouvez utiliser des expressions booléennes avec des parenthèses, les opérateurs et || dans letest.@startuml!define SHOW_FIELDS!undef SHOW_METHODSclass foo {!ifdef SHOW_FIELDS || SHOW_METHODSThis is shown!endif!ifdef SHOW_FIELDS && SHOW_METHODSThis is NOT shown!endif}@enduml
13.10 Chemin de recherche
Vous pouvez spécifier la propriété java ”plantuml.include.path” en ligne de commandePar exemple :
java -Dplantuml.include.path="c:/mydir" -jar plantuml.jar atest1.txt
Notez que l’option -D doit être utilisée avant l’option -jar. L’option -D après l’option -jar serautilisée pour définir des constantes du pré-processeur de plantuml.
13.11 Caractéristiques avancées
Il est possible d’ajouter du texte à une macro en utilisant la syntaxe ##.@startuml!definelong COMP_TEXTGENCOMP(name)[name] << Comp >>interface Ifc << IfcType >> AS name##Ifcname##Ifc - [name]!enddefinelongCOMP_TEXTGENCOMP(dummy)@enduml
Une macro peut être défini par une autre macro.@startuml!define DOUBLE(x) x x!definelong AUTHEN(x,y)x -> y : DOUBLE(hello)y -> x : ok!enddefinelongAUTHEN(Bob,Alice)@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 118 of 127
13.11 Caractéristiques avancées 13 PRÉPROCESSEUR
Une macro peut être polymorphique avec un nombre d’argument@startuml!define module(x) component x <<module>>!define module(x,y) component x as y <<module>>module(foo)module(bar, barcode)@enduml
Vous pouvez utiliser une variable d’environnement ou définir une constante dans les déclarationsdes includes.
!include %windir%/test1.txt!define PLANTUML_HOME /home/foo!include PLANTUML_HOME/test1.txt
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 119 of 127
14 INTERNATIONALISATION
14 InternationalisationLe langage PlantUML utilise des lettres pour définir des acteurs, des cas d’utilisation et d’autresentités. Mais les lettres ne sont pas simplement les caractères A à Z de l’alphabet latin, cela peutêtre n’importe quelle lettre dans n’importe quelle langue.
@startumlskinparam backgroundColor #EEEBDCactor 使用者participant "頭等艙 " as Aparticipant "第二類 " as Bparticipant "最後一堂課 " as 別的東西使用者 -> A: 完成這項工作activate AA -> B: 創建請求activate BB -> 別的東西 : 創建請求activate 別的東西別的東西 --> B: 這項工作完成destroy 別的東西B --> A: 請求創建deactivate BA --> 使用者 : 做完deactivate A@enduml
14.1 Jeux de caractères
Le jeux de caractères utilisé par défaut pour la lecture des fichiers texte contenant la descriptionUML dépend du système. Normalement, cela devrait convenir, mais dans certains cas, vous voudrezutiliser un autre jeu de caractères. Par exemple, en ligne de commande:java -jar plantuml.jar -charset UTF-8 files.txt
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 120 of 127
14.1 Jeux de caractères 14 INTERNATIONALISATION
Ou, avec la tâche ant:<target name="main"><plantuml dir="./src" charset="UTF-8" /></target>
En fonction de l’installation de Java, les encodages suivant devraient être présents sur votre système:ISO-8859-1, UTF-8, UTF-16BE, UTF-16LE, UTF-16.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 121 of 127
15 NOM DES COULEURS
15 Nom des couleurs
Voici la liste des couleurs reconnues par PlantUML. Notez que les noms de couleur ne prennent pasen compte les majuscules/minuscules.
AliceBlue GhostWhite NavajoWhiteAntiqueWhite GoldenRod NavyAquamarine Gold OldLaceAqua Gray OliveDrabAzure GreenYellow OliveBeige Green OrangeRedBisque HoneyDew OrangeBlack HotPink OrchidBlanchedAlmond IndianRed PaleGoldenRodBlueViolet Indigo PaleGreenBlue Ivory PaleTurquoiseBrown Khaki PaleVioletRedBurlyWood LavenderBlush PapayaWhipCadetBlue Lavender PeachPuffChartreuse LawnGreen PeruChocolate LemonChiffon PinkCoral LightBlue PlumCornflowerBlue LightCoral PowderBlueCornsilk LightCyan PurpleCrimson LightGoldenRodYellow RedCyan LightGreen RosyBrownDarkBlue LightGrey RoyalBlueDarkCyan LightPink SaddleBrownDarkGoldenRod LightSalmon SalmonDarkGray LightSeaGreen SandyBrownDarkGreen LightSkyBlue SeaGreenDarkKhaki LightSlateGray SeaShellDarkMagenta LightSteelBlue SiennaDarkOliveGreen LightYellow SilverDarkOrchid LimeGreen SkyBlueDarkRed Lime SlateBlueDarkSalmon Linen SlateGrayDarkSeaGreen Magenta SnowDarkSlateBlue Maroon SpringGreenDarkSlateGray MediumAquaMarine SteelBlueDarkTurquoise MediumBlue TanDarkViolet MediumOrchid TealDarkorange MediumPurple ThistleDeepPink MediumSeaGreen TomatoDeepSkyBlue MediumSlateBlue TurquoiseDimGray MediumSpringGreen VioletDodgerBlue MediumTurquoise WheatFireBrick MediumVioletRed WhiteSmokeFloralWhite MidnightBlue WhiteForestGreen MintCream YellowGreenFuchsia MistyRose YellowGainsboro Moccasin
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 122 of 127
CONTENTS CONTENTS
Contents
1 Diagramme de séquence 11.1 Exemples de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Déclaration de participants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Caractères non alphanumérique dans les participants . . . . . . . . . . . . . . . . . . 21.4 Message à soi-même . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.5 Autre style de flèches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.6 Changer la couleur des flèches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.7 Numérotation automatique des messages . . . . . . . . . . . . . . . . . . . . . . . . . 41.8 Découper un diagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.9 Regrouper les messages (cadres UML) . . . . . . . . . . . . . . . . . . . . . . . . . . 71.10 Note sur les messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.11 Encore plus de notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.12 Changer l’aspect des notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.13 Créole (langage de balisage léger) et HTML . . . . . . . . . . . . . . . . . . . . . . . 101.14 Séparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.15 Référence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.16 Retard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.17 Séparation verticale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.18 Lignes de vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.19 Création de participants. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.20 Messages entrant et sortant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.21 Stéréotypes et décoration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.22 Plus d’information sur les titres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.23 Cadre pour les participants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.24 Supprimer les en-pieds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.25 Personnalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.26 Changer le padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 Diagramme de cas d’utilisation 222.1 Cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.2 Acteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.3 Description des cas d’utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.4 Exemples très simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.5 Héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.6 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.7 Stéréotypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.8 Changer les directions des flèches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.9 Découper les diagrames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.10 De droite à gauche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.11 La commande Skinparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.12 Exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 123 of 127
CONTENTS CONTENTS
3 Diagramme de classes 303.1 Relations entre classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2 Libellés sur les relations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3 Définir les méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.4 Définir les visibilités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.5 Abstrait et statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.6 Corps de classe avancé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.7 Notes et stéréotypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.8 Encore des notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.9 Note sur les liens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.10 Classe abstraite et Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.11 Caractères non alphabétiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.12 Masquer les attributs et les méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . 413.13 Cacher des classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.14 Utilisation de la généricité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.15 Caractère spécial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.16 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.17 Modèle de paquet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433.18 Les espaces de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.19 Creation automatique d’espace de nommage . . . . . . . . . . . . . . . . . . . . . . . 453.20 Interface boucle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.21 Changer la direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.22 Classes d’association . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.23 Personnalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.24 Stéréotypes Personnalisés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.25 Dégradé de couleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.26 Aide pour la mise en page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503.27 Découper les grands diagrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4 Diagrammes d’activité 534.1 Exemple de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.2 Texte sur les flèches. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.3 Changer la direction des flèches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.4 Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544.5 Encore des branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.6 Synchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564.7 Description détaillée . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.8 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.9 Partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584.10 Paramètre de thème . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.11 Octogone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.12 Exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 124 of 127
CONTENTS CONTENTS
5 Diagrammes d’activité (béta) 635.1 Activité simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.2 Départ/Arrêt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635.3 Conditionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645.4 Boucle de répétition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.5 Boucle While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655.6 Processus parallèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.8 Couleurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675.9 Flèches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.10 Groupement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685.11 Couloirs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695.12 Détacher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705.13 SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.14 Exemple complet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6 Diagrammes de composants 746.1 Composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746.2 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746.3 Exemple simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.4 Mettre des notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756.5 Regrouper des composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766.6 Changer la direction des flèches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776.7 Utiliser la notation UML2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786.8 Description longue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796.9 Couleurs individuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796.10 Sprites et stéréotypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796.11 Skinparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7 Diagrammes d’état 827.1 Exemple simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827.2 Etat composite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827.3 Nom long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837.4 Etat concurrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847.5 Direction des flèches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 857.6 Note . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867.7 Plus de notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877.8 Skinparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8 Diagrammes d’objets 898.1 Définition des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898.2 Relations entre les objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898.3 Ajout de champs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898.4 Caractéristiques communes avec les diagrammes de classes . . . . . . . . . . . . . . . 90
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 125 of 127
CONTENTS CONTENTS
9 Commandes communes 919.1 Commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919.2 Entête et pied de page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919.3 Zoom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919.4 Titre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 929.5 Sous-titre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939.6 Spécifier la légende d’un diagramme . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
10 Salt 9410.1 widgets de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9410.2 Utilisation de grille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9410.3 Utilisation des séparateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9510.4 Widget d’arbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9510.5 Accolades délimitantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9610.6 Ajout d’onglet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9610.7 Utiliser les menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9710.8 Tableaux avancés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
11 Créole 9911.1 Mettre en avant du texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9911.2 Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9911.3 Caractère d’échappement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10011.4 Lignes horizontales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10011.5 Entêtes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10011.6 Code HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10111.7 Tableau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10211.8 Arbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10211.9 Caractères spéciaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10311.10OpenIconic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10311.11Déclarer et utiliser des sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10511.12Encoder des sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10511.13Importer des sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10611.14Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
12 Modifier les polices et couleurs de caractères 10812.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10812.2 Imbrication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10812.3 Couleur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10912.4 Couleur de police, nom et taille . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11012.5 Noir et blanc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 126 of 127
CONTENTS CONTENTS
13 Préprocesseur 11413.1 Inclusion de fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11413.2 Inclusion d’URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11413.3 Définition de constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11513.4 Définition de macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11513.5 Ajout de la date et de l’heure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11613.6 Autres variables spéciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11613.7 Macro sur plusieurs lignes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11613.8 Default values for macro parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . 11713.9 Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11713.10Chemin de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11813.11Caractéristiques avancées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
14 Internationalisation 12014.1 Jeux de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
15 Nom des couleurs 122
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 127 of 127