Donate241Patreon125


Diagrama de Componentes

Veamos algunos ejemplos :

Componentes

Los componentes deberían ser encerrados entre corchetes [].

También puedes usar la palabra reservada component para definir un componente. Y puedes definir un alias, usando la palabra reservada as. Este alias será usado más adelante, cuando definamos relaciones.

@startuml

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

@enduml

Interfaces

Puedes definir una interfaz usando el símbolo () (porque esto luce como un circulo).

Puedes usar también la palabra reservada interface para definir una interfaz. Y puedes definir un alias, usando la palabra reservada as. Este alias sera usado luego, definiendo las relaciones.

Nosotros veremos mas adelante que la definición de interfaz es opcional.

@startuml

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

@enduml

Ejemplos basicos

Los links entre los elementos se hacen usando la combinación de símbolos de linea de puntos (..), linea recta (--), y flechas (-->)

@startuml

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

@enduml

Usando notas

Puedes usar el note left of , note right of , note top of , note bottom of Las palabras reservadas para definir notas relacionadas a un objeto simple.

Una nota puede ser definida sola usando la plabra reservada note, luego linkea a otro objeto usando el símbolo ...

@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

Agrupando componentes

Puedes usar varias palabras reservadas para agrupar componentes e interfaces juntos:

@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

Cambiando la dirección de las flechas

Por defecto los links entre clases tienen dos guiones --y son orientados verticalmente. Puedes usar la orientacion horizontal para un link poniendo un guion (o punto) como en el siguiente ejemplo:

@startuml
[Component] --> Interface1
[Component] -> Interface2
@enduml

Puedes también cambiar direcciones invirtiendo el link:

@startuml
Interface1 <-- [Component]
Interface2 <- [Component]
@enduml

También es posible cambiar la dirección de las flechas agregando la palabra reservada left, right, up o down dentro de la flecha:

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

Puedes acortar la flecha usando el primer caracter (por ejemplo, -d- en lugar de -down-) o los dos primeros caracteres (-do-).

Por favor nota que no puedes abuzar de esta funcionalidad Graphviz que usualmente otorga buenos resultados sin ajustes.

Use UML2 notation

By default (from v1.2020.13-14), UML2 notation is used.

@startuml

interface "Data Access" as DA

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

@enduml

Utiliza la notación UML1

El comando skinparam componentStyle uml1 es usado para cambiar hacia la notación UML1.

@startuml
skinparam componentStyle uml1

interface "Data Access" as DA

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

@enduml

Use rectangle notation (remove UML notation)

The skinparam componentStyle rectangle command is used to switch to rectangle notation (without any UML notation).

@startuml
skinparam componentStyle rectangle

interface "Data Access" as DA

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

@enduml

Long description

It is possible to put description on several lines using square brackets.

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

Colores individuales

Puedes especificar un color despues de la definición del componente.

@startuml
component  [Web Server] #Yellow
@enduml

Using Sprite in Stereotype

You can use sprites within stereotype components.

@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

Personalización (Skinparam)

Puedes usar el comando skinparam para cambiar los colores y las fuentes de los dibujos

Puedes usar este comando:

Puedes definir colores y fuentes específicas para interfaces y componentes estereotipados.

@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

@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