Diagrammes de composants

Prenons quelques exemples.

Composants

Les composants doivent être mis entre parenthèses.

Vous pouvez également utiliser le mot-clé component pour définir un composant . Et vous pouvez définir un alias, en utilisant le mot-clé as . Cet alias sera utilisé plus tard, lors de la définition des relations

🎉 Copied!
@startuml

[First component]
[Another component] as Comp2
component Comp3
component [Last\ncomponent] as Comp4

@enduml

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.

🎉 Copied!
@startuml

() "First Interface"
() "Another interface" as Interf2
interface Interf3
interface "Last\ninterface" as Interf4

[component]
footer //Adding "component" to force diagram to be a **component diagram**//
@enduml

Exemple de base

Les liens entre les éléments sont établis à l'aide de combinaisons de symboles de lignes pointillées (..), de lignes droites (--) et de flèches (-->)

🎉 Copied!
@startuml

DataAccess - [First Component]
[First Component] ..> HTTP : use

@enduml

Utilisation des notes

Vous pouvez utiliser les mots-clés note left of , note right of, note top of , note bottom of pour définir des notes relatives à un seul objet.

Une note peut également être définie seule avec les mots-clés note , puis liée à d'autres objets à l'aide du symbole ..

🎉 Copied!
@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

WARNING
 This translation need to be updated. 
WARNING

Regroupement de composants

Vous pouvez utiliser plusieurs mots-clés pour regrouper des composants et des interfaces
  • package
  • node
  • folder
  • frame
  • cloud
  • database

🎉 Copied!
@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

Changement de direction des flèches

Par défaut, les liens entre les classes ont deux tirets -- et sont orientés verticalement. Il est possible d'utiliser un lien horizontal en mettant un seul tiret (ou point) comme ceci

🎉 Copied!
@startuml
[Component] --> Interface1
[Component] -> Interface2
@enduml

Vous pouvez également changer de direction en inversant le lien :

🎉 Copied!
@startuml
Interface1 <-- [Component]
Interface2 <- [Component]
@enduml

Il est également possible de changer la direction de la flèche en ajoutant les mots-clés left, right, up ou down à l'intérieur de la flèche

🎉 Copied!
@startuml
[Component] -left-> left
[Component] -right-> right
[Component] -up-> up
[Component] -down-> down
@enduml

Vous pouvez raccourcir la flèche en utilisant uniquement le premier caractère de la direction (par exemple, -d- au lieu de -down- ) ou les deux premiers caractères (-do-).

Veuillez noter que vous ne devez pas abuser de cette fonctionnalité : Graphviz donne généralement de bons résultats sans modification.

Et avec le paramètre left to right direction paramètre

🎉 Copied!
@startuml
left to right direction
[Component] -left-> left
[Component] -right-> right
[Component] -up-> up
[Component] -down-> down
@enduml

Utiliser la notation UML2

Par défaut (à partir de la version v1.2020.13-14), la notation UML2 est utilisée.

🎉 Copied!
@startuml

interface "Data Access" as DA

DA - [First Component]
[First Component] ..> HTTP : use

@enduml

Utiliser la notation UML1

La commande skinparam componentStyle uml1 est utilisée pour passer à la notation UML1

🎉 Copied!
@startuml
skinparam componentStyle uml1

interface "Data Access" as DA

DA - [First Component]
[First Component] ..> HTTP : use

@enduml

Utiliser le style rectangle (supprime toute notation UML)

La commande skinparam componentStyle rectangle est utilisée pour changer vers le style rectangle (sans aucune notation UML).

🎉 Copied!
@startuml
skinparam componentStyle rectangle

interface "Data Access" as DA

DA - [First Component]
[First Component] ..> HTTP : use

@enduml

Description longue

Il est possible de mettre un long texte sur plusieurs lignes en utilisant des crochets.

🎉 Copied!
@startuml
component comp1 [
This component
has a long comment
on several lines
]
@enduml

Couleurs individuelles

Vous pouvez spécifier une couleur après la définition du composant

🎉 Copied!
@startuml
component  [Web Server] #Yellow
@enduml

Sprites et stéréotypes

Vous pouvez utiliser des sprites dans les stéréotypes des composants.

