Créer des diagrammes de séquence avec PlantUML est remarquablement simple. Cette facilité d'utilisation est largement attribuée à la nature conviviale de sa syntaxe, conçue pour être à la fois intuitive et facile à mémoriser.
Tout d'abord, les utilisateurs apprécient la syntaxe simple et intuitive de PlantUML. Cette conception bien pensée signifie que même ceux qui sont novices dans la création de diagrammes trouvent qu'il est facile de saisir les bases rapidement et sans problème.
- Corrélation texte-graphique :
Une autre caractéristique distinctive est l'étroite ressemblance entre la représentation textuelle et la sortie graphique. Cette corrélation harmonieuse garantit que les ébauches textuelles se traduisent très précisément en diagrammes graphiques, offrant une expérience de conception cohérente et prévisible, sans surprise désagréable dans le résultat final.
- Processus d'élaboration efficace :
La forte corrélation entre le texte et le résultat graphique simplifie non seulement le processus de création, mais l'accélère également de manière significative. Les utilisateurs bénéficient d'un processus plus rationnel, avec moins de révisions et d'ajustements fastidieux.
- Visualisation pendant la rédaction :
La possibilité d'envisager le résultat graphique final tout en rédigeant le texte est une fonction que beaucoup trouvent inestimable. Elle favorise naturellement une transition en douceur entre le projet initial et la présentation finale, ce qui améliore la productivité et réduit la probabilité d'erreurs.
- Facilité d'édition et de révision :
Il est important de noter que l'édition des diagrammes existants est un processus sans problème. Comme les diagrammes sont générés à partir de texte, les utilisateurs constatent qu'il est beaucoup plus facile et plus précis de faire des ajustements que de modifier une image à l'aide d'outils graphiques. Il s'agit simplement de modifier le texte, un processus beaucoup plus simple et moins sujet aux erreurs que de faire des changements à travers une interface graphique avec une souris.
PlantUML facilite une approche directe et conviviale de la création et de l'édition de diagrammes de séquence, répondant aux besoins des novices comme des concepteurs chevronnés. Il exploite habilement la simplicité des entrées textuelles pour créer des diagrammes visuellement descriptifs et précis, s'imposant ainsi comme un outil indispensable dans la boîte à outils de création de diagrammes.
Vous pouvez en savoir plus sur certaines des
commandes courantes de PlantUML pour améliorer votre expérience de création de diagrammes.
Dans les diagrammes de séquence PlantUML, la séquence
->
dénote un message envoyé entre deux participants, qui sont automatiquement reconnus et n'ont pas besoin d'être déclarés au préalable.
Utilisez les flèches pointillées en employant la séquence
-->
, offrant une visualisation distincte dans vos diagrammes.
Pour améliorer la lisibilité sans affecter la représentation visuelle, utilisez des flèches inversées comme
<-
ou
<--
. Cependant, soyez conscient que ceci est spécifiquement pour les diagrammes de séquence et que les règles diffèrent pour d'autres types de diagrammes.
🎉 Copied!
|
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml
|
Si le mot-clé
participant
est utilisé pour déclarer un participant, il est possible d'exercer un contrôle accru sur ce participant.
L'ordre de déclaration sera l'
ordre d'affichage(par défaut).
L'utilisation de ces autres mots-clés pour déclarer des participants
modifiera la forme de la représentation du participant :
actor
boundary
control
entity
database
collections
queue
🎉 Copied!
|
@startuml
participant Participant as Foo
actor Actor as Foo1
boundary Boundary as Foo2
control Control as Foo3
entity Entity as Foo4
database Database as Foo5
collections Collections as Foo6
queue Queue as Foo7
Foo -> Foo1 : To actor
Foo -> Foo2 : To boundary
Foo -> Foo3 : To control
Foo -> Foo4 : To entity
Foo -> Foo5 : To database
Foo -> Foo6 : To collections
Foo -> Foo7: To queue
@enduml
|
Renommez un participant en utilisant le mot-clé
as
.
Vous pouvez également modifier la
couleur de fond de l'acteur ou du participant
.
🎉 Copied!
|
@startuml
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant "I have a really\nlong name" as L #99FF99
/' You can also declare:
participant L as "I have a really\nlong name" #99FF99
'/
Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml
|
Vous pouvez utiliser le mot-clé
order
pour personnaliser l'ordre d'affichage des participants.
🎉 Copied!
|
@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml
|
Vous pouvez déclarer des participants sur plusieurs lignes.
🎉 Copied!
|
@startuml
participant Participant [
=Title
----
""SubTitle""
]
participant Bob
Participant -> Bob
@enduml
|
[Ref. QA-15232]
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.
🎉 Copied!
|
@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "This is very\nlong" as Long
' You can also declare:
' "Bob()" -> Long as "This is very\nlong"
Long --> "Bob()" : ok
@enduml
|
Un participant peut s'envoyer un message à lui-même.
Il est également possible d'avoir plusieurs lignes en utilisant
\n
🎉 Copied!
|
@startuml
Alice -> Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml
|
🎉 Copied!
|
@startuml
Alice <- Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml
|
[Réf. QA-1361]
L'alignement du texte sur les flèches peut être défini sur
left
,
right
ou
center
en utilisant
skinparam sequenceMessageAlign
.
Vous pouvez également utiliser
direction
ou
reverseDirection
pour aligner le texte en fonction de la direction de la flèche. De plus amples détails et des exemples sont disponibles sur la page
skinparam.
🎉 Copied!
|
@startuml
skinparam sequenceMessageAlign right
Bob -> Alice : Request
Alice -> Bob : Response
@enduml
|
Texte du message de réponse sous la flèche
Vous pouvez placer le texte du message de réponse sous la flèche, avec la commande
skinparam responseMessageBelowArrow true
🎉 Copied!
|
@startuml
skinparam responseMessageBelowArrow true
Bob -> Alice : hello
Bob <- Alice : ok
@enduml
|
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
<->
🎉 Copied!
|
@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
|
Changer la couleur d'une flèche ainsi:
🎉 Copied!
|
@startuml
Bob -[#red]> Alice : bonjour
Alice -[#0000FF]->Bob : ok
@enduml
|
Le mot clé
autonumber
est utilisé pour
ajouter automatiquement un numéro incrémentiel aux messages
🎉 Copied!
|
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml
|
Vous pouvez spécifier un numéro de début avec
autonumber <start>
et
également un incrément avec
autonumber <start> <increment>
.
🎉 Copied!
|
@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
Bob <- Alice : Yet another authentication Response
@enduml
|
Vous pouvez spécifier un format pour votre nombre en utilisant entre guillemets.
Le formatage est fait avec la classe Java
DecimalFormat
(
0
signifie chiffre,
#
signifie chiffre et zéro si absent).
Vous pouvez utiliser une balise html dans le format
🎉 Copied!
|
@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 également utiliser
autonumber stop
et
autonumber resume <increment> <format>
pour respectivement interrompre et reprendre la numérotation automatique de
🎉 Copied!
|
@startuml
autonumber 10 10 "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber stop
Bob -> Alice : dummy
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
|
Votre numéro de départ peut également être une séquence de 2 ou 3 chiffres utilisant un délimiteur de champ tel que
.
,
;
,
,
,
:
ou un mélange de ceux-ci. Par exemple :
1.1.1
ou
1.1:1
.
Le dernier chiffre s'incrémente automatiquement.
Pour incrémenter le premier chiffre, utilisez :
autonumber inc A
. Pour incrémenter le deuxième chiffre, utilisez :
autonumber inc B
🎉 Copied!
|
@startuml
autonumber 1.1.1
Alice -> Bob: Authentication request
Bob --> Alice: Response
autonumber inc A
'Now we have 2.1.1
Alice -> Bob: Another authentication request
Bob --> Alice: Response
autonumber inc B
'Now we have 2.2.1
Alice -> Bob: Another authentication request
Bob --> Alice: Response
autonumber inc A
'Now we have 3.1.1
Alice -> Bob: Another authentication request
autonumber inc B
'Now we have 3.2.1
Bob --> Alice: Response
@enduml
|
Vous pouvez également utiliser la valeur de
autonumber
avec la variable
%autonumber%
🎉 Copied!
|
@startuml
autonumber 10
Alice -> Bob
note right
the <U+0025>autonumber<U+0025> works everywhere.
Here, its value is ** %autonumber% **
end note
Bob --> Alice: //This is the response %autonumber%//
@enduml
|
[Réf. QA-7119]
Le mot clé
title
est utilisé pour ajouter un titre à la page.
Les pages peuvent afficher des en-têtes et des pieds de page en utilisant
header
et
footer
.
🎉 Copied!
|
@startuml
header Page Header
footer Page %page% of %lastpage%
title Example Title
Alice -> Bob : message 1
Alice -> Bob : message 2
@enduml
|
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.
🎉 Copied!
|
@startuml
Alice -> Bob : message 1
Alice -> Bob : message 2
newpage
Alice -> Bob : message 3
Alice -> Bob : message 4
newpage A title for the\nlast page
Alice -> Bob : message 5
Alice -> Bob : message 6
@enduml
|
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 utilisé 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.
🎉 Copied!
|
@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
|
WARNING
This translation need to be updated. WARNING
Pour les
group
, il est possible d'ajouter, entre
[
et
]
, un texte ou une étiquette secondaire qui sera affiché dans l'en-tête
🎉 Copied!
|
@startuml
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Failure
group My own label [My own label 2]
Alice -> Log : Log attack start
loop 1000 times
Alice -> Bob: DNS Attack
end
Alice -> Log : Log attack end
end
@enduml
|
[Réf. QA-2503]
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
.
🎉 Copied!
|
@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
|
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
.
🎉 Copied!
|
@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 displayed\n over Bob and Alice.
note over Bob, Alice
This is yet another
example of
a long note.
end note
@enduml
|
WARNING
This translation need to be updated. WARNING
Vous pouvez préciser la forme géométrique des notes :
rnote
: pour rectangulaire,
hnote
: pour hexagonale.
🎉 Copied!
|
@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
"r" as rectangle
"h" as hexagon
endrnote
rnote over server
this is
on several
lines
endrnote
hnote over caller
this is
on several
lines
endhnote
@enduml
|
[Ref. QA-1765]
Vous pouvez directement faire une note sur tous les participants, avec la syntaxe :
note across: note_description
🎉 Copied!
|
@startuml
Alice->Bob:m1
Bob->Charlie:m2
note over Alice, Charlie: Old method for note over all part. with:\n ""note over //FirstPart, LastPart//"".
note across: New method with:\n""note across""
Bob->Alice
hnote across:Note across all part.
@enduml
|
[Réf. QA-9738]
Vous pouvez faire plusieurs notes alignées au même niveau, avec la syntaxe
/
:
- sans
/
(par défaut, les notes ne sont pas alignées)
🎉 Copied!
|
@startuml
note over Alice : initial state of Alice
note over Bob : initial state of Bob
Bob -> Alice : hello
@enduml
|
- avec
/
(les notes sont alignées)
🎉 Copied!
|
@startuml
note over Alice : initial state of Alice
/ note over Bob : initial state of Bob
Bob -> Alice : hello
@enduml
|
[Réf. QA-354]
Il est également possible d'utiliser le formatage créole (langage de balisage léger):
🎉 Copied!
|
@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
|
Si vous le souhaitez, vous pouvez diviser un diagramme en utilisant
==
comme séparateur pour
diviser votre diagramme en étapes logiques
🎉 Copied!
|
@startuml
== Initialization ==
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
== Repetition ==
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
|
Vous pouvez ajouter des références dans un diagramme, en utilisant le mot-clé
ref over
.
🎉 Copied!
|
@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
|
Utiliser
...
pour indiquer le passage de temps arbitraire dans le diagramme.
Un message peut être associé à un retard.
🎉 Copied!
|
@startuml
Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes later...
Bob --> Alice: Bye !
@enduml
|
Pour interrompre de longs messages, vous pouvez ajouter manuellement
\n
dans votre texte.
Une autre option consiste à utiliser le paramètre
maxMessageSize
🎉 Copied!
|
@startuml
skinparam maxMessageSize 50
participant a
participant b
a -> b :this\nis\nmanually\ndone
a -> b :this is a very long message on several words
@enduml
|
Utiliser
|||
pour créer un espace vertical dans le diagramme.
Il est également possible de spécifier un nombre de pixels pour la séparation verticale.
🎉 Copied!
|
@startuml
Alice -> Bob: message 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: ok
@enduml
|
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.
🎉 Copied!
|
@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
|
Les lignes de vie peuvent être imbriquées, et il est possible de les
colorer.
🎉 Copied!
|
@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
|
WARNING
This translation need to be updated. WARNING
La commande
return
génère un message de retour avec un libellé facultatif.
Le point de retour est celui qui a provoqué l'activation la plus récente de la ligne de vie.
La syntaxe est
return label
où
label
, si elle est fournie, est toute chaîne acceptable pour les messages conventionnels.
🎉 Copied!
|
@startuml
Bob -> Alice : hello
activate Alice
Alice -> Alice : some action
return bye
@enduml
|
Vous pouvez utiliser le mot clé
create
juste avant la première réception
d'un message pour souligner le fait que ce message
crée effectivement ce nouvel objet.
🎉 Copied!
|
@startuml
Bob -> Alice : hello
create Other
Alice -> Other : new
create control String
Alice -> String
note right : You can also put notes!
Alice --> Bob : ok
@enduml
|
Immédiatement après avoir spécifié le participant cible, la syntaxe suivante peut être utilisée :
++
Activer la cible (une couleurpeut éventuellement suivre)
--
Désactiver la source
**
Créer une instance de la cible
!!
Détruire une instance de la cible
🎉 Copied!
|
@startuml
alice -> bob ++ : hello
bob -> bob ++ : self call
bob -> bib ++ #005500 : hello
bob -> george ** : create
return done
return rc
bob -> george !! : delete
return success
@enduml
|
Vous pouvez alors mélanger activation et désactivation, sur la même ligne
🎉 Copied!
|
@startuml
alice -> bob ++ : hello1
bob -> charlie --++ : hello2
charlie --> alice -- : ok
@enduml
|
🎉 Copied!
|
@startuml
@startuml
alice -> bob --++ #gold: hello
bob -> alice --++ #gold: you too
alice -> bob --: step1
alice -> bob : step2
@enduml
@enduml
|
[Réf. QA-4834, QA-9573 et QA-13234]
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.
🎉 Copied!
|
@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:
🎉 Copied!
|
@startuml
[-> Bob
[o-> Bob
[o->o Bob
[x-> Bob
[<- Bob
[x<- Bob
Bob ->]
Bob ->o]
Bob o->o]
Bob ->x]
Bob <-]
Bob x<-]
@enduml
|
WARNING
This translation need to be updated. WARNING
Vous pouvez avoir des flèches
courtes en utilisant
?
🎉 Copied!
|
@startuml
?-> Alice : ""?->""\n**short** to actor1
[-> Alice : ""[->""\n**from start** to actor1
[-> Bob : ""[->""\n**from start** to actor2
?-> Bob : ""?->""\n**short** to actor2
Alice ->] : ""->]""\nfrom actor1 **to end**
Alice ->? : ""->?""\n**short** from actor1
Alice -> Bob : ""->"" \nfrom actor1 to actor2
@enduml
|
[Réf. QA-310]
En utilisant
teoz
il est possible d'ajouter des balises au diagramme et d'utiliser ces balises pour preciser la duree.
🎉 Copied!
|
@startuml
!pragma teoz true
{start} Alice -> Bob : commencer a faire quelque chose pour une certaine duree
Bob -> Max : quelque chose
Max -> Bob : quelque chose d'autre
{end} Bob -> Alice : terminer
{start} <-> {end} : la duree en question
@enduml
|
Vous pouvez utiliser l'option de
ligne de commande -P
pour spécifier le pragma:
java -jar plantuml.jar -Pteoz=true
[Ref. issue-582]
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)
.
🎉 Copied!
|
@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
:
🎉 Copied!
|
@startuml
skinparam guillemet false
participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,#ADD1B2) Testable >>
Bob->Alice: First message
@enduml
|
🎉 Copied!
|
@startuml
participant Bob << (C,#ADD1B2) >>
participant Alice << (C,#ADD1B2) >>
Bob->Alice: First message
@enduml
|
It is possible to define stereotypes position (
top
or
bottom
) with the command
skinparam stereotypePosition
.
Top postion (by default)
🎉 Copied!
|
@startuml
skinparam stereotypePosition top
participant A<<st1>>
participant B<<st2>>
A --> B : stereo test
@enduml
|
Bottom postion
🎉 Copied!
|
@startuml
skinparam stereotypePosition bottom
participant A<<st1>>
participant B<<st2>>
A --> B : stereo test
@enduml
|
[Ref. QA-18650]
Vous pouvez utiliser le
formatage creole dans le titre.
🎉 Copied!
|
@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.
🎉 Copied!
|
@startuml
title __Simple__ communication example\non several lines
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
|
Vous pouvez aussi mettre un titre sur plusieurs lignes à l'aide des mots-clé title
et
end title
.
🎉 Copied!
|
@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
|
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
.
🎉 Copied!
|
@startuml
box "Internal Service" #LightBlue
participant Bob
participant Alice
end box
participant Other
Bob -> Alice : hello
Alice -> Other : hello
@enduml
|
WARNING
This translation need to be updated. WARNING
Vous pouvez utiliser le mot-clé
hide footbox
pour supprimer la partie basse du diagramme.
🎉 Copied!
|
@startuml
hide footbox
title Footer removed
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
@enduml
|
Utilisez la commande
skinparam pour changer la couleur et la mise en forme du texte du schéma.
Vous pouvez utiliser cette commande :
Vous pouvez aussi modifier d'autres paramètres pour le rendu, comme le montrent les exemples suivants:
🎉 Copied!
|
@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
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml
|
🎉 Copied!
|
@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
activate C
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml
|
Il est possible de changer certains paramètres du padding.
🎉 Copied!
|
@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
|
Normal arrow
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
a -> b : ""-> ""
a ->> b : ""->> ""
a -\ b : ""-\ ""
a -\\ b : ""-\\\\""
a -/ b : ""-/ ""
a -// b : ""-// ""
a ->x b : ""->x ""
a x-> b : ""x-> ""
a o-> b : ""o-> ""
a ->o b : ""->o ""
a o->o b : ""o->o ""
a <-> b : ""<-> ""
a o<->o b : ""o<->o""
a x<->x b : ""x<->x""
a ->>o b : ""->>o ""
a -\o b : ""-\o ""
a -\\o b : ""-\\\\o""
a -/o b : ""-/o ""
a -//o b : ""-//o ""
a x->o b : ""x->o ""
@enduml
|
Itself arrow
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
a -> a : ""-> ""
a ->> a : ""->> ""
a -\ a : ""-\ ""
a -\\ a : ""-\\\\""
a -/ a : ""-/ ""
a -// a : ""-// ""
a ->x a : ""->x ""
a x-> a : ""x-> ""
a o-> a : ""o-> ""
a ->o a : ""->o ""
a o->o a : ""o->o ""
a <-> a : ""<-> ""
a o<->o a : ""o<->o""
a x<->x a : ""x<->x""
a ->>o a : ""->>o ""
a -\o a : ""-\o ""
a -\\o a : ""-\\\\o""
a -/o a : ""-/o ""
a -//o a : ""-//o ""
a x->o a : ""x->o ""
@enduml
|
Incoming and outgoing messages (with '[', ']')
Incoming messages (with '[')
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
[-> b : ""[-> ""
[->> b : ""[->> ""
[-\ b : ""[-\ ""
[-\\ b : ""[-\\\\""
[-/ b : ""[-/ ""
[-// b : ""[-// ""
[->x b : ""[->x ""
[x-> b : ""[x-> ""
[o-> b : ""[o-> ""
[->o b : ""[->o ""
[o->o b : ""[o->o ""
[<-> b : ""[<-> ""
[o<->o b : ""[o<->o""
[x<->x b : ""[x<->x""
[->>o b : ""[->>o ""
[-\o b : ""[-\o ""
[-\\o b : ""[-\\\\o""
[-/o b : ""[-/o ""
[-//o b : ""[-//o ""
[x->o b : ""[x->o ""
@enduml
|
Outgoing messages (with ']')
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
a ->] : ""->] ""
a ->>] : ""->>] ""
a -\] : ""-\] ""
a -\\] : ""-\\\\]""
a -/] : ""-/] ""
a -//] : ""-//] ""
a ->x] : ""->x] ""
a x->] : ""x->] ""
a o->] : ""o->] ""
a ->o] : ""->o] ""
a o->o] : ""o->o] ""
a <->] : ""<->] ""
a o<->o] : ""o<->o]""
a x<->x] : ""x<->x]""
a ->>o] : ""->>o] ""
a -\o] : ""-\o] ""
a -\\o] : ""-\\\\o]""
a -/o] : ""-/o] ""
a -//o] : ""-//o] ""
a x->o] : ""x->o] ""
@enduml
|
Short incoming and outgoing messages (with '?')
Short incoming (with '?')
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
a -> b : //Long long label//
?-> b : ""?-> ""
?->> b : ""?->> ""
?-\ b : ""?-\ ""
?-\\ b : ""?-\\\\""
?-/ b : ""?-/ ""
?-// b : ""?-// ""
?->x b : ""?->x ""
?x-> b : ""?x-> ""
?o-> b : ""?o-> ""
?->o b : ""?->o ""
?o->o b : ""?o->o ""
?<-> b : ""?<-> ""
?o<->o b : ""?o<->o""
?x<->x b : ""?x<->x""
?->>o b : ""?->>o ""
?-\o b : ""?-\o ""
?-\\o b : ""?-\\\\o ""
?-/o b : ""?-/o ""
?-//o b : ""?-//o ""
?x->o b : ""?x->o ""
@enduml
|
Short outgoing (with '?')
🎉 Copied!
|
@startuml
participant Alice as a
participant Bob as b
a -> b : //Long long label//
a ->? : ""->? ""
a ->>? : ""->>? ""
a -\? : ""-\? ""
a -\\? : ""-\\\\?""
a -/? : ""-/? ""
a -//? : ""-//? ""
a ->x? : ""->x? ""
a x->? : ""x->? ""
a o->? : ""o->? ""
a ->o? : ""->o? ""
a o->o? : ""o->o? ""
a <->? : ""<->? ""
a o<->o? : ""o<->o?""
a x<->x? : ""x<->x?""
a ->>o? : ""->>o? ""
a -\o? : ""-\o? ""
a -\\o? : ""-\\\\o?""
a -/o? : ""-/o? ""
a -//o? : ""-//o? ""
a x->o? : ""x->o? ""
@enduml
|
Par défaut
🎉 Copied!
|
@startuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
|
LifelineStrategy
🎉 Copied!
|
@startuml
skinparam lifelineStrategy nosolid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
|
[Ref. QA-9016]
Pour avoir une ligne de vie solide dans les diagrammes de séquence, vous pouvez utiliser :
skinparam lifelineStrategy solid
🎉 Copied!
|
@startuml
skinparam lifelineStrategy solid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
|
[Ref. QA-2794]
style strictuml
Pour être conforme à l'UML strict
(pour le style de flèche : émet un triangle plutôt que des pointes de flèche pointues), vous pouvez utiliser
skinparam style strictuml
🎉 Copied!
|
@startuml
skinparam style strictuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
|
[Réf. QA-1047]
Par défaut, tous les participants sont affichés
🎉 Copied!
|
@startuml
participant Alice
participant Bob
participant Carol
Alice -> Bob : hello
@enduml
|
Mais vous pouvez
hide unlinked
participant
🎉 Copied!
|
@startuml
hide unlinked
participant Alice
participant Bob
participant Carol
Alice -> Bob : hello
@enduml
|
[Réf. QA-4247]
Il est possible de
colorer un groupe de message
🎉 Copied!
|
@startuml
Alice -> Bob: Authentication Request
alt#Gold #LightBlue Successful case
Bob -> Alice: Authentication Accepted
else #Pink Failure
Bob -> Alice: Authentication Rejected
end
@enduml
|
[Réf. QA-4750 et QA-6410]
🎉 Copied!
|
@startuml
mainframe This is a **mainframe**
Alice->Bob : Hello
@enduml
|
[Ref. QA-4019 and Issue#148]
You can use the
(nn)
option (before or after arrow) to make the arrows slanted, where
nn is the number of shift pixels.
[Available only after v1.2022.6beta+]
🎉 Copied!
|
@startuml
A ->(10) B: text 10
B ->(10) A: text 10
A ->(10) B: text 10
A (10)<- B: text 10
@enduml
|
🎉 Copied!
|
@startuml
A ->(40) B++: Rq
B -->(20) A--: Rs
@enduml
|
[Ref. QA-14145]
🎉 Copied!
|
@startuml
!pragma teoz true
A ->(50) C: Starts\nwhen 'B' sends
& B ->(25) C: \nBut B's message\n arrives before A's
@enduml
|
[Ref. QA-6684]
🎉 Copied!
|
@startuml
!pragma teoz true
S1 ->(30) S2: msg 1\n
& S2 ->(30) S1: msg 2
note left S1: msg\nS2 to S1
& note right S2: msg\nS1 to S2
@enduml
|
[Ref. QA-1072]
You can use the
&
teoz command to display parallel messages:
🎉 Copied!
|
@startuml
!pragma teoz true
Alice -> Bob : hello
& Bob -> Charlie : hi
@enduml
|
(See also Teoz architecture)