Support de cours EJB :
- Architecture JEE
- Séparer le code métier et le code technique
- Inversion de contrôle
- EJB session
- EJB Entity
- Mise en oeuvre des projets EJB
- EJB et Web services
- JMS
- MDB
- Gestion de transactions avec EJB
- Application
Ce Support de cours Spring contient :
- Architecture JEE (Over view)
- Spring Overview
- Spring IOC
- Spring MVC
- Spring Integration (RMI, JaxWS, JaxRS, JMS, JMX,...)
- Spring Security
Bon apprentissage à tous
Ce support explique les concepts de base de Big Data Processing. Elle aborde les parties suivantes :
Série de vidéos : https://www.youtube.com/watch?v=1JAljjxpm-Q
- Introduction au Big Data
- Système de stockage en Big Data
- Batch Processing et Stream Processing en Big Data
- Aperçu bref de l’écosystème de Hadoop
- Aperçu de l’écosystème des outils du Bid Gata
- Big data stream processing avec Kafka écosystème
- Architecture de Kafka (Brokers, Zookeeper, Procuder, Consumer, Kafka Streams, Connecteurs)
- Comment démarrer un cluster de brokers KAFKA
- Création et configuration des Topics
- Création d’un Java Kafka consumer
- Création d’un Java Kafka Produder
- Kafka Producer et Kafka Consumer dans une application basée sur Spring
- Kafka Streams
- Intégration de Kafka dans Spring Cloud.
Mot clés : Big data, Big Data Processing, Stream Processing, Kafka, Kafka Streams, Java, Spring
Bon apprentissage
Chapitre 2 de la formation "Java avancé", qui est composée de :
1 - introspection et annotations
2 - programmation concurrente
3 - communications distantes
4 - administration et supervision avec JMX
5 - utilisation du code natif avec JNI
Ce support de cours contient les concepts fondamentaux de la sécurité des applications Web Statless avec Json Web Token. Des applications de mise en oeuvre de JWT et Spring Security pour les applications basées sur les Micro-services sont publiées ma chaîne vidéo Youtube :
https://www.youtube.com/user/mohamedYoussfi
Le code source des applications est publié sur mon compte GitHUB:
https://github.com/mohamedYoussfi/
Bon apprentissage
Ce support explique les concepts de bases du principe de l'inversion de contrôle et d'injections des dépendances.
Les concepts les plus importants à comprendre par les futurs ingénieurs du génie Logiciel.
Machine à Glaçons explication sur ces fonctionsmachine glaçon
Les Machines à Glaçons : Fonctionnement, Types et Usages
Introduction
Les machines à glaçons sont devenues des équipements indispensables dans de nombreux environnements, qu’il s’agisse de la restauration, des bars, des hôtels ou même des foyers. Elles permettent de produire rapidement des glaçons de manière automatique, garantissant un approvisionnement constant en glace, essentiel pour le service de boissons ou la conservation de certains aliments.
Fonctionnement d’une machine à glaçons
Une machine à glaçons fonctionne généralement selon le principe suivant :
Remplissage en eau : L’eau est acheminée vers une plaque de congélation ou un moule.
Congélation : Un système de refroidissement (souvent à compresseur) refroidit l’eau jusqu’à ce qu’elle forme des glaçons.
Démoulage : Une fois formés, les glaçons sont libérés de leur moule grâce à un cycle de chauffage rapide ou à un mouvement mécanique.
Stockage : Les glaçons tombent dans un bac de stockage isolé, prêt à l’emploi.
Types de machines à glaçons
Il existe plusieurs types de machines à glaçons, chacun adapté à des besoins spécifiques :
Machine à glaçons portable : Compacte et légère, idéale pour un usage domestique ou ponctuel.
Machine à glaçons sous-comptoir : Installée de façon permanente, elle convient aux petits bars et restaurants.
Machine à glaçons industrielle : Capable de produire plusieurs centaines de kilos de glace par jour, elle est utilisée dans les hôtels, hôpitaux ou industries alimentaires.
Formes de glaçons produites
Selon le modèle, une machine peut produire différentes formes de glace :
Glaçons pleins : Solides et durables, parfaits pour les cocktails.
Glaçons creux : Se forment plus rapidement, souvent utilisés dans les machines domestiques.
Glace pilée : Utilisée pour les présentations, les fruits de mer ou certaines boissons.
Flake ice (glace en flocons) : Couramment utilisée dans les supermarchés ou la médecine.
Critères de choix
Lors de l’achat d’une machine à glaçons, plusieurs facteurs doivent être pris en compte :
Capacité de production journalière.
Taille du bac de stockage.
Vitesse de production.
Type de glaçons souhaités.
Dimensions de la machine et facilité d’entretien.
Niveau sonore (surtout pour un usage domestique).
Conclusion
Les machines à glaçons offrent un gain de temps et de praticité pour tous ceux qui ont un besoin régulier de glace. Qu’il s’agisse d’un usage professionnel ou personnel, il existe une machine adaptée à chaque situation. Bien choisir son appareil garantit un fonctionnement optimal et une glace de qualité, toujours prête à l’emploi.
Ce support explique les concepts de base de Big Data Processing. Elle aborde les parties suivantes :
Série de vidéos : https://www.youtube.com/watch?v=1JAljjxpm-Q
- Introduction au Big Data
- Système de stockage en Big Data
- Batch Processing et Stream Processing en Big Data
- Aperçu bref de l’écosystème de Hadoop
- Aperçu de l’écosystème des outils du Bid Gata
- Big data stream processing avec Kafka écosystème
- Architecture de Kafka (Brokers, Zookeeper, Procuder, Consumer, Kafka Streams, Connecteurs)
- Comment démarrer un cluster de brokers KAFKA
- Création et configuration des Topics
- Création d’un Java Kafka consumer
- Création d’un Java Kafka Produder
- Kafka Producer et Kafka Consumer dans une application basée sur Spring
- Kafka Streams
- Intégration de Kafka dans Spring Cloud.
Mot clés : Big data, Big Data Processing, Stream Processing, Kafka, Kafka Streams, Java, Spring
Bon apprentissage
Chapitre 2 de la formation "Java avancé", qui est composée de :
1 - introspection et annotations
2 - programmation concurrente
3 - communications distantes
4 - administration et supervision avec JMX
5 - utilisation du code natif avec JNI
Ce support de cours contient les concepts fondamentaux de la sécurité des applications Web Statless avec Json Web Token. Des applications de mise en oeuvre de JWT et Spring Security pour les applications basées sur les Micro-services sont publiées ma chaîne vidéo Youtube :
https://www.youtube.com/user/mohamedYoussfi
Le code source des applications est publié sur mon compte GitHUB:
https://github.com/mohamedYoussfi/
Bon apprentissage
Ce support explique les concepts de bases du principe de l'inversion de contrôle et d'injections des dépendances.
Les concepts les plus importants à comprendre par les futurs ingénieurs du génie Logiciel.
Machine à Glaçons explication sur ces fonctionsmachine glaçon
Les Machines à Glaçons : Fonctionnement, Types et Usages
Introduction
Les machines à glaçons sont devenues des équipements indispensables dans de nombreux environnements, qu’il s’agisse de la restauration, des bars, des hôtels ou même des foyers. Elles permettent de produire rapidement des glaçons de manière automatique, garantissant un approvisionnement constant en glace, essentiel pour le service de boissons ou la conservation de certains aliments.
Fonctionnement d’une machine à glaçons
Une machine à glaçons fonctionne généralement selon le principe suivant :
Remplissage en eau : L’eau est acheminée vers une plaque de congélation ou un moule.
Congélation : Un système de refroidissement (souvent à compresseur) refroidit l’eau jusqu’à ce qu’elle forme des glaçons.
Démoulage : Une fois formés, les glaçons sont libérés de leur moule grâce à un cycle de chauffage rapide ou à un mouvement mécanique.
Stockage : Les glaçons tombent dans un bac de stockage isolé, prêt à l’emploi.
Types de machines à glaçons
Il existe plusieurs types de machines à glaçons, chacun adapté à des besoins spécifiques :
Machine à glaçons portable : Compacte et légère, idéale pour un usage domestique ou ponctuel.
Machine à glaçons sous-comptoir : Installée de façon permanente, elle convient aux petits bars et restaurants.
Machine à glaçons industrielle : Capable de produire plusieurs centaines de kilos de glace par jour, elle est utilisée dans les hôtels, hôpitaux ou industries alimentaires.
Formes de glaçons produites
Selon le modèle, une machine peut produire différentes formes de glace :
Glaçons pleins : Solides et durables, parfaits pour les cocktails.
Glaçons creux : Se forment plus rapidement, souvent utilisés dans les machines domestiques.
Glace pilée : Utilisée pour les présentations, les fruits de mer ou certaines boissons.
Flake ice (glace en flocons) : Couramment utilisée dans les supermarchés ou la médecine.
Critères de choix
Lors de l’achat d’une machine à glaçons, plusieurs facteurs doivent être pris en compte :
Capacité de production journalière.
Taille du bac de stockage.
Vitesse de production.
Type de glaçons souhaités.
Dimensions de la machine et facilité d’entretien.
Niveau sonore (surtout pour un usage domestique).
Conclusion
Les machines à glaçons offrent un gain de temps et de praticité pour tous ceux qui ont un besoin régulier de glace. Qu’il s’agisse d’un usage professionnel ou personnel, il existe une machine adaptée à chaque situation. Bien choisir son appareil garantit un fonctionnement optimal et une glace de qualité, toujours prête à l’emploi.
Enjeux et opportunités de IA dans un contexte de gestion et marketingMichelle Blanc
💡 1. Pourquoi l’IA nous concerne toutes et tous
Elle transforme notre façon de créer, vendre, gérer.
Outil puissant… mais à manier avec discernement.
🤖 2. L’IA au service du marketing et de la gestion
Génération de contenus (textes, visuels, vidéos)
Analyse de campagnes et segmentation
Personnalisation à grande échelle
Automatisation intelligente de tâches répétitives
Outils GEO (Generative Engine Optimization)
🧩 3. L’art de bien parler à l’IA : le prompt
Identité + Contexte + Action + Objectif + Tonalité + Format
Exemples :
« Trouve-moi 5 idées d’articles originaux sur le tourisme local »
« Analyse ces données de campagne et optimise-les »
🧭 4. Une IA… vraiment responsable?
L’humain reste dans la boucle
Respect de la vie privée et des lois
Refus de manipulations, désinformation ou usage uniquement lucratif
Transparence, collaboration et formation continue
🚫 5. Limites et bugs bien réels
Biais sexistes ou racistes
Incapacité à comprendre les émotions ou le contexte
Créativité mécanique, sans intuition
Exemples d’images absurdes : 6 doigts, objets incohérents…
💬 6. Être intéressant plutôt qu’intéressé
L’IA amplifie le narcissisme numérique
Notre rôle : redonner du sens, de l’émotion et de l’utilité à nos communications
🎯 Conclusion : Évoluer avec l’IA
Elle est un levier, pas une fin
Le jugement, l’intuition, la créativité humaine restent irremplaçables
Soyons critiques, curieux et stratégiques
1. 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.
2. 1 DIAGRAMME DE SÉQUENCE
1 Diagramme de séquence
1.1 Exemples de base
Le symbole ”->” est utilisé pour dessiner un message entre deux participants. Les participants n’ont pas
besoin 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 sont
différentes pour les autres diagrammes.
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
1.2 Déclaration de participants
Il 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
@startuml
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
collections Foo6
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
Foo1 -> Foo6 : To collections
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 1 of 127
3. 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.
@startuml
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant "I have a reallynlong name" as L #99FF99
/' You can also declare:
participant L as "I have a reallynlong name" #99FF99
'/
Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml
1.3 Caractères non alphanumérique dans les participants
Si vous voulez mettre des charactères non alphanumériques, il est possible d’utiliser des guillemets. Et
on peut utiliser le mot clé as pour définir un alias pour ces participants.
@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "This is verynlong" as Long
' You can also declare:
' "Bob()" -> Long as "This is verynlong"
Long --> "Bob()" : ok
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 2 of 127
4. 1.4 Message à soi-même 1 DIAGRAMME DE SÉQUENCE
1.4 Message à soi-même
Un participant peut très bien s’envoyer un message.
Il est possible de mettre un message sur plusieurs lignes grâce à n.
@startuml
Alice->Alice: This is a signal to self.nIt also demonstratesnmultiline ntext
@enduml
1.5 Autre style de flèches
Vous 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 la
flè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
@startuml
Bob ->x Alice
Bob -> Alice
Bob ->> Alice
Bob - Alice
Bob - Alice
Bob //-- Alice
Bob ->o Alice
Bob o-- Alice
Bob <-> Alice
Bob <->o Alice
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 3 of 127
5. 1.6 Changer la couleur des flèches 1 DIAGRAMME DE SÉQUENCE
1.6 Changer la couleur des flèches
Changer la couleur d’une flèche ainsi:
@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml
1.7 Numérotation automatique des messages
Le mot clé autonumber est utilisé pour ajouter automatiquement des numéros aux messages.
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml
Spécifier le numéro de départ avec autonumber 'start' , et l’incrément avec autonumber 'start'
'increment'.
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber 15
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response
autonumber 40 10
Bob -> Alice : Yet another authentication Request
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 4 of 127
6. 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.
@startuml
autonumber "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber 15 "<b>(<u>##</u>)"
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response
autonumber 40 10 "<font color=red><b>Message 0 "
Bob -> Alice : Yet another authentication Request
Bob <- 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.
@startuml
autonumber 10 10 "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber stop
Bob -> Alice : dummy
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 5 of 127
7. 1.8 Découper un diagramme 1 DIAGRAMME DE SÉQUENCE
autonumber resume "<font color=red><b>Message 0 "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
autonumber stop
Bob -> Alice : dummy
autonumber resume 1 "<font color=blue><b>Message 0 "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml
1.8 Découper un diagramme
Le 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 1
Alice -> Bob : message 2
newpage
Alice -> Bob : message 3
Alice -> Bob : message 4
newpage A title for thenlast page
Alice -> Bob : message 5
Alice -> Bob : message 6
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 6 of 127
8. 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 fermer
le groupe. Il est aussi possible d’imbriquer les groupes.
Terminer le cadre avec le mot-clé end.
Il est possible d’imbriquer les cadres.
@startuml
Alice -> Bob: Authentication Request
alt successful case
Bob -> Alice: Authentication Accepted
else some kind of failure
Bob -> Alice: Authentication Failure
group My own label
Alice -> Log : Log attack start
loop 1000 times
Alice -> Bob: DNS Attack
end
Alice -> Log : Log attack end
end
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
9. 1.10 Note sur les messages 1 DIAGRAMME DE SÉQUENCE
1.10 Note sur les messages
Pour attacher une note à un message, utiliser les mots-clés note left (pour une note à gauche) ou note
right (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.
@startuml
Alice->Bob : hello
note left: this is a first note
Bob->Alice : ok
note right: this is another note
Bob->Bob : I am thinking
note left
a note
can also be defined
on several lines
end note
@enduml
1.11 Encore plus de notes
Il 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
10. 1.12 Changer l’aspect des notes 1 DIAGRAMME DE SÉQUENCE
@startuml
participant Alice
participant Bob
note left of Alice #aqua
This is displayed
left 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 displayedn over Bob and Alice.
note over Bob, Alice
This is yet another
example of
a long note.
end note
@enduml
1.12 Changer l’aspect des notes
Vous pouvez préciser la forme géométrique des notes. (rnote : rectangulaire, ou hnote : hexagonale)
@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
"r" as rectangle
"h" as hexagon
endrnote
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 9 of 127
11. 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 HTML
Il est également possible d’utiliser le formatage créole (langage de balisage léger):
@startuml
participant Alice
participant "The **Famous** Bob" as Bob
Alice -> Bob : hello --there--
... Some ~~long delay~~ ...
Bob -> Alice : ok
note left
This is **bold**
This is //italics//
This is ""monospaced""
This is --stroked--
This is __underlined__
This is ~~waved~~
end note
Alice -> Bob : A //well formatted// message
note right of Alice
This is <back:cadetblue><size:18>displayed </size></back>
__left of__ Alice.
end note
note left of Bob
<u:red>This</u> is <color #118888>displayed </color>
**<color purple>left of</color> <s:red>Alice</strike> Bob**.
end note
note 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
12. 1.14 Séparation 1 DIAGRAMME DE SÉQUENCE
1.14 Séparation
Si vous voulez, vous pouvez séparer le diagramme avec l’aide de ”==” en étapes logiques.
@startuml
== Initialization ==
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
== Repetition ==
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
1.15 Référence
Vous 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
13. 1.16 Retard 1 DIAGRAMME DE SÉQUENCE
@startuml
participant Alice
actor Bob
ref over Alice, Bob : init
Alice -> Bob : hello
ref over Bob
This can be on
several lines
end ref
@enduml
1.16 Retard
Utiliser ... pour indiquer le passage de temps arbitraire dans le diagramme. Un message peut être
associé à un retard.
@startuml
Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes latter...
Bob --> Alice: Bye !
@enduml
1.17 Séparation verticale
Utiliser ||| pour créer un espace vertical dans le diagramme.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 12 of 127
14. 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 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: ok
@enduml
1.18 Lignes de vie
Vous 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.
@startuml
participant User
User -> A: DoWork
activate A
A -> B: << createRequest >>
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: RequestCreated
deactivate B
A -> User: Done
deactivate A
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 13 of 127
15. 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.
@startuml
participant User
User -> A: DoWork
activate A #FFBBBB
A -> A: Internal call
activate A #DarkSalmon
A -> B: << createRequest >>
activate B
B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate 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 que
le message en question est une création d’un nouvelle objet.
@startuml
Bob -> Alice : hello
create Other
Alice -> Other : new
create control String
Alice -> String
note right : You can also put notes!
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 14 of 127
16. 1.20 Messages entrant et sortant 1 DIAGRAMME DE SÉQUENCE
Alice --> Bob : ok
@enduml
1.20 Messages entrant et sortant
Vous 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 call
activate A
A ->] : << createRequest >>
A<--] : RequestCreated
deactivate A
[<- A: Done
deactivate 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
17. 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écoration
Il 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 ce
comportement en utilisant la propriété skinparam guillemet:
@startuml
skinparam guillemet false
participant "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
18. 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 titres
Vous pouvez utiliser le formatage creole dans le titre.
@startuml
title __Simple__ **communication** example
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
Vous pouvez mettre des retours à la ligne en utilisant n dans la description.
@startuml
title __Simple__ communication examplenon several lines
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 17 of 127
19. 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 example
on <i>several </i> lines and using <font color=red>html</font>
This is hosted by <img:sourceforge.jpg>
end title
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
1.23 Cadre pour les participants
Il est possible de dessiner un cadre autour de certains participants, en utilisant les commandes box et
end box.
Vous pouvez ajouter un titre ou bien une couleur de fond après le mot-clé box.
@startuml
box "Internal Service" #LightBlue
participant Bob
participant Alice
end box
participant Other
Bob -> Alice : hello
Alice -> Other : hello
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 18 of 127
20. 1.24 Supprimer les en-pieds 1 DIAGRAMME DE SÉQUENCE
1.24 Supprimer les en-pieds
Vous pouvez utiliser le mot-clé hide footbox pour supprimer la partie basse du diagramme.
@startuml
hide footbox
title Footer removed
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
@enduml
1.25 Personnalisation
Vous 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 exemples
suivants:
@startuml
skinparam sequenceArrowThickness 2
skinparam roundcorner 20
skinparam maxmessagesize 60
skinparam sequenceParticipant underline
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: Create Request
activate B
B -> C: DoWork
activate C
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 19 of 127
21. 1.25 Personnalisation 1 DIAGRAMME DE SÉQUENCE
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml
@startuml
skinparam backgroundColor #EEEBDC
skinparam handwritten true
skinparam sequence {
ArrowColor DeepSkyBlue
ActorBorderColor DeepSkyBlue
LifeLineBorderColor blue
LifeLineBackgroundColor #A9DCDF
ParticipantBorderColor DeepSkyBlue
ParticipantBackgroundColor DodgerBlue
ParticipantFontName Impact
ParticipantFontSize 17
ParticipantFontColor #A9DCDF
ActorBackgroundColor aqua
ActorFontColor DeepSkyBlue
ActorFontSize 17
ActorFontName Aapex
}
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: Create Request
activate B
B -> C: DoWork
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 20 of 127
22. 1.26 Changer le padding 1 DIAGRAMME DE SÉQUENCE
activate C
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml
1.26 Changer le padding
Il est possible de changer certains paramètres du padding.
@startuml
skinparam ParticipantPadding 20
skinparam BoxPadding 10
box "Foo1"
participant Alice1
participant Alice2
end box
box "Foo2"
participant Bob1
participant Bob2
end box
Alice1 -> Bob1 : hello
Alice1 -> Out : out
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 21 of 127
23. 2 DIAGRAMME DE CAS D’UTILISATION
2 Diagramme de cas d’utilisation
2.1 Cas d’utilisation
Les 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éfinir
un 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 UC3
usecase (Lastnusecase) as UC4
@enduml
2.2 Acteurs
Un 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 alias
avec 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:
:Anothernactor: as Men2
actor Men3
actor :Last actor: as Men4
@enduml
2.3 Description des cas d’utilisation
Si 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 dans
les séparateurs.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 22 of 127
24. 2.4 Exemples très simples 2 DIAGRAMME DE CAS D’UTILISATION
@startuml
usecase UC1 as "You can use
several 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 simples
Pour 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 la
flè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 implicitement
reconnu comme acteur.
@startuml
User -> (Start)
User --> (Use the application) : A small label
:Main Admin: ---> (Use the application) : This isnyet anothernlabel
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 23 of 127
25. 2.5 Héritage 2 DIAGRAMME DE CAS D’UTILISATION
2.5 Héritage
Si 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 Notes
Vous pouvez utiliser les mots clés note left of , note right of , note top of , note bottom of pour
dé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 utilisant
le 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 also
be on several lines
end note
note "This note is connectednto several objects." as N2
(Start) .. N2
N2 .. (Use)
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 24 of 127
26. 2.7 Stéréotypes 2 DIAGRAMME DE CAS D’UTILISATION
2.7 Stéréotypes
Vous pouvez ajouter des stéréotypes à la définition des acteurs et des cas d’utilisation avec ”<<” et ”>>”.
@startuml
User << 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èches
Par défaut, les liens entre les classes ont deux tirets -- et sont orientés verticalement. Il est possible de
mettre 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
27. 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ésultats
quoique non ”garantis”.
2.9 Découper les diagrames
Le 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
28. 2.10 De droite à gauche 2 DIAGRAMME DE CAS D’UTILISATION
@startuml
:actor1: --> (Usecase1)
newpage
:actor2: --> (Usecase2)
@enduml
2.10 De droite à gauche
Le comportement général de construction des diagrammes est de haut en bas.
@startuml
'default
top to bottom direction
user1 --> (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 right
direction. Le résultat est parfois meilleur dans ce cas.
@startuml
left to right direction
user1 --> (Usecase 1)
user2 --> (Usecase 2)
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 27 of 127
29. 2.11 La commande Skinparam 2 DIAGRAMME DE CAS D’UTILISATION
2.11 La commande Skinparam
Utilisez 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 des
stéréotypes.
@startuml
skinparam handwritten true
skinparam usecase {
BackgroundColor DarkSeaGreen
BorderColor DarkSlateGray
BackgroundColor << Main >> YellowGreen
BorderColor << Main >> YellowGreen
ArrowColor Olive
ActorBorderColor black
ActorFontName 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
30. 2.12 Exemple complet 2 DIAGRAMME DE CAS D’UTILISATION
2.12 Exemple complet
@startuml
left to right direction
skinparam packageStyle rectangle
actor customer
actor clerk
rectangle 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
31. 3 DIAGRAMME DE CLASSES
3 Diagramme de classes
3.1 Relations entre classes
Les 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 :
@startuml
Class01 <|-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10
@enduml
@startuml
Class11 <|.. Class12
Class13 --> Class14
Class15 ..> Class16
Class17 ..|> Class18
Class19 <--* Class20
@enduml
@startuml
Class21 #-- Class22
Class23 x-- Class24
Class25 }-- Class26
Class27 +-- Class28
Class29 ^-- Class30
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 30 of 127
32. 3.2 Libellés sur les relations 3 DIAGRAMME DE CLASSES
3.2 Libellés sur les relations
Il 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é.
@startuml
class 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
33. 3.3 Définir les méthodes 3 DIAGRAMME DE CLASSES
3.3 Définir les méthodes
Pour 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.
@startuml
Object <|-- ArrayList
Object : equals()
ArrayList : Object[] elementData
ArrayList : 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.
@startuml
class Dummy {
String data
void methods()
}
class Flight {
flightNumber : Integer
departureTime : Date
}
@enduml
You can use {field} and {method} modifiers to override default behaviour of the parser about fields
and methods.
@startuml
class 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
34. 3.4 Définir les visibilités 3 DIAGRAMME DE CLASSES
3.4 Définir les visibilités
Quand 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 :
@startuml
skinparam classAttributeIconSize 0
class Dummy {
-field1
#field2
~method1()
+method2()
}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 33 of 127
35. 3.5 Abstrait et statique 3 DIAGRAMME DE CLASSES
3.5 Abstrait et statique
Vous 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 classifier
plutôt que static.
@startuml
class Dummy {
{static} String id
{abstract} void methods()
}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 34 of 127
36. 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éparateurs
suivants sont possibles : -- .. == __.
Vous pouvez aussi utiliser les titres dans les séparateurs.
@startuml
class Foo1 {
You can use
several lines
..
as you want
and group
==
things together.
__
You can have as many groups
as 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
37. 3.7 Notes et stéréotypes 3 DIAGRAMME DE CLASSES
3.7 Notes et stéréotypes
Sté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 top
of , 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
...
@startuml
class Object << general >>
Object <|--- ArrayList
note top of Object : In java, every classnextends this one.
note "This is a floating note" as N1
note "This note is connectednto several objects." as N2
Object .. N2
N2 .. ArrayList
class Foo
note left: On last defined class
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 36 of 127
38. 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, note
right, note top, note bottom.
@startuml
class Foo
note left: On last defined class
note top of Object
In java, <size:18>every</size> <u>class</u>
<b>extends </b>
<i>this</i> one.
end note
note as N1
This note is <u>also</u>
<b><color:royalBlue>on several </color>
<s>words</s> lines
And 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
39. 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 on
link.
Vous pouvez aussi utiliser note left on link, note right on link, note top on link, note
bottom on link si vous voulez changer la position relative de la note avec l’étiquette.
@startuml
class Dummy
Dummy --> Foo : A link
note on link #red: note that is red
Dummy --> Foo2 : Another link
note right on link #blue
this is my note on right link
and in blue
end note
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 38 of 127
40. 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 classe
sera alors écrite en italique.
Vous pouvez aussi utiliser interface, annotation et enum.
@startuml
abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection
List <|-- AbstractList
Collection <|-- AbstractCollection
Collection <|- List
AbstractCollection <|- AbstractList
AbstractList <|-- ArrayList
class ArrayList {
Object[] elementData
size()
}
enum TimeUnit {
DAYS
HOURS
MINUTES
}
annotation SuppressWarnings
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 39 of 127
41. 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
@startuml
class "This is my class" as class1
class 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
42. 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 champs
ou 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 members
hide <<Serializable >> circle
show Dummy1 methods
show <<Serializable >> fields
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 41 of 127
43. 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 quelques
unes après une inclusion de fichier.
@startuml
class Foo1
class 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 ajoutant
une 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
44. 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 une
couleur 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 <|-- Demo1
Demo1 *- 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:
@startuml
scale 750 width
package 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
45. 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 ne
peux pas avoir deux classes avec le même nom dans deux packages différents. Pour ce faire, vous
devez 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 automatiquement
ajouté au bon espace de nom.
@startuml
class BaseClass
namespace net.dummy #DDDDDD {
.BaseClass <|-- Person
Meeting 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
46. 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 : set
namespaceSeparator ???.
@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 namespaceSeparator
none.
@startuml
set namespaceSeparator none
class X1.X2.foo {
some info
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 45 of 127
47. 3.20 Interface boucle 3 DIAGRAMME DE CLASSES
}
@enduml
3.20 Interface boucle
• bar ()- foo
• bar ()-- foo
• foo -() bar
@startuml
class foo
bar ()- 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 possible
d’utiliser une ligne horizontal en mettant un simple tiret (Ou un point) comme ceci:
@startuml
Room o- Student
Room *-- Chair
@enduml
Vous pouvez aussi changer le sens en renversant le lien :
@startuml
Student -o Room
Chair --* Room
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 46 of 127
48. 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, up
ou down à l’intérieur de la flèche:
@startuml
foo -left-> dummyLeft
foo -right-> dummyRight
foo -up-> dummyUp
foo -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ésultats
sans 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:
@startuml
class 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
49. 3.23 Personnalisation 3 DIAGRAMME DE CLASSES
@startuml
class 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 PaleGreen
ArrowColor SeaGreen
BorderColor 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
50. 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 PaleGreen
ArrowColor SeaGreen
BorderColor SpringGreen
BackgroundColor <<Foo>> Wheat
BorderColor <<Foo>> Tomato
}
skinparam stereotypeCBackgroundColor YellowGreen
skinparam 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 la
notation .
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 de
couleurs 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
51. 3.26 Aide pour la mise en page 3 DIAGRAMME DE CLASSES
@startuml
skinparam backgroundcolor AntiqueWhite/Gold
skinparam classBackgroundColor Wheat|CornflowerBlue
class Foo #red-green
note left of Foo #blue9932CC
this is my
note on this class
end 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 group
them (as if they were in the same package).
You can also use hidden links to force the layout.
@startuml
class Bar1
class Bar2
together {
class Together1
class Together2
class Together3
}
Together1 - Together2
Together2 - Together3
Together2 -[hidden]--> Bar1
Bar1 -[hidden]> Bar2
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 50 of 127
52. 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 plusieurs
fichiers:
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 pages
page 2x2
skinparam pageMargin 10
skinparam pageExternalColor gray
skinparam pageBorderColor black
class BaseClass
namespace net.dummy #DDDDDD {
.BaseClass <|-- Person
Meeting 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
53. 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
54. 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 haut
du 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éfinition
de 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’une
flèche en utilisant la syntaxe suivante :
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 53 of 127
55. 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
56. 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 outre
et 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 a3
else
if "Other test" then
-left-> "activity 5"
else
--> "activity 6"
endif
endif
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
57. 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
58. 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’utiliser
quelques 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 lines
that contains many <i>text</i>" as A1
-up-> "Another activityn 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, note
right, 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 du
diagramme.
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 left
This note is on
several lines
end note
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 57 of 127
59. 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 un
fond 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 ===
--> WavesArmes
Applauds --> === S2 ===
}
partition Orchestra #CCCCEE {
WavesArmes --> Introduction
--> "Play music"
}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 58 of 127
60. 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 pour
dessiner.
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 #AAFFFF
skinparam activity {
StartColor red
BarColor SaddleBrown
EndColor Silver
BackgroundColor Peru
BackgroundColor << Begin >> Olive
BorderColor Peru
FontName Impact
}
(*) --> "Climbs on Platform" << Begin >>
--> === S1 ===
--> Bows
--> === S2 ===
--> WavesArmes
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 59 of 127
61. 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 skinparam
activityShape octagon.
@startuml
'Default is skinparam activityShape roundBox
skinparam activityShape octagon
(*) --> "First Activity"
"First Activity" --> (*)
@enduml
4.12 Exemple complet
@startuml
title 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
62. 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()"
--> render
endif
else
-->[false] ===REDIRECT_CHECK===
endif
if "Do redirect?" then
->[yes] "redirect request"
--> ==BEFORE_DESTROY===
else
if "Do Forward?" then
-left->[yes] "Forward request"
--> ==BEFORE_DESTROY===
else
-right->[no] "Render page template"
--> ==BEFORE_DESTROY===
endif
endif
--> "Page.onDestroy()"
-->(*)
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 61 of 127
63. 4.12 Exemple complet 4 DIAGRAMMES D’ACTIVITÉ
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 62 of 127
64. 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 (par
exemple, 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 Graphviz
d’installé (comme pour les diagrammes de séquences).
La nouvelle syntaxe remplace l’ancienne. Cependant, pour des raisons de compatibilité, l’ancienne
syntaxe 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 on
several **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.
@startuml
start
:Hello world;
:This is on defined on
several **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
65. 5.3 Conditionnel 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
@startuml
start
:Hello world;
:This is on defined on
several **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 allndiagrams;
else (no)
:process only
__sequence__ and __activity__ diagrams;
endif
stop
@enduml
Vous pouvez utiliser le mot clé elseif pour avoir plusieurs tests :
@startuml
start
if (condition A) then (yes)
:Text 1;
elseif (condition B) then (yes)
:Text 2;
stop
elseif (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
66. 5.4 Boucle de répétition 5 DIAGRAMMES D’ACTIVITÉ (BÉTA)
else (nothing)
:Text else;
endif
stop
@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
67. 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.
@startuml
while (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 processus
parallèle.
@startuml
start
if (multiprocessor?) then (yes)
fork
:Treatment 1;
fork again
:Treatment 2;
end fork
else (monoproc)
:Treatment 1;
:Treatment 2;
endif
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 66 of 127
68. 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 right
This note is on several
//lines// and can
contain <b>HTML</b>
====
* Calling the method ""foo()"" is prohibited
end note
stop
@enduml
5.8 Couleurs
Vous pouvez spécifier une couleur pour certaines activités.
@startuml
start
:starting progress;
#HotPink:reading configuration files
These 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
69. 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ètement
cachées.
@startuml
:foo1;
-> You can put text on arrows;
if (test) then
-[#blue]->
:foo2;
-[#green,dashed]-> The text can
also be on several lines
and **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.
@startuml
start
partition Initialization {
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 68 of 127
70. 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
71. 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;
detach
endfork
if (foo4) then
:foo5;
detach
endif
:foo6;
detach
:foo7;
stop
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 70 of 127
72. 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}
stop
end split
:finish;
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 71 of 127
73. 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)
stop
endif
if (isPost?) then (yes)
:Page.onPost();
else (no)
:Page.onGet();
endif
:Page.onRender();
endif
else (false)
endif
if (do redirect?) then (yes)
:redirect process;
else
if (do forward?) then (yes)
:Forward request;
else (no)
:Render page template;
endif
endif
stop
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 72 of 127
74. 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
75. 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 pouvez
définir un alias, grâce au mot-clé the as. Cet alias sera utile plus tard, pour définir des relations
entre composants.
@startuml
[First component]
[Another component] as Comp2
component Comp3
component [Lastncomponent] 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éfinir
un alias, à l’aide du mot-clé as. Cet alias pourrait être utilisé plus tard, lors de la définition des
relations.
Nous verrons plus tard qu’il n’est pas obligatoire de définir les interfaces.
@startuml
() "First Interface"
() "Another interface" as Interf2
interface Interf3
interface "Lastninterface" as Interf4
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 74 of 127
76. 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 (..), lignes
droites(--), 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 also
be on several lines
end note
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 75 of 127
77. 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
78. 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 possible
d’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
@startuml
Interface1 <-- [Component]
Interface2 <- [Component]
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 77 of 127
79. 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 ou
down à 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 (par
exemple, -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 de
bon résultat sans modification.
6.7 Utiliser la notation UML2
La commande skinparam componentStyle uml2 est utilisée pour changer vers la notation UML2.
@startuml
skinparam 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
80. 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.
@startuml
component comp1 [
This component
has a long comment
on several lines
]
@enduml
6.9 Couleurs individuelles
Il est possible de spécifier une couleur après la définition du composant.
@startuml
component [Web Server] #Yellow
@enduml
6.10 Sprites et stéréotypes
Vous pouvez utiliser des sprites dans les stéréotypes des composants.
@startuml
sprite $businessProcess [16x16/16] {
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFF0FFFFF
FFFFFFFFFF00FFFF
FF00000000000FFF
FF000000000000FF
FF00000000000FFF
FFFFFFFFFF00FFFF
FFFFFFFFFF0FFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 79 of 127
81. 6.11 Skinparam 6 DIAGRAMMES DE COMPOSANTS
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
}
rectangle " End to Endnbusiness process" <<$businessProcess >> {
rectangle "inner process 1" <<$businessProcess >> as src
rectangle "inner process 2" <<$businessProcess >> as tgt
src -> 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 RosyBrown
borderColor orange
}
skinparam component {
FontSize 13
BackgroundColor <<Apache>> Red
BorderColor <<Apache>> #FF6655
FontName Courier
BorderColor black
BackgroundColor gold
ArrowFontName Impact
ArrowColor #FF6655
ArrowFontColor #777777
}
() "Data Access" as DA
DA - [First Component]
[First Component] ..> () HTTP : use
HTTP - [Web Server] << Apache >>
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 80 of 127
82. 6.11 Skinparam 6 DIAGRAMMES DE COMPOSANTS
@startuml
[AA] <<static lib>>
[BB] <<shared lib>>
[CC] <<static lib>>
node node1
node node2 <<shared node>>
database Production
skinparam component {
backgroundColor <<static lib>> DarkKhaki
backgroundColor <<shared lib>> Green
}
skinparam node {
borderColor Green
backgroundColor Yellow
backgroundColor <<shared node>> Magenta
}
skinparam databaseBackgroundColor Aqua
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 81 of 127
83. 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
[*] --> State1
State1 --> [*]
State1 : this is a string
State1 : this is another string
State1 -> State2
State2 --> [*]
@enduml
7.2 Etat composite
Un état peut également être composite. Vous devez alors le définir avec le mot-clé state et des
accolades.
@startuml
scale 350 width
[*] --> NotShooting
state NotShooting {
[*] --> Idle
Idle --> Configuring : EvConfig
Configuring --> Idle : EvConfig
}
state Configuring {
[*] --> NewValueSelection
NewValueSelection --> NewValuePreview : EvNewValue
NewValuePreview --> NewValueSelection : EvNewValueRejected
NewValuePreview --> NewValueSelection : EvNewValueSaved
state NewValuePreview {
State1 -> State2
}
}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 82 of 127
84. 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.
@startuml
scale 600 width
[*] -> State1
State1 --> State2 : Succeeded
State1 --> [*] : Aborted
State2 --> State3 : Succeeded
State2 --> [*] : Aborted
state State3 {
state "Accumulate Enough DatanLong State Name" as long1
long1 : Just a test
[*] --> long1
long1 --> long1 : New Data
long1 --> ProcessData : Enough Data
}
State3 --> State3 : Failed
State3 --> [*] : Succeeded / Save Result
State3 --> [*] : Aborted
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 83 of 127
85. 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 -- comme
séparateur.
@startuml
[*] --> Active
state Active {
[*] -> NumLockOff
NumLockOff --> NumLockOn : EvNumLockPressed
NumLockOn --> NumLockOff : EvNumLockPressed
--
[*] -> CapsLockOff
CapsLockOff --> CapsLockOn : EvCapsLockPressed
CapsLockOn --> CapsLockOff : EvCapsLockPressed
--
[*] -> ScrollLockOff
ScrollLockOff --> ScrollLockOn : EvCapsLockPressed
ScrollLockOn --> ScrollLockOff : EvCapsLockPressed
}
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 84 of 127
86. 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 de
la flèche avec la syntaxe suivante:
• -down-> (default arrow)
• -right-> or ->
• -left->
• -up->
@startuml
[*] -up-> First
First -right-> Second
Second --> Third
Third -left-> Last
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 85 of 127
87. 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 (par
exemple -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 bons
résultats sans peaufinage.
7.6 Note
Vous pouvez définir des notes avec : note left of, note right of, note top of, note bottom
of Mots clés.
Vous pouvez aussi définir des notes sur plusieurs lignes.
@startuml
[*] --> Active
Active --> Inactive
note left of Active : this is a shortnnote
note right of Inactive
A note can also
be defined on
several lines
end note
@enduml
Vous pouvez aussi avoir des notes flottantes.
@startuml
state foo
note "This is a floating note" as N1
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 86 of 127
88. 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 Idle
state "Configuring mode" as Configuring
[*] --> Idle
Idle --> Configuring : EvConfig
Configuring --> 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.
@startuml
skinparam backgroundColor LightYellow
skinparam state {
StartColor MediumBlue
EndColor Red
BackgroundColor Peru
BackgroundColor <<Warning>> Olive
BorderColor Gray
FontName Impact
}
[*] --> NotShooting
state "Not Shooting State" as NotShooting {
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 87 of 127
89. 7.8 Skinparam 7 DIAGRAMMES D’ÉTAT
state "Idle mode" as Idle <<Warning>>
state "Configuring mode" as Configuring
[*] --> Idle
Idle --> Configuring : EvConfig
Configuring --> Idle : EvConfig
}
NotShooting --> [*]
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 88 of 127
90. 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.
@startuml
object firstObject
object "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 de
l’étiquette.
Pour les cardinalités, vous pouvez utiliser les doubles quotes "" sur chaque côté de la relation.
@startuml
object Object01
object Object02
object Object03
object Object04
object Object05
object Object06
object Object07
object Object08
Object01 <|-- Object02
Object03 *-- Object04
Object05 o-- "4" Object06
Object07 .. 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
91. 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
92. 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 '/ à la
fin.
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 sur
un diagramme généré.
Vous pouvez éventuellement spécifier la position de l’élément en utilisant les mots clés
center, 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
@startuml
Alice -> 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 aussi
spé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
93. 9.4 Titre 9 COMMANDES COMMUNES
@startuml
scale 180*90
Bob->Alice : hello
@enduml
9.4 Titre
Le mot clée title est utilisé pour mettre un titre. Vous pouvez mettre des retours à la ligne en
utilisant n dans la description.
Il est possible de mettre des bordures autour du titre.
@startuml
skinparam titleBorderRoundCorner 15
skinparam titleBorderThickness 2
skinparam titleBorderColor red
skinparam titleBackgroundColor Aqua-CadetBlue
title Simple communicationnexample
Alice -> Bob: Authentication Request
Bob --> 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 example
on <i>several </i> lines and using <back:cadetblue>creole tags</back>
end title
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 92 of 127
94. 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 1
Alice -> 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 : Hello
legend right
Short
legend
endlegend
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 93 of 127
95. 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 mot
clé 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 ".
@startuml
salt
{
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
96. 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 voulez
dessiner 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
97. 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 HTML
pour 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
98. 10.7 Utiliser les menus 10 SALT
@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
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 | Refactor
Refactor | 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
99. 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 3
Row header 1 | value 1 | value 2
Row header 2 | A long cell | *
}
@endsalt
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 98 of 127
100. 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 styles
de 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
@startuml
Alice -> Bob : hello --there--
... Some ~~long delay~~ ...
Bob -> Alice : ok
note left
This is **bold**
This is //italics//
This is ""monospaced""
This is --stroked--
This is __underlined__
This is ~~waved~~
end note
@enduml
11.2 Liste
@startuml
object demo {
* Bullet list
* Second item
}
note left
* Bullet list
* Second item
** Sub item
end note
legend
# Numbered list
# Second item
## Sub item
## Another sub item
# Third item
end legend
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 99 of 127
101. 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.
@startuml
object demo {
This is not ~___underscored__.
This is not ~""monospaced"".
}
@enduml
11.4 Lignes horizontales
@startuml
database DB1 as "
You can have horizontal line
----
Or double line
====
Or strong line
____
Or dotted line
..My title..
Enjoy!
"
note right
This is working also in notes
You 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
102. 11.6 Code HTML 11 CRÉOLE
@startuml
usecase UC1 as "
= Extra-large heading
Some text
== Large heading
Other text
=== Medium heading
Information
....
==== 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
103. 11.7 Tableau 11 CRÉOLE
11.7 Tableau
Il est possible de créer des tableaux.
@startuml
skinparam titleFontSize 14
title
Example 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.
@startuml
start
: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.
@startuml
skinparam titleFontSize 14
title
Example of Tree
|_ First line
|_ **Bom(Model)**
|_ prop1
|_ prop2
|_ prop3
|_ Last line
end title
[*] --> State1
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 102 of 127
104. 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>
@startuml
usecase foo as "this is ∞ long"
usecase bar as "this is also <U+221E> long"
@enduml
11.10 OpenIconic
OpenIconic est un ensemble d’icône agréable au regard. Ces icônes ont été intégrés dans le parser
Creole pour qu’ils soient prêt à l’emploi.
Vous pouvez utiliser la syntaxe suivante: <&ICON_NAME>.
@startuml
title: <size:20><&heart>Use of OpenIconic <&heart></size>
class Wifi
note left
Click on <&wifi>
end note
@enduml
La liste complète est disponible sur le site web OpenIconic, ou vous pouvez utiliser le diagramme
suivant:
@startuml
listopeniconic
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 103 of 127
105. 11.10 OpenIconic 11 CRÉOLE
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 104 of 127
106. 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 chaque
pixel.
Ensuite vous pouvez utiliser le sprite en faisant <$XXX> où XXX est le nom du sprite
@startuml
sprite $foo1 {
FFFFFFFFFFFFFFF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
FFFFFFFFFFFFFFF
}
Alice -> Bob : Testing <$foo1>
@enduml
You can scale the sprite.
@startuml
sprite $foo1 {
FFFFFFFFFFFFFFF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
FFFFFFFFFFFFFFF
}
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
107. 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 gris
automatiquement).
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 compression
dans 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 image
existante.
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 seront
affichées: il vous suffira d’extraire celle que vous désirez.
11.14 Exemples
@startuml
sprite $printer [15x15/8z] NOtH3W0W208HxFz_kMAhj7lHWpa1XC716sz0Pq4MVPEWfBHIuxP3L6kbTcizR8tAhzaqFvXwvFfPEq
start
:click on <$printer> to print the page;
@enduml
@startuml
sprite $bug [15x15/16z] PKzR2i0m2BFMi15p__FEjQEqB1z27aeqCqixa8S4OT7C53cKpsHpaYPDJY_12MHM -BLRyywPhrrlw3qum
sprite $printer [15x15/8z] NOtH3W0W208HxFz_kMAhj7lHWpa1XC716sz0Pq4MVPEWfBHIuxP3L6kbTcizR8tAhzaqFvXwvFfPEq
sprite $disk {
444445566677881
436000000009991
43600000000ACA1
53700000001A7A1
53700000012B8A1
53800000123B8A1
63800001233C9A1
634999AABBC99B1
744566778899AB1
7456AAAAA99AAB1
8566AFC228AABB1
8567AC8118BBBB1
867BD4433BBBBB1
39AAAAABBBBBBC1
}
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
108. 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
109. 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 value1
skinparam xxxxParam2 value2
skinparam xxxxParam3 value3
skinparam xxxxParam4 value4
est absolument équivalent à :
skinparam xxxx {
Param1 value1
Param2 value2
Param3 value3
Param4 value4
}
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 108 of 127
110. 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 Commentaire
Valeur
backgroundColor white Fond de la page
activityArrowColor #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’activ
usecaseArrowColor #A80036 Couleurs des flèches dans les diagrammes de cas d’ut
usecaseActorBackgroundColor #FEFECE Couleurs des acteurs dans les diagrammes de cas d’ut
usecaseActorBorderColor #A80036 Couleur de la bordure d’un acteur dans un diagramm
usecaseBackgroundColor #FEFECE Couleur de fond des cas d’utilisation
usecaseBorderColor #A80036 Couleur de la bordure d’un cas d’utilisation dans un
classArrowColor #A80036 Couleurs des flèches dans les diagrammes de classe
classBackgroundColor #FEFECE Couleur de fond des classes dans les diagrammes de c
classBorderColor #A80036 Bordure des classes/interface/enum dans les diagram
packageBackgroundColor #FEFECE Couleur de fond des packages dans les diagrammes de
packageBorderColor #A80036 Bordures des packages dans les diagrammes de classe
stereotypeCBackgroundColor #ADD1B2 Couleur de fond des points des classes dans les diagra
stereotypeABackgroundColor #A9DCDF Couleur de fond des points des classes abstraites dan
stereotypeIBackgroundColor #B4A7E5 Couleur de fond des points des interfaces dans les dia
stereotypeEBackgroundColor #EB937F Couleur de fond des points des enum dans les diagram
componentArrowColor #A80036 Couleur des flèches dans les diagrammes de composan
componentBackgroundColor #FEFECE Couleur de fond des composants
componentBorderColor #A80036 Bordure des composants
componentInterfaceBackgroundColor #FEFECE Couleur de fond des interfaces dans les diagrammes d
componentInterfaceBorderColor #A80036 Bordure des interfaces dans les diagrammes de compo
noteBackgroundColor #FBFB77 Couleur de fond des notes
noteBorderColor #A80036 Bordure des notes
stateBackgroundColor #FEFECE Fond d’état d’un diagramme d’état
stateBorderColor #A80036 Bordure d’état d’un diagramme d’état
stateArrowColor #A80036 Couleurs de flèches dans les diagrammes d’état
stateStartColor black Etat démarrage dans les diagrammes d’état
stateEndColor black Fin d’un cercle dans les diagrammes d’état
sequenceArrowColor #A80036 Couleurs des flèches dans les diagramme de séquence
sequenceActorBackgroundColor #FEFECE Couleur de la tête des acteurs dans les diagrammes d
sequenceActorBorderColor #A80036 Contour des acteurs dans les diagrammes de séquence
sequenceGroupBackgroundColor #EEEEEE Couleur de la tête de page de alt/opt/loop dans un d
sequenceLifeLineBackgroundColor white Fond d’une ligne de vie dans des diagrammes de séqu
sequenceLifeLineBorderColor #A80036 Bordure de ligne de vie dans un digramme de séquen
sequenceParticipantBackgroundColor #FEFECE Couleur de fond des participants dans les diagramme
sequenceParticipantBorderColor #A80036 Bordure des participants dans les diagrammes de séq
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 109 of 127
111. 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 et
xxxFontName .
Exemple:
skinparam classFontColor red
skinparam classFontSize 10
skinparam 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’est
ce que vous recherchez portabilité.
Paramètre Défaut Commentaire
Nom Valeur
activityFontColor black
Utilisé pour une boite d’activité
activityFontSize 14
activityFontStyle plain
activityFontName
activityArrowFontColor black
Utilisé pour le texte et les flèches dans les diagrammes d’activité.
activityArrowFontSize 13
activityArrowFontStyle plain
activityArrowFontName
circledCharacterFontColor black
Utilisé pour le texte en cercle pour les classes, énumérations et autr
circledCharacterFontSize 17
circledCharacterFontStyle bold
circledCharacterFontName Courier
circledCharacterRadius 11
classArrowFontColor black
Utilisé pour le texte sur les flèches dans les diagrammes de classe.
classArrowFontSize 10
classArrowFontStyle plain
classArrowFontName
classAttributeFontColor black
Attribut et méthode de classes
classAttributeFontSize 10
classAttributeIconSize 10
classAttributeFontStyle plain
classAttributeFontName
classFontColor black
Utilisé pour les noms de classe
classFontSize 12
classFontStyle plain
classFontName
classStereotypeFontColor black
Utilisé pour les stéréotypes de classes
classStereotypeFontSize 12
classStereotypeFontStyle italic
classStereotypeFontName
componentFontColor black
Utilisé pour les noms de composant
componentFontSize 14
componentFontStyle plain
componentFontName
componentStereotypeFontColor black
Utilisé pour stéréotypes de composant
componentStereotypeFontSize 14
componentStereotypeFontStyle italic
componentStereotypeFontName
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 110 of 127
112. 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 composa
componentArrowFontSize 13
componentArrowFontStyle plain
componentArrowFontName
noteFontColor black
Utilisé pour des notes dans tous les diagrammes mais le diagramme
noteFontSize 13
noteFontStyle plain
noteFontName
packageFontColor black
Utilisé pour le package les noms de partition
packageFontSize 14
packageFontStyle plain
packageFontName
sequenceActorFontColor black
Utilisé pour les acteurs dans le diagramme de séquence
sequenceActorFontSize 13
sequenceActorFontStyle plain
sequenceActorFontName
sequenceDividerFontColor black
Utilisé pour le texte sur les séparateurs dans les diagrammes de séq
sequenceDividerFontSize 13
sequenceDividerFontStyle bold
sequenceDividerFontName
sequenceArrowFontColor black
Texte sur les flèches dans les diagrammes de séquence
sequenceArrowFontSize 13
sequenceArrowFontStyle plain
sequenceArrowFontName
sequenceGroupingFontColor black
Utilisé pour le texte pour ”else” dans les diagrammes de séquence.
sequenceGroupingFontSize 11
sequenceGroupingFontStyle plain
sequenceGroupingFontName
sequenceGroupingHeaderFontColor black
Utilisé pour le texte pour ”alt/opt/loop” dans les diagrammes de sé
sequenceGroupingHeaderFontSize 13
sequenceGroupingHeaderFontStyle plain
sequenceGroupingHeaderFontName
sequenceParticipantFontColor black
Utilisé pour le textesur les participants dans les diagrammes de séq
sequenceParticipantFontSize 13
sequenceParticipantFontStyle plain
sequenceParticipantFontName
sequenceTitleFontColor black
Utilisé pour les titres dans les diagrammes de séquence
sequenceTitleFontSize 13
sequenceTitleFontStyle plain
sequenceTitleFontName
titleFontColor black
Utilisé pour les titres de tous les diagrammes sauf diagrammes de s
titleFontSize 18
titleFontStyle plain
titleFontName
stateFontColor black
Utlisé pour les états dans les diagrammes d’état.
stateFontSize 14
stateFontStyle plain
stateFontName
stateArrowFontColor black
Utlisé pour le texte sur les flèches dans les diagrammes d’état.
stateArrowFontSize 13
stateArrowFontStyle plain
stateArrowFontName
stateAttributeFontColor black
Utlisé pour les descriptions d’états dans les diagrammes d’état.
stateAttributeFontSize 12
stateAttributeFontStyle plain
stateAttributeFontName
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 111 of 127
113. 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 ca
usecaseFontSize 14
usecaseFontStyle plain
usecaseFontName
usecaseStereotypeFontColor black
Utlisé pour les stéréotypes dans les cas d’utilisation
usecaseStereotypeFontSize 14
usecaseStereotypeFontStyle italic
usecaseStereotypeFontName
usecaseActorFontColor black
Utlisé pour les labels d’acteurs dans les diagrammes de cas d’utilisa
usecaseActorFontSize 14
usecaseActorFontStyle plain
usecaseActorFontName
usecaseActorStereotypeFontColor black
Utlisé pour les stéréotypes d’acteurs
usecaseActorStereotypeFontSize 14
usecaseActorStereotypeFontStyle italic
usecaseActorStereotypeFontName
usecaseArrowFontColor black
Texte des flèches dans les diagrammes de cas d’utilisation
usecaseArrowFontSize 13
usecaseArrowFontStyle plain
usecaseArrowFontName
footerFontColor black
Utilisé pour le pied de page
footerFontSize 10
footerFontStyle plain
footerFontName
headerFontColor black
Utilisé pour entête de page
headerFontSize 10
headerFontStyle plain
headerFontName
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 112 of 127
114. 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 monochrome
true.
@startuml
skinparam monochrome true
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: Create Request
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 113 of 127
115. 13 PRÉPROCESSEUR
13 Préprocesseur
Quelques fonctionnalités de préprocesseur sont présentes dans PlantUML, et disponibles pour tous
les 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 lieu
de dupliquer la description de la classe, vous pouvez créer un fichier unique qui contient cette
description.
@startuml
!include List.iuml
List <|.. 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 fichier
modifiera 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 et
ensuite 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érieur
foo.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 something
like !include foo.txt!MY_OWN_ID.
13.2 Inclusion d’URL
Utiliser la directive !includeurl pour inclure dans votre diagramme un fichier depuis Internet ou
un Intranet.
Utilisez !includeurl http://someurl.com/mypath!0 pour spécifier quel @startuml/@enduml
bloque vous voulez inclure à partir de http://someurl.com/mypath . La notation !0 désigne
le premier diagramme.
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 114 of 127
116. 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’une
constante peut seulement utiliser des caractères alphanumérique et des underscore, et ne peut pas
commencer 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" -- "*" ACCOUNT
USER -> UID
@enduml
Bien sur vous pouvez utiliser l’instruction !include pour définir toute les constantes dans un fichier
simple 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 : c
send(Alice, Bob, Hello)
send(Bob, Alice, ok)
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 115 of 127
117. 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 de
SimpleDataFormat.
@startuml
!define ANOTHER_DATE %date[yyyy.MM.dd 'at' HH:mm]%
Title Generated %date% or ANOTHER_DATE
alice -> 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
118. 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 z
class 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_METHODS
ArrayList : 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
119. 13.10 Chemin de recherche 13 PRÉPROCESSEUR
Vous pouvez alors utiliser la directive !ifndef qui inclut les lignes à condition que la constante
fournie n’ait pas été définie.
Vous pouvez utiliser des expressions booléennes avec des parenthèses, les opérateurs et || dans le
test.
@startuml
!define SHOW_FIELDS
!undef SHOW_METHODS
class foo {
!ifdef SHOW_FIELDS || SHOW_METHODS
This is shown
!endif
!ifdef SHOW_FIELDS && SHOW_METHODS
This is NOT shown
!endif
}
@enduml
13.10 Chemin de recherche
Vous pouvez spécifier la propriété java ”plantuml.include.path” en ligne de commande
Par 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 sera
utilisé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##Ifc
name##Ifc - [name]
!enddefinelong
COMP_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
!enddefinelong
AUTHEN(Bob,Alice)
@enduml
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 118 of 127
120. 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éclarations
des 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
121. 14 INTERNATIONALISATION
14 Internationalisation
Le langage PlantUML utilise des lettres pour définir des acteurs, des cas d’utilisation et d’autres
entité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.
@startuml
skinparam backgroundColor #EEEBDC
actor 使用者
participant " 頭等艙 " as A
participant " 第二類 " as B
participant " 最 後 一 堂 課 " as 別 的 東 西
使用者 -> A: 完 成 這 項 工 作
activate A
A -> B: 創 建 請 求
activate B
B -> 別 的 東 西 : 創 建 請 求
activate 別 的 東 西
別 的 東 西 --> B: 這 項 工 作 完 成
destroy 別 的 東 西
B --> A: 請 求 創 建
deactivate B
A --> 使用者 : 做完
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 description
UML dépend du système. Normalement, cela devrait convenir, mais dans certains cas, vous voudrez
utiliser 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
122. 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
123. 15 NOM DES COULEURS
15 Nom des couleurs
Voici la liste des couleurs reconnues par PlantUML. Notez que les noms de couleur ne prennent pas
en compte les majuscules/minuscules.
AliceBlue GhostWhite NavajoWhite
AntiqueWhite GoldenRod Navy
Aquamarine Gold OldLace
Aqua Gray OliveDrab
Azure GreenYellow Olive
Beige Green OrangeRed
Bisque HoneyDew Orange
Black HotPink Orchid
BlanchedAlmond IndianRed PaleGoldenRod
BlueViolet Indigo PaleGreen
Blue Ivory PaleTurquoise
Brown Khaki PaleVioletRed
BurlyWood LavenderBlush PapayaWhip
CadetBlue Lavender PeachPuff
Chartreuse LawnGreen Peru
Chocolate LemonChiffon Pink
Coral LightBlue Plum
CornflowerBlue LightCoral PowderBlue
Cornsilk LightCyan Purple
Crimson LightGoldenRodYellow Red
Cyan LightGreen RosyBrown
DarkBlue LightGrey RoyalBlue
DarkCyan LightPink SaddleBrown
DarkGoldenRod LightSalmon Salmon
DarkGray LightSeaGreen SandyBrown
DarkGreen LightSkyBlue SeaGreen
DarkKhaki LightSlateGray SeaShell
DarkMagenta LightSteelBlue Sienna
DarkOliveGreen LightYellow Silver
DarkOrchid LimeGreen SkyBlue
DarkRed Lime SlateBlue
DarkSalmon Linen SlateGray
DarkSeaGreen Magenta Snow
DarkSlateBlue Maroon SpringGreen
DarkSlateGray MediumAquaMarine SteelBlue
DarkTurquoise MediumBlue Tan
DarkViolet MediumOrchid Teal
Darkorange MediumPurple Thistle
DeepPink MediumSeaGreen Tomato
DeepSkyBlue MediumSlateBlue Turquoise
DimGray MediumSpringGreen Violet
DodgerBlue MediumTurquoise Wheat
FireBrick MediumVioletRed WhiteSmoke
FloralWhite MidnightBlue White
ForestGreen MintCream YellowGreen
Fuchsia MistyRose Yellow
Gainsboro Moccasin
PlantUML : Guide de référence du langage (lundi 25 septembre 2017) 122 of 127