Diagramme de séquence

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.

  • Syntaxe intuitive :
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.

Exemples de base

La séquence -> est utilisée pour dessiner un message entre deux participants. Les participants ne sont pas forcément déclarés explicitement.

Pour avoir une flèche en pointillé, vous utilisez -->

Il est également possible d'utiliser <- et <--. Cela ne change pas le dessin, mais peut améliorer la lisibilité. Notez que cela n'est vrai que pour les diagrammes de séquence, les règles sont différentes pour les autres diagrammes

🎉 Copied!

@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml

WARNING
 This translation need to be updated. 
WARNING

Déclaration d'un participant

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

Declaring participant on multiline

You can declare participant on multi-line.

🎉 Copied!

@startuml
participant Participant [
    =Title
    ----
    ""SubTitle""
]

participant Bob

Participant -> Bob
@enduml

[Ref. QA-15232]

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.

🎉 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

Message à soi-même

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]

Alignement du texte

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

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

🎉 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 des flèches

Changer la couleur d'une flèche ainsi:

🎉 Copied!

@startuml
Bob -[#red]> Alice : bonjour
Alice -[#0000FF]->Bob : ok
@enduml

Numérotation séquentielle des messages

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]

Titre, en-tête et pied de page de la page

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

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.

🎉 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

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

Étiquette secondaire de groupe

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]

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.

🎉 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

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.

🎉 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

Changer l'aspect des notes

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]

Note sur tous les participants [à travers]

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]

Plusieurs notes alignées au même niveau [/]

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]

Créole (langage de balisage léger) et HTML

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

Diviseur ou séparateur

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

Référence

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

Retard

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

Habillage du texte

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

Séparation verticale

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

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.

🎉 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

Retour

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 labellabel, 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

Création d'un participant

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

Syntaxe raccourcie pour l'activation, la désactivation, la création

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]

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.

🎉 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

Flèches courtes pour les messages entrants et sortants

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]

Anchors and Duration

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]

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

🎉 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

Position of the stereotypes

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]

Plus d'information sur les titres

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

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.

🎉 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

Supprimer les participants en pied de page

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

Personnalisation

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

Changer le padding

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

Appendix: Examples of all arrow type

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

SkinParameter spécifique

Par défaut

🎉 Copied!

@startuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

LifelineStrategy

  • nosolid (par défaut)

🎉 Copied!

@startuml
skinparam lifelineStrategy nosolid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml

[Ref. QA-9016]

  • solid
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]

Masquer un participant non lié

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]

Colorier un groupe de message

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]

Mainframe

🎉 Copied!

@startuml
mainframe This is a **mainframe**
Alice->Bob : Hello
@enduml

[Ref. QA-4019 and Issue#148]

Slanted or odd arrows

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]

Parallel messages (with teoz)

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)


Privacy Policy      Advertise