128
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.

Guide de référence du langage PlantUML

Embed Size (px)

Citation preview

Page 1: Guide de référence du langage PlantUML

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.

Page 2: Guide de référence du langage PlantUML

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

Page 3: Guide de référence du langage PlantUML

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

Page 4: Guide de référence du langage PlantUML

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

Page 5: Guide de référence du langage PlantUML

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

Page 6: Guide de référence du langage PlantUML

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

Page 7: Guide de référence du langage PlantUML

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

Page 8: Guide de référence du langage PlantUML

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

Page 9: Guide de référence du langage PlantUML

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

Page 10: Guide de référence du langage PlantUML

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

Page 11: Guide de référence du langage PlantUML

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

Page 12: Guide de référence du langage PlantUML

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

Page 13: Guide de référence du langage PlantUML

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

Page 14: Guide de référence du langage PlantUML

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

Page 15: Guide de référence du langage PlantUML

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

Page 16: Guide de référence du langage PlantUML

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

Page 17: Guide de référence du langage PlantUML

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

Page 18: Guide de référence du langage PlantUML

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

Page 19: Guide de référence du langage PlantUML

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

Page 20: Guide de référence du langage PlantUML

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

Page 21: Guide de référence du langage PlantUML

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

Page 22: Guide de référence du langage PlantUML

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

Page 23: Guide de référence du langage PlantUML

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

Page 24: Guide de référence du langage PlantUML

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

Page 25: Guide de référence du langage PlantUML

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

Page 26: Guide de référence du langage PlantUML

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

Page 27: Guide de référence du langage PlantUML

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

Page 28: Guide de référence du langage PlantUML

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

Page 29: Guide de référence du langage PlantUML

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

Page 30: Guide de référence du langage PlantUML

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

Page 31: Guide de référence du langage PlantUML

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

Page 32: Guide de référence du langage PlantUML

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

Page 33: Guide de référence du langage PlantUML

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

Page 34: Guide de référence du langage PlantUML

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

Page 35: Guide de référence du langage PlantUML

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

Page 36: Guide de référence du langage PlantUML

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

Page 37: Guide de référence du langage PlantUML

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

Page 38: Guide de référence du langage PlantUML

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

Page 39: Guide de référence du langage PlantUML

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

Page 40: Guide de référence du langage PlantUML

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

Page 41: Guide de référence du langage PlantUML

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

Page 42: Guide de référence du langage PlantUML

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

Page 43: Guide de référence du langage PlantUML

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

Page 44: Guide de référence du langage PlantUML

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

Page 45: Guide de référence du langage PlantUML

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

Page 46: Guide de référence du langage PlantUML

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

Page 47: Guide de référence du langage PlantUML

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

Page 48: Guide de référence du langage PlantUML

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

Page 49: Guide de référence du langage PlantUML

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

Page 50: Guide de référence du langage PlantUML

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

Page 51: Guide de référence du langage PlantUML

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

Page 52: Guide de référence du langage PlantUML

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

Page 53: Guide de référence du langage PlantUML

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

Page 54: Guide de référence du langage PlantUML

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

Page 55: Guide de référence du langage PlantUML

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

Page 56: Guide de référence du langage PlantUML

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

Page 57: Guide de référence du langage PlantUML

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

Page 58: Guide de référence du langage PlantUML

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

Page 59: Guide de référence du langage PlantUML

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

Page 60: Guide de référence du langage PlantUML

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

Page 61: Guide de référence du langage PlantUML

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

Page 62: Guide de référence du langage PlantUML

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

Page 63: Guide de référence du langage PlantUML

4.12 Exemple complet 4 DIAGRAMMES D’ACTIVITÉ

PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 62 of 127

Page 64: Guide de référence du langage PlantUML

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

Page 65: Guide de référence du langage PlantUML

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

Page 66: Guide de référence du langage PlantUML

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

Page 67: Guide de référence du langage PlantUML

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

Page 68: Guide de référence du langage PlantUML

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

Page 69: Guide de référence du langage PlantUML

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

Page 70: Guide de référence du langage PlantUML

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

Page 71: Guide de référence du langage PlantUML

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

Page 72: Guide de référence du langage PlantUML

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

Page 73: Guide de référence du langage PlantUML

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

Page 74: Guide de référence du langage PlantUML

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

Page 75: Guide de référence du langage PlantUML

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

Page 76: Guide de référence du langage PlantUML

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

Page 77: Guide de référence du langage PlantUML

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

Page 78: Guide de référence du langage PlantUML

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

Page 79: Guide de référence du langage PlantUML

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

Page 80: Guide de référence du langage PlantUML

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

Page 81: Guide de référence du langage PlantUML

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

Page 82: Guide de référence du langage PlantUML

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

Page 83: Guide de référence du langage PlantUML

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

Page 84: Guide de référence du langage PlantUML

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

Page 85: Guide de référence du langage PlantUML

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

Page 86: Guide de référence du langage PlantUML

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

Page 87: Guide de référence du langage PlantUML

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

Page 88: Guide de référence du langage PlantUML

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

Page 89: Guide de référence du langage PlantUML

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

Page 90: Guide de référence du langage PlantUML

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

Page 91: Guide de référence du langage PlantUML

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

Page 92: Guide de référence du langage PlantUML

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

Page 93: Guide de référence du langage PlantUML

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

Page 94: Guide de référence du langage PlantUML

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

Page 95: Guide de référence du langage PlantUML

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

Page 96: Guide de référence du langage PlantUML

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

Page 97: Guide de référence du langage PlantUML

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

Page 98: Guide de référence du langage PlantUML

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

Page 99: Guide de référence du langage PlantUML

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

Page 100: Guide de référence du langage PlantUML

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

Page 101: Guide de référence du langage PlantUML

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

Page 102: Guide de référence du langage PlantUML

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

Page 103: Guide de référence du langage PlantUML

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

Page 104: Guide de référence du langage PlantUML

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 &#8734; 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

Page 105: Guide de référence du langage PlantUML

11.10 OpenIconic 11 CRÉOLE

PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 104 of 127

Page 106: Guide de référence du langage PlantUML

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

Page 107: Guide de référence du langage PlantUML

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

Page 108: Guide de référence du langage PlantUML

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

Page 109: Guide de référence du langage PlantUML

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

Page 110: Guide de référence du langage PlantUML

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

Page 111: Guide de référence du langage PlantUML

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

Page 112: Guide de référence du langage PlantUML

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

Page 113: Guide de référence du langage PlantUML

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

Page 114: Guide de référence du langage PlantUML

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

Page 115: Guide de référence du langage PlantUML

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

Page 116: Guide de référence du langage PlantUML

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

Page 117: Guide de référence du langage PlantUML

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

Page 118: Guide de référence du langage PlantUML

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

Page 119: Guide de référence du langage PlantUML

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

Page 120: Guide de référence du langage PlantUML

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

Page 121: Guide de référence du langage PlantUML

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

Page 122: Guide de référence du langage PlantUML

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

Page 123: Guide de référence du langage PlantUML

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

Page 124: Guide de référence du langage PlantUML

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

Page 125: Guide de référence du langage PlantUML

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

Page 126: Guide de référence du langage PlantUML

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

Page 127: Guide de référence du langage PlantUML

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

Page 128: Guide de référence du langage PlantUML

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