🎉 Copied!
@startuml
sprite $businessProcess [16x16/16] {
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFF0FFFFF
FFFFFFFFFF00FFFF
FF00000000000FFF
FF000000000000FF
FF00000000000FFF
FFFFFFFFFF00FFFF
FFFFFFFFFF0FFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFF
}


rectangle " End to End\nbusiness process" <<$businessProcess>> {
 rectangle "inner process 1" <<$businessProcess>> as src
 rectangle "inner process 2" <<$businessProcess>> as tgt
 src -> tgt
}
@enduml

Skinparam

Vous pouvez utiliser la commande skinparam pour modifier les couleurs et les polices du dessin.

Vous pouvez utiliser cette commande :

Vous pouvez définir des couleurs et des polices spécifiques pour les composants et les interfaces stéréotypés

🎉 Copied!
@startuml

skinparam interface {
  backgroundColor RosyBrown
  borderColor orange
}

skinparam component {
  FontSize 13
  BackgroundColor<<Apache>> Pink
  BorderColor<<Apache>> #FF6655
  FontName Courier
  BorderColor black
  BackgroundColor gold
  ArrowFontName Impact
  ArrowColor #FF6655
  ArrowFontColor #777777
}

() "Data Access" as DA
Component "Web Server" as WS << Apache >>

DA - [First Component]
[First Component] ..> () HTTP : use
HTTP - WS

@enduml

🎉 Copied!
@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

Paramètre de peau spécifique

componentStyle

  • Par défaut (ou avec skinparam componentStyle uml2), vous avez une icône pour le composant

🎉 Copied!
@startuml
skinparam BackgroundColor transparent
skinparam componentStyle uml2
component A {
   component "A.1" {
}
   component A.44 {
      [A4.1]
}
   component "A.2"
   [A.3]
   component A.5 [
A.5] 
   component A.6 [
]
}
[a]->[b]
@enduml

  • Si vous voulez la supprimer, et n'avoir que le rectangle, vous pouvez utiliser skinparam componentStyle rectangle

🎉 Copied!
@startuml
skinparam BackgroundColor transparent
skinparam componentStyle rectangle
component A {
   component "A.1" {
}
   component A.44 {
      [A4.1]
}
   component "A.2"
   [A.3]
   component A.5 [
A.5] 
   component A.6 [
]
}
[a]->[b]
@enduml

Ref. 10798]

Masquer ou supprimer un composant non lié

Par défaut, tous les composants sont affichés

🎉 Copied!
@startuml
component C1
component C2
component C3
C1 -- C2
@enduml

Mais vous pouvez :
  • hide @unlinked cacher des composants

🎉 Copied!
@startuml
component C1
component C2
component C3
C1 -- C2

hide @unlinked
@enduml

  • ou remove @unlinked supprimer des composants

🎉 Copied!
@startuml
component C1
component C2
component C3
C1 -- C2

remove @unlinked
@enduml

[Réf. QA-11052]

Masquer, supprimer ou restaurer un composant balisé ou un joker

Vous pouvez placer $tags (en utilisant $) sur des composants, puis supprimer, masquer ou restaurer des composants individuellement ou par balises.

Par défaut, tous les composants sont affichés

🎉 Copied!
@startuml
component C1 $tag13
component C2
component C3 $tag13
C1 -- C2
@enduml

Mais vous pouvez :
  • hide $tag13 composants

🎉 Copied!
@startuml
component C1 $tag13
component C2
component C3 $tag13
C1 -- C2

hide $tag13
@enduml

  • ou remove $tag13 composants

🎉 Copied!
@startuml
component C1 $tag13
component C2
component C3 $tag13
C1 -- C2

remove $tag13
@enduml

  • ou remove $tag13 and restore $tag1 composants

🎉 Copied!
@startuml
component C1 $tag13 $tag1
component C2
component C3 $tag13
C1 -- C2

remove $tag13
restore $tag1
@enduml

  • ou remove * and restore $tag1 composants

🎉 Copied!
@startuml
component C1 $tag13 $tag1
component C2
component C3 $tag13
C1 -- C2

remove *
restore $tag1
@enduml

[Réf. QA-7337 et QA-11052]