Guía de Referencia del Lenguaje PlantUML

Transcripción

Guía de Referencia del Lenguaje PlantUML
Diagramando UML con PlantUML
Guía de Referencia del Lenguaje
(martes 1 de marzo de 2016 23:53)
PlantUML es un proyecto Open Source (código abierto) que permite escribir rápidamente:
• Diagramas de Secuencia,
• Diagramas de Casos de uso,
• Diagramas de Clases,
• Diagramas de Actividades,
• Diagramas de Componentes,
• Diagramas de Estados,
• Diagramas de Objetos.
Los diagramas son definidos usando un lenguaje simple e intuitivo.
1
DIAGRAMA DE SECUENCIA
1 Diagrama de Secuencia
1.1 Ejemplo básico
La secuencia -> es usada para dibujar un mensaje entre dos participantes. Los participantes tienen que
ser declarados explícitamente.
Para definir una flecha punteada, se debe usar -->
También se puede usar <- y <--. No provoca cambios en el dibujo, pero puede mejorar la legibilidad.
Tenga en cuenta que esto sólo es posible en diagramas de secuencia, las reglas son diferentes para otros
diagramas.
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
1.2 Comentarios
Todo lo que comienza con comillas simples ' es un comentario.
También puedes colocar comentarios de varias líneas, usando /' para empezar y '/ para finalizar.
1.3 Declarando participantes
Es posible cambiar el orden de los participantes usando la palabra reservada participant.
También es posible el uso de otras palabras reservadas para declarar un participante:
• actor
• boundary
• control
• entity
• database
@startuml
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
Foo1 -> Foo2 :
Foo1 -> Foo3 :
Foo1 -> Foo4 :
Foo1 -> Foo5 :
To
To
To
To
boundary
control
entity
database
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
1 of 118
1.4 Sin usar letras en participantes
1
DIAGRAMA DE SECUENCIA
Se puede renombrar un participante usando la palabra reservada as.
También es posible cambiar el color de fondo de los actores o participantes.
@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 #99 FF99
/' You can also declare:
participant L as "I have a really\nlong name" #99 FF99
'/
Alice ->Bob: Authentication Request
Bob ->Alice: Authentication Response
Bob ->L: Log transaction
@enduml
1.4 Sin usar letras en participantes
Puedes usar comillas para definir participantes. Y puedes usar la palabra reservada as para asignar un
alias a esos participantes.
@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
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
2 of 118
1.5 Auto-Mensaje
1
DIAGRAMA DE SECUENCIA
1.5 Auto-Mensaje
Un participante puede enviar mensajes asi mismo.
También es posible tener un mensaje multi-líneas usando \n.
@startuml
Alice ->Alice: This is a signal to self .\nIt also demonstrates\nmultiline \ntext
@enduml
1.6 Cambiar estilo de la flecha
Puede cambiar el estilo de la flecha de diferentes formas:
• añade una x al final para indicar un mensage perdido
• utilice \ o / en lugar de < o > para tener solo la parte inferior o superior de la flecha
• repite la cabeza de la flecha (por ejemplo, >> o //) para tener un trazo más fino
• Utilice -- en lugar de - para obtener una flecha punteada.
• añade una ”o” al final de la cabeza de una flecha
• utilice flechas bidireccionales
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
3 of 118
1.7 Cambiar el color de la flecha
1
DIAGRAMA DE SECUENCIA
1.7 Cambiar el color de la flecha
Puede cambiar el color de flechas individuales usando la siguiente notación:
@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml
1.8 Numeración de la secuencia de mensajes
La palabra clave autonumber es usada para añadir automáticamente números a los mensajes.
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml
Puedes especificar un número de comienzo con autonumber 'número inicial' , y también un
incremento con autonumber 'número inicial' 'incremento'.
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
4 of 118
1.8 Numeración de la secuencia de mensajes
1
DIAGRAMA DE SECUENCIA
Bob <- Alice : Yet another authentication Response
@enduml
Puedes especificar un formato para su número usándolo entre comillas dobles.
El formateo se hace mediante la calse Java DecimalFormat (’0’ denota un dígito, ’#’ denota un digito
y cero si está ausente).
Puedes usar alguna etiqueta HTML en el formato.
@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
También puedes usar autonumber stop y autonumber resume 'increment' 'format' para pausar
y continuar la numeración automática, respectivamente.
@startuml
autonumber 10 10 "<b >[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber stop
Bob -> Alice : dummy
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
5 of 118
1.9 Título
1
DIAGRAMA DE SECUENCIA
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.9 Título
La palabra reservada title se usa para colocar un título.
@startuml
title Simple communication example
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
@enduml
1.10 Leyenda del diagrama
Las palabras reservadas legend y end legend son usadas para colocar una leyenda.
Puedes opcionalmente especificar left, right o center para establecer la alineación de la leyenda.
@startuml
Alice -> Bob : Hello
legend right
Short
legend
endlegend
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
6 of 118
1.11 Dividiendo diagramas
1
DIAGRAMA DE SECUENCIA
1.11 Dividiendo diagramas
La palabra reservada newpage es empleada para dividir un diagrama en varias imágenes.
Puedes colocar un título para la página nueva justo después de la palabra reservada newpage .
Esto es bastante práctico con Word para devolver diagramas grandes en varias páginas.
@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
1.12 Agrupando mensajes
Es posible agrupar mensajes usando las siguientes palabras reservadas:
• alt/else
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
7 of 118
1.13 Notas en mensajes
1
DIAGRAMA DE SECUENCIA
• opt
• loop
• par
• break
• critical
• group, seguida de un texto para mostrar
Es posible añadir un texto que será mostrado en el encabezado (excepto para group).
La palabra reservada end es usada para cerrar el grupo.
Tenga en cuenta que es posible anidar grupos.
@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
1.13 Notas en mensajes
Es posible colocar notas en mensajes usando las palabras reservadas note left o note right inmediatamente después del mensaje.
Puedes tener una nota multi-líneas usando la palabra reservada end note .
@startuml
Alice ->Bob : hello
note left: this is a first note
Bob ->Alice : ok
note right: this is another note
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
8 of 118
1.14 Algunas otras notas
1
DIAGRAMA DE SECUENCIA
Bob ->Bob : I am thinking
note left
a note
can also be defined
on several lines
end note
@enduml
1.14 Algunas otras notas
También es posible colocar notas relativas al participante con las palabras reservadas note left of ,
note right of o note over .
Es posible resaltar una nota cambiando su color de fondo.
También puedes tener una nota multi-líneas usando la palabra reservada end note .
@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
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
9 of 118
1.15 Cambiando el aspecto de las notas
1
DIAGRAMA DE SECUENCIA
1.15 Cambiando el aspecto de las notas
Puedes usar las palabras reservadas hnote y rnote para cambiar el aspecto de las notas.
@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
"r" as rectangle
"h" as hexagon
endrnote
@enduml
1.16 Creole y HTML
También es posible usar sintexis de WikiCreole:
@startuml
participant Alice
participant "The ** Famous ** Bob" as Bob
Alice -> Bob : hello --there -... Some ~~ long delay ~~ ...
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
10 of 118
1.17 Divisor
1
DIAGRAMA DE SECUENCIA
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
1.17 Divisor
Si quieres, puedes dividir un diagrama usando el separador == para separar su diagrama en pasos lógicos.
@startuml
== Initialization ==
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
== Repetition ==
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
11 of 118
1.18 Referencia
1
DIAGRAMA DE SECUENCIA
1.18 Referencia
You can use reference in a diagram, using the keyword ref over.
@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.19 Retardo
Puedes usar ... para indicar un retardo en el diagrama. Y también es posible colocar un mensaje con
ese retardo.
@startuml
Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes latter ...
Bob --> Alice: Bye !
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
12 of 118
1.20 Espaciado
1
DIAGRAMA DE SECUENCIA
1.20 Espaciado
Puedes usar ||| para indicar espaciado en el diagrama.
También es posible especificar un número de píxel para ser usado.
@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.21 Activación y Destrucción de la Línea de vida
activate y deactivate son usados para denotar la activación de un participante.
Una vez que un participante es activado, su línea de vida aparece.
activate y deactivate aplica en el mensaje anterior.
destroy denota el final de la línea de vida de un participante.
@startuml
participant User
User -> A: DoWork
activate A
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
13 of 118
1.21 Activación y Destrucción de la Línea de vida
1
DIAGRAMA DE SECUENCIA
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
Puede usarse anidamiento de líneas de vida, y es posible agregar un color a dicha línea de vida.
@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
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
14 of 118
1.22 Creación de participante
1
DIAGRAMA DE SECUENCIA
1.22 Creación de participante
Puedes usar la palabra reservada create justo antes de la primera recepción de un mensaje para recalcar
el hecho de que ese mensaje se encuentra creando ese nuevo objeto.
@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
1.23 Mensajes entrantes y salientes
Puedes usar flechas entrantes y salientes si quieres centrarte en una parte del diagrama.
Utilice corchetes para denotar el lado izquierdo ”[” o el lado derecho ”]” del diagrama.
@startuml
[-> A: DoWork
activate A
A -> A: Internal call
activate A
A ->] : << createRequest >>
A<--] : RequestCreated
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
15 of 118
1.24 Estereotipos y marcas
1
DIAGRAMA DE SECUENCIA
deactivate A
[<- A: Done
deactivate A
@enduml
También puedes tener la siguiente sintaxis:
@startuml
[-> Bob
[o-> Bob
[o->o Bob
[x-> Bob
[<- Bob
[x<- Bob
Bob
Bob
Bob
Bob
->]
->o]
o->o]
->x]
Bob <-]
Bob x<-]
@enduml
1.24 Estereotipos y marcas
Es posible añadir estereotipos a participantes usando << y >>.
En el estereotipo, puedes añadir un carácter marcado en un círculo coloreado usando la sintaxis
(X,color).
@startuml
participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,# ADD1B2) Testable >>
Bob ->Alice: First message
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
16 of 118
1.25 Mayor información en los títulos
1
DIAGRAMA DE SECUENCIA
By default, the guillemet character is used to display the stereotype. You can change this behavious
using the skinparam guillemet:
@startuml
skinparam guillemet false
participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,# ADD1B2) Testable >>
Bob ->Alice: First message
@enduml
@startuml
participant Bob << (C,# ADD1B2) >>
participant Alice << (C,# ADD1B2) >>
Bob ->Alice: First message
@enduml
1.25 Mayor información en los títulos
Puedes usar sintaxis de Creole en el título.
@startuml
title __Simple__ ** communication ** example
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
17 of 118
1.26 Entorno de participante
1
DIAGRAMA DE SECUENCIA
Puedes añadir una nueva línea usando \n en la descripción del título.
@startuml
title __Simple__ communication example\non several lines
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
Además puedes definir un título en varias líneas usando las palabras reservadas title y 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.26 Entorno de participante
Es posible dibujar una caja alrededor de algunos participantes, usando los comandos box y end box .
Puedes añadir un título opcional o un color de fondo opcional, después de la palabra reservada box .
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
18 of 118
1.27 Removiendo pie de página
1
DIAGRAMA DE SECUENCIA
@startuml
box "Internal Service" #LightBlue
participant Bob
participant Alice
end box
participant Other
Bob -> Alice : hello
Alice -> Other : hello
@enduml
1.27 Removiendo pie de página
Puedes usar las palabras reservadas hide footbox para remover el pie de página del diagrama.
@startuml
hide footbox
title Footer removed
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
@enduml
1.28 Personalización (Skinparam)
Puedes usar el comando skinparam para cambiar los colores y fuentes en el dibujo.
Puedes usar este comando:
• En la definición del diagrama, como cualquier otro comando,
• En un archivo incluido,
• En un archivo de configuración, proporcionado en la consola de comandos o en el ANT task.
@startuml
skinparam backgroundColor #EEEBDC
skinparam sequence {
ArrowColor DeepSkyBlue
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
19 of 118
1.28 Personalización (Skinparam)
1
DIAGRAMA DE SECUENCIA
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
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
20 of 118
2
DIAGRAMA DE CASOS DE USO
2 Diagrama de Casos de Uso
2.1 Casos de uso
Los casos de uso estan encerrados entre paréntesis (los paréntesis tienen un aspecto similar a un óvalo).
También puede usar la palabra usecase para crear un caso de uso. Ademas puede crear un alias,
usando la palabra as. Este alias será usado mas adelante, cuando defina relaciones.
@startuml
(First usecase)
(Another usecase) as (UC2)
usecase UC3
usecase (Last\nusecase) as UC4
@enduml
2.2 Actores
Los actores se encierran entre dos puntos.
También puedes usar la palabra reservada actor para definir un actor. Además puedes definir un
alias, usando la palabra reservada as. Este alias será usado más adelante, cuando definamos relaciones.
Veremos más adelante que las declaraciones de los actores son opcionales.
@startuml
:First Actor:
:Another\nactor: as Men2
actor Men3
actor :Last actor: as Men4
@enduml
2.3 Descripción de Casos de uso
Si quiere realizar una descripción en varias líneas, puede usar citas (” ”).
También puede usar los siguientes separadores: -- .. == __. Y puede introducir títulos dentro de los
separadores.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
21 of 118
2.4 Ejemplo básico
2
DIAGRAMA DE CASOS DE USO
@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 Ejemplo básico
Para relacionar actores y casos de uso, la flecha --> es usada.
Cuanto más guiones "-" en la flecha, más larga será la misma. Puedes añadir una etiqueta en la
flecha, añadiendo el carácter ”:” en la definición de la flecha.
En este ejemplo, puedes ver que User no ha sido definido, y es usado como un actor.
@startuml
User -> (Start)
User --> (Use the application) : A small label
:Main Admin: ---> (Use the application) : This is\nyet another\nlabel
@enduml
2.5 Extensión
Si un actor/caso de uso extiende a otro, puedes usar el símbolo <|-- (que significa
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
).
22 of 118
2.6 Usando notas
2
DIAGRAMA DE CASOS DE USO
@startuml
:Main Admin: as Admin
(Use the application) as (Use)
User <|-- Admin
(Start) <|-- (Use)
@enduml
2.6 Usando notas
Puedes usar las palabras claves: note left of , note right of , note top of , note bottom of, para
añadir notas relacionadas a un objeto en particular.
También se puede añadir un nota solitaria con la palabra clave note, y después realacionarla con otro
objeto usando el símbolo .. .
@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 connected\nto several objects ." as N2
(Start) .. N2
N2 .. (Use)
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
23 of 118
2.7 Estereotipos
2
DIAGRAMA DE CASOS DE USO
2.7 Estereotipos
Puedes añadir estereotipos mientras defines actores y casos de uso, usando ” << ” y ” >> ”.
@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 Cambiar dirección a las flechas
Por defecto, conexiones entre clases tiene dos guiones -- y son verticalmente orientadas. Es posible usar
una conexión horizontal, colocando un solo guión (o punto) de esta forma:
@startuml
:user: --> (Use case 1)
:user: -> (Use case 2)
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
24 of 118
2.8 Cambiar dirección a las flechas
2
DIAGRAMA DE CASOS DE USO
También puedes cambiar de dirección revirtiendo la conexión:
@startuml
(Use case 1) <.. :user:
(Use case 2) <- :user:
@enduml
También es posible cambiar la dirección de una flecha añadiendo las palabras clave left, right, up
or down, dentro de la misma:
@startuml
:user: -left -> (dummyLeft)
:user: -right -> (dummyRight)
:user: -up -> (dummyUp)
:user: -down -> (dummyDown)
@enduml
Puedes acortar la flecha usando sólo el primer carácter de la dirección (por ejemplo, -d- en lugar de
-down-) o los primeros dos caracteres (-do-).
Por favor tenga en cuenta que no debería abusar de esta funcionalidad : Graphviz usualmente devuelve
buenos resultados sin realizar muchos ajustes.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
25 of 118
2.9 Casos de uso
2
DIAGRAMA DE CASOS DE USO
2.9 Casos de uso
La palabra clave title es usada para establecer un título.
Puedes usar las palabras clave title y end title para un título largo, así como en los diagramas de
secuencia.
@startuml
title Simple <b>Usecase </b>\ nwith one actor
"Use the application" as (Use)
User -> (Use)
@enduml
2.10 Dividiendo los diagramas
La palabra clave newpage divide su diagrama en varias páginas o imágenes.
@startuml
:actor1: --> (Usecase1)
newpage
:actor2: --> (Usecase2)
@enduml
2.11 Dirección: de izquierda a derecha
El comportamiento general cuando se construye un diagrama, es top to bottom.
@startuml
'default
top to bottom direction
user1 --> (Usecase 1)
user2 --> (Usecase 2)
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
26 of 118
2.12 Personalización (Skinparam)
2
DIAGRAMA DE CASOS DE USO
Puede cambiar a left to right usando el comando left to right direction. En ocaciones, el resultado
es mejor con esta dirección.
@startuml
left to right direction
user1 --> (Usecase 1)
user2 --> (Usecase 2)
@enduml
2.12 Personalización (Skinparam)
Puedes usar el comando skinparam para cambiar los colores y las fuentes de los dibujos
Puedes usar este comando:
• En la definición del diagrama, como cualquier otro comando,
• En un archivo incluido,
• En un archivo de configuración, proporcionado en la consola de comandos o en el ANT task.
Puedes definir colores y fuentes específicas para los actores y casos de uso estereotipados.
@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 >>
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
27 of 118
2.13 Un ejemplo completo
2
DIAGRAMA DE CASOS DE USO
(Use the application) as (Use) << Main >>
User -> (Start)
User --> (Use)
MySql --> (Use)
@enduml
2.13 Un ejemplo completo
@startuml
left to right direction
skinparam packageStyle rect
actor customer
actor clerk
rectangle checkout {
customer -- (checkout)
(checkout) .> (payment) : include
(help) .> (checkout) : extends
(checkout) -- clerk
}
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
28 of 118
3 DIAGRAMA DE CLASES
3 Diagrama de Clases
3.1 Relación entre clases
Las relaciones entre clases se definen usando los siguientes símbolos:
Extensión
<|-Composición *-Agregación
o-Es posible intercambiar -- por .. para tener lineas punteadas.
Knowing those rules, it is possible to draw the following drawings:
@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
3.2 Etiquetas en las relaciones
Es posible añadir etiquetas en las relaciones, usando ”:”, seguido del texto de la etiqueta.
Para la cardinalidad, puede usar comillas dobles "" en cada lado de la relación.
@startuml
Class01 "1" *-- "many" Class02 : contains
Class03 o-- Class04 : aggregation
Class05 --> "1" Class06
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
29 of 118
3.2 Etiquetas en las relaciones
3 DIAGRAMA DE CLASES
Se puede añadir una flecha extra apuntando a un objeto, mostrando que objeto actúa sobre el otro
objeto, usando < o > al inicio o al final de la etiqueta.
@startuml
class Car
Driver - Car : drives >
Car *- Wheel : have 4 >
Car -- Person : < owns
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
30 of 118
3.3 Añadiendo métodos
3 DIAGRAMA DE CLASES
3.3 Añadiendo métodos
Para declarar las propiedades y métodos, se puede usar el símbolo ":" seguido del nombre de la propiedad
o el método.
El sistema busca por paréntesis para elegir entre métodos y propiedades.
@startuml
Object <|-- ArrayList
Object : equals ()
ArrayList : Object [] elementData
ArrayList : size ()
@enduml
También es posible agrupar entre llaves { todos las propiedades y métodos.
Tenga en cuenta que la sintexis es muy flexible acerca del orden tipo/nombre.
@startuml
class Dummy {
String data
void methods ()
}
class Flight {
flightNumber : Integer
departureTime : Date
}
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
31 of 118
3.4 Definiendo la visibilidad
3 DIAGRAMA DE CLASES
3.4 Definiendo la visibilidad
Cuando defines propiedades o métodos, puedes usar caracteres para establecer la visibilidad que les
correspondan:
#
̃
+
privado
protegido
paquete privado
público
@startuml
class Dummy {
-field1
#field2
~method1 ()
+method2 ()
}
@enduml
Puedes desactivar esta característica usando el comando skinparam classAttributeIconSize 0 :
@startuml
skinparam classAttributeIconSize 0
class Dummy {
-field1
#field2
~method1 ()
+method2 ()
}
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
32 of 118
3.5 Abstracto y Estático
3 DIAGRAMA DE CLASES
3.5 Abstracto y Estático
Puedes definir métodos o propiedades abstractas y estáticas usando los modificadores static o abstract
.
Esos modificadores pueden ser usado al comienzo o al final de un línea. También puedes usar classifier
en lugar de static.
@startuml
class Dummy {
{static} String id
{abstract} void methods ()
}
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
33 of 118
3.6 Cuerpo avanzado de las clases
3 DIAGRAMA DE CLASES
3.6 Cuerpo avanzado de las clases
Por defecto, las propiedades y los métodos son agrupados automáticamente por PlantUML. Puedes usar
separadores para definir tu propia manera de ordenar las propiedades y los métodos. Son posibles
los siguientes separadores: -- .. == __.
También puedes definir títulos dentro de los separadores:
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
34 of 118
3.7 Notas y estereotipos
3 DIAGRAMA DE CLASES
3.7 Notas y estereotipos
Los estereotipos son definidos con la palabra clave class ” << ” and ” >> ” .
También puedes definir notas usando las palabras claves note left of , note right of , note top
of , note bottom of .
Además puedes definir una nota en la última clase definida usando note left, note right, note top,
note bottom .
Una nota también puede definirse solitariamente con la palabra clave note, y a continuación relacionarla
con otro objeto usando el símbolo .. .
@startuml
class Object << general >>
Object <|--- ArrayList
note top of Object : In java , every class\nextends this one.
note "This is a floating note" as N1
note "This note is connected\nto several objects ." as N2
Object .. N2
N2 .. ArrayList
class Foo
note left: On last defined class
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
35 of 118
3.8 Más acerca de notas
3.8
3 DIAGRAMA DE CLASES
Más acerca de notas
También es posible usar algunas etiquetas HTML como:
• <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
You can also have a note on several lines You can also define a note on the last defined class using
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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
36 of 118
3.9 Notas en enlaces
3.9
3 DIAGRAMA DE CLASES
Notas en enlaces
Es posible añadir una nota en un enlace, justo después de la definición de dicho enlace, usando
note on link .
También puedes usar note left on link, note right on link, note top on link, note bottom
on link si quieres cambiar la posición de la nota, en relación a una etiqueta.
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
37 of 118
3.10 Clases abstractas e interfaces
3 DIAGRAMA DE CLASES
3.10 Clases abstractas e interfaces
Puedes declarar una clase como abstracta usando las palabras claves "abstract" or "abstract
class" .
La clase será impresa en italic .
Puedes usar también las palabras claves interface, annotation and 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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
38 of 118
3.11 Sin usar letras
3 DIAGRAMA DE CLASES
3.11 Sin usar letras
Si no desea usar letras en la visualización de la clase (o enum...), puede:
• Utilizar la palabra reservada as en la definición de la clase
• Colocar comillas "" alrededor del nombre de la clase
@startuml
class "This is my class" as class1
class class2 as "It works this way too"
class2 *-- "foo/dummy" : use
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
39 of 118
3.12 Atributos, métodos... ocultos
3 DIAGRAMA DE CLASES
3.12 Atributos, métodos... ocultos
Puede parametrizar la visualización de las clases usando el comando hide/show .
El comando básico es: hide empty members. Este comando ocultará atributos y métodos si están
vacíos.
En lugar de empty members , puedes usar:
• empty fields o empty attributes para atributos vacíos.
• empty methods para métodos vacíos,
• fields o attributes que ocultará atributos, incluso si son descritos,
• methods que ocultará métodos, incluso si son descritos,
• members que ocultará atributos y métodos, incluso si son descritos.
• circle para el carácter encerrado en un círculo, en frente del nombre de clase.
• stereotype para el estereotipo.
También puede proporcionar, justo después las palabras clave hide o show:
• class para todas las clases,
• interface para todas las interfaces,
• enum para todos los enums,
• <<foo1>> para clases que son estereotipadas con foo1,
• un nombre de clase existente.
Puedes usar varios comandos show/hide para definir reglas y excepciones.
@startuml
class Dummy1 {
+myMethods ()
}
class Dummy2 {
+hiddenMethod ()
}
class Dummy3 <<Serializable >> {
String name
}
hide
hide
show
show
members
<<Serializable >> circle
Dummy1 methods
<<Serializable >> fields
@enduml
3.13 Clases ocultas
También puedes usar el comando show/hide para ocultar clases.
Esto puede llegar a ser útil si defines una archivo !included muy grande y si deseas ocultar algunas
clases después de la inclusión de dicho archivo.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
40 of 118
3.14 Uso de clases genéricas
3 DIAGRAMA DE CLASES
@startuml
class Foo1
class Foo2
Foo2 *-- Foo1
hide Foo2
@enduml
3.14 Uso de clases genéricas
También puedes usar los signos menor < y mayor > para definir el uso de clases genéricas.
@startuml
class Foo <? extends Element > {
int size ()
}
Foo *- Element
@enduml
3.15 Círculo enmarcador específico
Usualmente, un carácter enmarcado en un círculo (C,I,E o A) es usado por clases, interfaces, enum
y clases abstractas.
Pero puedes definir tu propio enmarcado para una clase cuando defines un estereotipo, añadiendo
un carácter y un color, así como en el ejemplo:
@startuml
class System << (S,# FF7700) Singleton >>
class Date << (D,orchid) >>
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
41 of 118
3.16 Paquetes
3 DIAGRAMA DE CLASES
3.16 Paquetes
Puedes definir un paquete usando la palabra reservada package, y opcionalmente declarar un color
de fondo para tu paquete (Usando el nombre o el código HTML del color).
Tenga en cuenta que las definiciones de paquetes pueden ser anidadas.
@startuml
package "Classic Collections" #DDDDDD {
Object <|-- ArrayList
}
package net.sourceforge.plantuml {
Object <|-- Demo1
Demo1 *- Demo2
}
@enduml
3.17 Estilos de paquetes
Hay diferentes estilos disponibles para paquetes.
Puedes especificarlos, ya sea configurando un estilo por defecto con el comando : skinparam
packageStyle , o usando un estereotipo en el paquete.
@startuml
scale 750 width
package foo1 <<Node >> {
class Class1
}
package foo2 <<Rect >> {
class Class2
}
package foo3 <<Folder >> {
class Class3
}
package foo4 <<Frame >> {
class Class4
}
package foo5 <<Cloud >> {
class Class5
}
package foo6 <<Database >> {
class Class6
}
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
42 of 118
3.18 Espacios de nombre
3 DIAGRAMA DE CLASES
Puedes también definir enlaces entre paquetes, como en el siguiente ejemplo:
@startuml
skinparam packageStyle rect
package foo1.foo2 {
}
package foo1.foo2.foo3 {
class Object
}
foo1.foo2 +-- foo1.foo2.foo3
@enduml
3.18 Espacios de nombre
En los paquetes, el nombre de una clase es el único identificador de esta clase. Quiere decir que no
puedes tener dos clases con el mismo nombre en diferentes paquetes.
En este caso, deberías usar espacios de nombres en lugar de paquetes.
Puedes referir a clases de otros espacios de nombre describiendo su ruta completamente. A clases
del espacio de nombre por defecto son descritas colocando un punto al inicio.
Tenga en cuenta que no tiene que especificar explícitamente un espacio de nombre : una clase
altamente clasificada es automáticamente colocada en el espacio de nombre correcto.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
43 of 118
3.19 Creación automática del espacio de nombre
3 DIAGRAMA DE CLASES
@startuml
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
3.19 Creación automática del espacio de nombre
Puedes definir otro separador (otro además del punto) usando el comando : set namespaceSeparator
???.
@startuml
set namespaceSeparator ::
class X1::X2::foo {
some info
}
@enduml
Puedes deshabilitar la creación automática de paquetes usando el comando set namespaceSeparator
none.
@startuml
set namespaceSeparator none
class X1.X2.foo {
some info
}
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
44 of 118
3.20 Interface Lollipop
3 DIAGRAMA DE CLASES
3.20 Interface Lollipop
También puedes definir interfaces lollipops en clases, usando la siguiente sintaxsis:
• bar ()- foo
• bar ()-- foo
• foo -() bar
@startuml
class foo
bar ()- foo
@enduml
3.21 Cambiando la dirección de las flechas
Por defecto, enlaces entre clases tienen dos guiones -- y son verticalemnte orientados. Es posible
usar un enlace horizontal colocando un solo guión (o punto), así:
@startuml
Room o- Student
Room *-- Chair
@enduml
También puedes cambiar las direcciones revirtiendo el enlace:
@startuml
Student -o Room
Chair --* Room
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
45 of 118
3.22 Título del diagrama
3 DIAGRAMA DE CLASES
También es posible cambiar la dirección de la flecha añadiendo las palabras claves left, right, up
or down dentro de la flecha:
@startuml
foo -left -> dummyLeft
foo -right -> dummyRight
foo -up -> dummyUp
foo -down -> dummyDown
@enduml
Puedes acortar la flecha usando el primer carácter de la dirección (por ejemplo, -d- en lugar de
-down-) o los primeros dos caracteres.
Por favor tenga en cuenta que no debería abusar de esta funcionalidad : Graphviz usualmente otorga
buenos resultados sin necesidad de ajustar.
3.22 Título del diagrama
La palabra reservada title es usada para colocar un título.
Puedes usar las palabras reservadas title y end title para un título más largo, así como en los
diagramas de secuencia.
@startuml
title Simple <b>example </b>\nof title
Object <|-- ArrayList
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
46 of 118
3.23 Leyenda del diagrama
3 DIAGRAMA DE CLASES
3.23 Leyenda del diagrama
Las palabras reservadas legend yend legend son usadas para colocar una leyenda al diagrama.
Puedes opcionalmente especificar una alineación a izquierda left, a derecha right o en el centro
center de un diagrama.
@startuml
Object <|- ArrayList
legend right
<b>Object </b> and <b>ArrayList </b>
are simple class
endlegend
@enduml
3.24 Asociación de clases
Puedes definir association class después de que una relación haya sido establecida entre dos clases,
como en este ejemplo:
@startuml
class Student {
Name
}
Student "0..*" - "1..*" Course
(Student , Course) .. Enrollment
class Enrollment {
drop ()
cancel ()
}
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
47 of 118
3.25 Personalización (Skinparam)
3 DIAGRAMA DE CLASES
Puedes definirla en otra dirección:
@startuml
class Student {
Name
}
Student "0..*" -- "1..*" Course
(Student , Course) . Enrollment
class Enrollment {
drop ()
cancel ()
}
@enduml
3.25 Personalización (Skinparam)
Puedes usar el comando skinparam para cambiar los colores y fuentes en el diagrama.
Puedes usar este comando:
• En la definición del diagrama, como cualquier otro comando,
• En un archivo incluido,
• En un archivo de configuración, proporcionado en la consola de comandos o en el ANT task.
@startuml
skinparam class {
BackgroundColor PaleGreen
ArrowColor SeaGreen
BorderColor SpringGreen
}
skinparam stereotypeCBackgroundColor YellowGreen
Class01 "1" *-- "many" Class02 : contains
Class03 o-- Class04 : aggregation
@enduml
3.26 Estereotipos personalizados
Puedes definir colores y fuentes específicas para clases esterotipadas.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
48 of 118
3.27 Degrado de colores
3 DIAGRAMA DE CLASES
@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.27 Degrado de colores
Es posible declarar colores individuales para clases o notas usando la notación .
Puedes usar el nombre estándar del color o el código RGB.
También puedes usar degradación de color en el fondo, con la siguiente sintaxis: dos nombres de
colores separados por cualquier de los siguientes:
• |,
• /,
• \,
• or dependiendo de la dirección del degradado.
Por ejemplo, podrías tener:
@startuml
skinparam backgroundcolor AntiqueWhite/Gold
skinparam classBackgroundColor Wheat|CornflowerBlue
class Foo #red -green
note left of Foo #blue \9932 CC
this is my
note on this class
end note
package example #GreenYellow/ LightGoldenRodYellow {
class Dummy
}
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
49 of 118
3.28 Dividiendo archivos grandes
3 DIAGRAMA DE CLASES
3.28 Dividiendo archivos grandes
A veces, puedes obtener imágenes bastante grandes.
Puedes usar el comando ”page (hpages)x(vpages)” para dividir la imágen generada, en varias
imágenes:
hpages es el número que indica la cantidad de páginas horizontales, y vpages es el número que
indica la cantidad de páginas verticales.
@startuml
' Split into 4 pages
page 2x2
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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
50 of 118
4 DIAGRAMA DE ACTIVIDADES
4
4.1
Diagrama de Actividades
Actividades simples
Puedes usar (*) para el punto de inicio y de final en un diagrama de actividades.
En algunos casos, quizás quieras usar (*top) para forzar a que el punto de inicio se ubique en la
parte superior del diagrama.
Utilice --> para las flechas.
@startuml
(*) --> "First Activity"
"First Activity" --> (*)
@enduml
4.2
Etiquetas en las flechas
Por defecto, una flecha comienza en la última actividad usada.
Puedes colocar una etiqueta sobre una flecha usando corchetes, [ ] , justo después de la definición
de la flecha.
@startuml
(*) --> "First Activity"
-->[You can put also labels] "Second Activity"
--> (*)
@enduml
4.3
Cambiando la dirección de la flecha
Puedes usar -> para flechas horizontales. Es posible formzar la dirección de una flecha usando la
siguiente sintaxis:
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
51 of 118
4.4 Ramas (bifurcaciones)
4 DIAGRAMA DE ACTIVIDADES
• -down-> (default arrow)
• -right-> or ->
• -left->
• -up->
@startuml
(*) -up -> "First Activity"
-right -> "Second Activity"
--> "Third Activity"
-left -> (*)
@enduml
4.4
Ramas (bifurcaciones)
Puedes usar las palabras reservadas if/then/else para definir ramas o caminos alternos.
@startuml
(*) --> "Initialization"
if "Some Test" then
-->[true] "Some Activity"
--> "Another activity"
-right -> (*)
else
->[false] "Something else"
-->[Ending process] (*)
endif
@enduml
Desafortunadamente, a veces tendrás que repetir la misma actividad en el texto del diagrama:
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
52 of 118
4.5 Más acerca de las Ramas
4 DIAGRAMA DE ACTIVIDADES
@startuml
(*) --> "check input"
If "input is verbose" then
--> [Yes] "turn on verbosity"
--> "run command"
else
--> "run command"
Endif
-->(*)
@enduml
4.5
Más acerca de las Ramas
Por defecto, una rama es conectada con la última actividad definida, pero es posible sobrescribir
esto y definir un enlace con la palabra reservada if .
También es posible anidar ramas.
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
53 of 118
4.6 Sincronización
4 DIAGRAMA DE ACTIVIDADES
endif
@enduml
4.6
Sincronización
Puedes usar === code === para mostrar barras de sincronización.
@startuml
(*) --> ===B1===
--> "Parallel Activity 1"
--> ===B2===
===B1=== --> "Parallel Activity 2"
--> ===B2===
--> (*)
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
54 of 118
4.7 Descripción de actividades de gran contenido
4.7
4 DIAGRAMA DE ACTIVIDADES
Descripción de actividades de gran contenido
Cuando declaras actividades, puedes abarcar la descripción del texto, en varias líneas. También
puedes añadir \n en la descripción.
También puedes colocar una pequeña cantidad de código en la actividad, con la palabra reservada
as . Este código puede usarse más adelante en la descripción del diagrama.
@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 activity\n on several lines"
A1 --> "Short activity <img:sourceforge.jpg >"
@enduml
4.8
Notas
Puedes añadir notas sobre la actividad usando los comandos note left, note right, note top or
note bottom, justo después de la descripción de la actividad a la quieres añadirle la nota.
Si quieres colocar una nota sobre el punto de inicio, define la nota al comienzo de la descripción del
diagrama.
También puedes tener una nota de varias líneas, usando la palabra reservada 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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
55 of 118
4.9 Partición
4.9
4 DIAGRAMA DE ACTIVIDADES
Partición
Puedes definir una partición usando la palabra reservada partition y opcionalmente declarar un
color de fondo para tu partición (Usando el nombre o código HTML del color)
Cuando declaras actividades, éstas son automáticamente colocadas en la última partición usada.
Puedes cerrar la partición usando una llave de cierre }.
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
56 of 118
4.10 Título del diagrama
4 DIAGRAMA DE ACTIVIDADES
4.10 Título del diagrama
La palabra reservada title es usada para colocar un título.
Puedes usar las palabras reservadas title y end title para un título más largo, así como en los
diagramas de secuencia.
@startuml
title Simple example\nof title
(*) --> "First activity"
--> (*)
@enduml
4.11 Personalización (Skinparam)
Puedes usar el comando skinparam para cambiar las fuentes y colores en el diagrama.
Puedes usar este comando :
• En la definición del diagrama, como cualquier otro comando,
• En un archivo incluido,
• En un archivo de configuración, proporcionado en la consola de comandos o en el ANT task.
Puedes definir colores y fuentes específicas para actividades estereotipadas.
@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
(*)
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
57 of 118
4.12 Octágono
4 DIAGRAMA DE ACTIVIDADES
4.12 Octágono
Puedes cambiar la forma de las actividades a un octágono usando el comando skinparam activityShape
octagon .
@startuml
'Default is skinparam activityShape roundBox
skinparam activityShape octagon
(*) --> "First Activity"
"First Activity" --> (*)
@enduml
4.13 Un ejemplo completo
@startuml
title Servlet Container
(*) --> "ClickServlet.handleRequest ()"
--> "new Page"
if "Page.onSecurityCheck" then
->[true] "Page.onInit ()"
if "isForward ?" then
->[no] "Process controls"
if "continue processing ?" then
-->[yes] === RENDERING ===
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
58 of 118
4.13 Un ejemplo completo
4 DIAGRAMA DE ACTIVIDADES
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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
59 of 118
4.13 Un ejemplo completo
4 DIAGRAMA DE ACTIVIDADES
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
60 of 118
5
5
DIAGRAMA DE ACTIVIDADES (BETA)
Diagrama de Actividades (beta)
La actual sintaxis para los diagramas de actividades tiene varias limitaciones e inconvenientes (por
ejemplo, es difícil de mantener).
Entonces, una implementación y sintaxis nueva propuesta como versión beta , es ofrecida a los
usuarios (empezando con V7947), sólo así podremos definir un mejor formato y sintaxis.
Otra ventaja de esta nueva implementación es que acaba con la necesidad de tener Graphviz instalado (como en los diagramas de secuencia).
La nueva sintaxis reemplazará la anterior. Sin embargo, por razones de compatibilidad, la sintaxis
vieja seguirá siendo reconocida, para asegurarse la retrocompatibilidad .
Los usuarios están siendo motivados para migrarse a la nueva sintaxis.
5.1
Una Actividad simple
Las etiquetas de las actividades inician con un dos puntos (:) y terminan con un punto y coma (;).
Se puede aplicar formato a un texto usando sintaxis de WikiCreole.
Están implícitamente enlazados en el orden de su definición.
@startuml
:Hello world;
:This is on defined on
several ** lines **;
@enduml
5.2
Start/Stop
Puedes usar las palabras reservadas start y stop para denotar el comienzo y el final del diagrama.
@startuml
start
:Hello world;
:This is on defined on
several ** lines **;
stop
@enduml
También puedes usar la palabra reservada end.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
61 of 118
5.3 Condicionales
5
DIAGRAMA DE ACTIVIDADES (BETA)
@startuml
start
:Hello world;
:This is on defined on
several ** lines **;
end
@enduml
5.3
Condicionales
Puedes usar las palabras reservadas if, then y else para colocar condiciones en tus diagramas.
Las etiquetas pueden ser proporcionadas usando paréntesis.
@startuml
start
if (Graphviz installed ?) then (yes)
:process all\ndiagrams;
else (no)
:process only
__sequence__ and __activity__ diagrams;
endif
stop
@enduml
Puedes usar la palabra reservada elseif para tener varias condiciones :
@startuml
start
if (condition A) then (yes)
:Text 1;
elseif (condition B) then (yes)
:Text 2;
stop
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
62 of 118
5.4 El ciclo Repeat
5
DIAGRAMA DE ACTIVIDADES (BETA)
elseif (condition C) then (yes)
:Text 3;
elseif (condition D) then (yes)
:Text 4;
else (nothing)
:Text else;
endif
stop
@enduml
5.4
El ciclo Repeat
Puedes usar las palabras reservadas repeat y repeatwhile para colocar bucles.
@startuml
start
repeat
:read data;
:generate diagrams;
repeat while (more data ?)
stop
@enduml
5.5
El ciclo While
Puedes usar las palabras reservadas while y end while para un ciclo repetitivo.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
63 of 118
5.6 Procesamiento paralelo
5
DIAGRAMA DE ACTIVIDADES (BETA)
@startuml
start
while (data available ?)
:read data;
:generate diagrams;
endwhile
stop
@enduml
Es posible proporcionar una etiqueta después de la palabra reservada endwhile, o usar la palabra
reservada is .
@startuml
while (check filesize ?) is (not empty)
:read file;
endwhile (empty)
:close file;
@enduml
5.6
Procesamiento paralelo
Puedes usar las palabras reservadas fork, fork again y end fork para denotar procesamientos
paralelos.
@startuml
start
if (multiprocessor ?) then (yes)
fork
:Treatment 1;
fork again
:Treatment 2;
end fork
else (monoproc)
:Treatment 1;
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
64 of 118
5.7 Notas
5
DIAGRAMA DE ACTIVIDADES (BETA)
:Treatment 2;
endif
@enduml
5.7
Notas
Se puede aplicar formato a un texto usando sintaxis de WikiCreole.
@startuml
start
:foo1;
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
Título y leyenda
Puedes añadir título, encabezado, pie de página y leyenda a un diagrama:
@startuml
title this is my title
if (condition ?) then (yes)
:yes;
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
65 of 118
5.9 Colores
5
DIAGRAMA DE ACTIVIDADES (BETA)
else (no)
:no;
note right
this is a note
end note
endif
stop
legend
this is the legend
endlegend
footer dummy footer
header
this is
a long __dummy__ header
end header
@enduml
5.9
Colores
Puedes especificar colores en algunas actividades.
@startuml
start
:starting progress;
#HotPink:reading configuration files
These files should edited at this point !;
#AAAAAA:ending of the process;
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
66 of 118
5.10 Flechas
5
DIAGRAMA DE ACTIVIDADES (BETA)
5.10 Flechas
Usando la notación ->, puedes añadir texto a una flecha y cambiar su color.
@startuml
:foo1;
-> You can put text on arrows;
if (test) then
-[#blue]->
:foo2;
-[#green]-> The text can
also be on several lines
and ** very ** long ...;
:foo3;
else
-[#black]->
:foo4;
endif
-[#gray]->
:foo5;
@enduml
5.11 Agrupación
Puedes agrupar actividades definiendo particiones:
@startuml
start
partition Initialization {
:read config file;
:init internal variable;
}
partition Running {
:wait for user interaction;
:print information;
}
stop
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
67 of 118
5.12 Carriles
5
DIAGRAMA DE ACTIVIDADES (BETA)
5.12 Carriles
Usando la tecla pipe |, puedes definir carriles.
También es posible cambiar el color de los carriles.
@startuml
|Swimlane1|
start
:foo1;
|# AntiqueWhite|Swimlane2|
:foo2;
:foo3;
|Swimlane1|
:foo4;
|Swimlane2|
:foo5;
stop
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
68 of 118
5.13 Desacoplar y remover
5
DIAGRAMA DE ACTIVIDADES (BETA)
5.13 Desacoplar y remover
Es posible remover una flecha usando la palabra reservada detach .
@startuml
:start;
fork
:foo1;
:foo2;
fork again
:foo3;
detach
endfork
if (foo4) then
:foo5;
detach
endif
:foo6;
detach
:foo7;
stop
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
69 of 118
5.14 Otras formas de representación de actividades
5
DIAGRAMA DE ACTIVIDADES (BETA)
5.14 Otras formas de representación de actividades
Cambiando el sepador final, ; , puedes configurar diferentes representaciones para una actividad:
• |
• <
• >
• /
• ]
• }
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
70 of 118
5.15 Un ejemplo completo
5
DIAGRAMA DE ACTIVIDADES (BETA)
5.15 Un ejemplo completo
@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 ();
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
71 of 118
5.15 Un ejemplo completo
5
DIAGRAMA DE ACTIVIDADES (BETA)
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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
72 of 118
6 DIAGRAMA DE COMPONENTES
6
6.1
Diagrama de Componentes
Componentes
Los componentes deberían ser encerrados entre llaves ””.
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
6.2
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
6.3
Ejemplos basicos
Los links entre los elementos son hechos usando la combinación de símbolos de linea de puntos (..),
linea recta (--), y flechas (-->)
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
73 of 118
6.4 Usando notas
6 DIAGRAMA DE COMPONENTES
@startuml
DataAccess - [First Component]
[First Component] ..> HTTP : use
@enduml
6.4
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
6.5
Agrupando componentes
Puedes usar varias palabras reservadas para agrupar componentes e interfaces juntos:
• package
• node
• folder
• frame
• cloud
• database
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
74 of 118
6.5 Agrupando componentes
6 DIAGRAMA DE COMPONENTES
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
75 of 118
6.6 Cambiando la dirección de las flechas
6.6
6 DIAGRAMA DE COMPONENTES
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]
[Component]
[Component]
[Component]
@enduml
-left -> left
-right -> right
-up -> up
-down -> down
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.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
76 of 118
6.7 Titula el diagrama
6.7
6 DIAGRAMA DE COMPONENTES
Titula el diagrama
La palabra reservada title es usada para poner el titulo.
Puedes usar las palabras reservadas title y end title para un titulo más largo, como se en
diagramas de secuencia.
@startuml
title Very simple component\ndiagram
interface "Data Access" as DA
DA - [First Component]
[First Component] ..> HTTP : use
@enduml
6.8
Utiliza la notación UML2
El comando skinparam componentStyle uml2 es usado para cambiar hacia la notación UML2.
@startuml
skinparam componentStyle uml2
interface "Data Access" as DA
DA - [First Component]
[First Component] ..> HTTP : use
@enduml
6.9
Colores individuales
Puedes especificar un color despues de la definición del componente.
@startuml
component
@enduml
[Web Server] #Yellow
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
77 of 118
6.10 Personalización (Skinparam)
6 DIAGRAMA DE COMPONENTES
6.10 Personalización (Skinparam)
Puedes usar el comando skinparam para cambiar colores y fuentes en el diagrama.
Puedes usar este comando:
• En la definición del diagrama, como cualquier otro comando,
• En un archivo incluido,
• En un archivo de configuración, proporcionado en la consola de comandos o en la ANT Task
Puedes definir colores y fuentes específicas para interfaces y componentes estereotipados.
@startuml
skinparam component {
FontSize 13
InterfaceBackgroundColor RosyBrown
InterfaceBorderColor orange
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
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
78 of 118
6.10 Personalización (Skinparam)
6 DIAGRAMA DE COMPONENTES
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
79 of 118
7 DIAGRAMA DE ESTADOS
7
7.1
Diagrama de Estados
Un Estado Simple
Puedes usar [*] para el punto de inicio y finalización del diagrama de estados.
Utilice --> para las flechas.
@startuml
[*] --> State1
State1 --> [*]
State1 : this is a string
State1 : this is another string
State1 -> State2
State2 --> [*]
@enduml
7.2
Estados compuestos
Un estado también puede ser compuesto. Puedes defirnirlo usando la palabra reservada state y
llaves.
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
80 of 118
7.3 Nombres largos
7.3
7 DIAGRAMA DE ESTADOS
Nombres largos
También puedes usar la palabra reservada state para definir largas descripciones en un estado.
@startuml
scale 600 width
[*] -> State1
State1 --> State2 : Succeeded
State1 --> [*] : Aborted
State2 --> State3 : Succeeded
State2 --> [*] : Aborted
state State3 {
state "Accumulate Enough Data\nLong 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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
81 of 118
7.4 Estados simultáneos
7.4
7 DIAGRAMA DE ESTADOS
Estados simultáneos
Puedes definir estados simultáneos dentro de un estado compuesto usando los símbolos -- or ||
como separadores.
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
82 of 118
7.5 Dirección de la flecha
7.5
7 DIAGRAMA DE ESTADOS
Dirección de la flecha
Puedes usar -> para flechas horizontales. Es posible forzar la dirección de las flechas usando la
siguiente sintaxis:
• -down-> (default arrow)
• -right-> or ->
• -left->
• -up->
@startuml
[*] -up -> First
First -right -> Second
Second --> Third
Third -left -> Last
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
83 of 118
7.6 Notas
7 DIAGRAMA DE ESTADOS
Puedes acortar un flecha usando sólamente el primer carácter del nombre de la dirección (por
ejemplo, -d- en lugar de -down-) o los dos primeros caracteres (-do-).
Por favor tenga en cuenta que no debería de esta funcionalidad : Graphviz usualmente devuelve
buenos resultados sin necesidad de configuración.
7.6
Notas
También puedes definir notas usando las palabras reservadas note left of, note right of, note
top of, note bottom of .
También puedes definir notas de varias líneas.
@startuml
[*] --> Active
Active --> Inactive
note left of Active : this is a short\nnote
note right of Inactive
A note can also
be defined on
several lines
end note
@enduml
También puedes tener notas flotantes.
@startuml
state foo
note "This is a floating note" as N1
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
84 of 118
7.7 Más sobre notas
7.7
7 DIAGRAMA DE ESTADOS
Más sobre notas
Puedes colocar notas a estados compuestos.
@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
Personalización (Skinparam)
Puedes usar el comando skinparam para cambiar los colores y fuentes de un diagrama.
Puedes usar este comando :
• En la definición del diagrama, como cualquier otro comando,
• En un archivo incluido,
• En un archivo de configuración, proporcionado en la consola de comandos o en el ANT task.
Puedes definir colores y fuentes específicas para estados estereotipados.
@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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
85 of 118
7.8 Personalización (Skinparam)
7 DIAGRAMA DE ESTADOS
state "Idle mode" as Idle <<Warning >>
state "Configuring mode" as Configuring
[*] --> Idle
Idle --> Configuring : EvConfig
Configuring --> Idle : EvConfig
}
NotShooting --> [*]
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
86 of 118
8 DIAGRAMA DE OBJETOS
8
8.1
Diagrama de Objetos
Definición de objetos
Puedes definir instancias de objetos usando la palabra reservada object.
@startuml
object firstObject
object "My Second Object" as o2
@enduml
8.2
Relaciones entre objetos
Las relaciones entre objetos son definidas usando los siguientes símbolos:
Extensión
Composición
Agregación
<|-*-o--
Es posible reemplazar -- con .. para obtener una línea de puntos.
Sabiendo estas reglas, es posible dibujar los siguientes diagramas.
Es posible agregar una etiqueta sobre una relación usando ”:”, seguido del texto de la etiqueta.
Para la cardinalidad puedes usar doble comillas "" en cada lado de la relación.
@startuml
object Object01
object Object02
object Object03
object Object04
object Object05
object Object06
object Object07
object Object08
Object01
Object03
Object05
Object07
@enduml
8.3
<|-- Object02
*-- Object04
o-- "4" Object06
.. Object08 : some labels
Agregando campos
Para declarar campos, puedes usar el símbolo ":" seguido del nombre del campo.
@startuml
object user
user : name = "Dummy"
user : id = 123
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
87 of 118
8.4 Características comunes en diagramas de clases
8 DIAGRAMA DE OBJETOS
También es posible declarar entre llaves {} todos los campos.
@startuml
object user {
name = "Dummy"
id = 123
}
@enduml
8.4
Características comunes en diagramas de clases
• Visibilidad
• Definición de notas
• Uso de paquetes
• Titular los diagramas
• Personalización de la salida (skinparam)
• División de la imágen
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
88 of 118
9 COMANDOS COMUNES
9
Comandos comunes
9.1
Encabezado y pie de página
Puedes usar los comandos header o footer para añadir un encabezado o pie de página en cualquier
diagrama generado.
Puedes opcionalmente especificar si quieres un encabezado o pie de página centrado, a la izquierda
o a la derecha especificando las palabras clave center, left o right, respectivamente.
Para el título, es posible definir un encabezao o pie de página en varias líneas.
También es posible introducir algo de HTML en un encabezado o pie de página.
@startuml
Alice -> Bob: Authentication Request
header
<font color=red >Warning :</font >
Do not use in production.
endheader
center footer Generated for demonstration
@enduml
9.2
Zoom (acercamiento)
Puedes usar el comando scale para hacer zoom a la imágen generada.
Puedes usar tanto un número como una fracción para definir el factor escalar. Puedes también
especificar tanto el ancho como el alto (en pixeles). Y también puedes especificar el ancho y altura
en un mismo comando : la imágen es adaptada para cumplir con las dimensionaes especificadas.
• scale 1.5
• scale 2/3
• scale 200 width
• scale 200 height
• scale 200*100
• scale max 300*200
@startuml
scale 180*90
Bob ->Alice : hello
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
89 of 118
10
10
SALT
Salt
Salt is a subproject included in PlantUML that may help you to design graphical interface.
You can use either @startsalt keyword, or @startuml followed by a line with salt keyword.
10.1
Basic widgets
A window must start and end with brackets. You can then define:
•
•
•
•
Button using [ and ].
Radio button using ( and ).
Checkbox using [ and ].
User text area using ".
@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
The goal of this tool is to discuss about simple and sample windows.
10.2
Using grid
A table is automatically created when you use an opening bracket {.
And you have to use | to separate columns.
For example:
@startsalt
{
Login
| "MyName
"
Password | "****
"
[Cancel] | [ OK
]
}
@endsalt
Just after the opening bracket, you can use a character to define if you want to draw lines or columns
of the grid :
# To display all vertical and horizontal lines
! To display all vertical lines
- To display all horizontal lines
+ To display external lines
@startsalt
{+
Login
| "MyName
"
Password | "****
"
[Cancel] | [ OK
]
}
@endsalt
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
90 of 118
10.3 Using separator
10.3
10
SALT
Using separator
You can use several horizontal lines as separator.
@startsalt
{
Text1
..
"Some field"
==
Note on usage
~~
Another text
-[Ok]
}
@endsalt
10.4
Tree widget
To have a Tree, you have to start with {T and to use + to denote hierarchy.
@startsalt
{
{T
+ World
++ America
+++ Canada
+++ USA
++++ New York
++++ Boston
+++ Mexico
++ Europe
+++ Italy
+++ Germany
++++ Berlin
++ Africa
}
}
@endsalt
10.5
Enclosing brackets
You can define subelements by opening a new opening bracket.
@startsalt
{
Name
| "
"
Modifiers:
| { (X) public | () default | () private | () protected
[] abstract | [] final
| [] static }
Superclass: | { "java.lang.Object " | [Browse ...] }
}
@endsalt
10.6
Adding tabs
You can add tabs using {/ notation. Note that you can use HTML code to have bold text.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
91 of 118
10.7 Using menu
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
Tab could also be vertically oriented:
@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
Using menu
You can add a menu by using {* 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
It is also possible to open a 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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
92 of 118
10.8 Advanced table
10.8
10
SALT
Advanced table
You can use two special notations for table :
• * to indicate that a cell with span with left
• . to denotate an empty cell
@startsalt
{#
. | Column 2 | Column 3
Row header 1 | value 1 | value 2
Row header 2 | A long cell | *
}
@endsalt
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
93 of 118
11
11
CREOLE
Creole
A light Creole engine have been integrated into PlantUML to have a standardized way of defining
text style.
All diagrams are now supporting this syntax.
(Note that ascending compatibility with HTML syntax is preserved)
11.1
Emphasized text
@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
List
@startuml
object demo {
* Bullet list
* Second item
** Sub item
}
legend
# Numbered list
# Second item
## Sub item
## Another sub item
# Third item
end legend
@enduml
11.3
Escape character
You can use the tilde ~ to escape special creole characters.
@startuml
object demo {
This is not ~___underscored__.
This is not ~"" monospaced "".
}
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
94 of 118
11.4 Horizontal lines
11.4
11
CREOLE
Horizontal lines
@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
Headings
@startuml
usecase UC1 as "
= Extra -large heading
Some text
== Large heading
Other text
=== Medium heading
Information
....
==== Small heading"
@enduml
11.6
Legacy HTML
Some HTML tags are also working:
• <b> for bold text
• <u> or <u:#AAAAAA> or <u:colorName> for underline
• <i> for italic
• <s> or <s:#AAAAAA> or <s:colorName> for strike text
• <w> or <w:#AAAAAA> or <w:colorName> for wave underline text
• <color:#AAAAAA> or <color:colorName>
• <back:#AAAAAA> or <back:colorName> for background color
• <size:nn> to change font size
• <img:file> : the file must be accessible by the filesystem
• <img:http://url> : the URL must be available from the 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>
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
95 of 118
11.7 Table
11
CREOLE
---* Use image : <img:sourceforge.jpg >
;
@enduml
11.7
Table
@startuml
skinparam titleFontSize 14
title
Example of simple table
|= |= table |= header |
| a | table | row |
| b | table | row |
end title
[*] --> State1
@enduml
11.8
Tree
You can use |_ characters to build a tree.
@startuml
skinparam titleFontSize 14
title
Example of Tree
|_ First line
|_ **Bom(Model )**
|_ prop1
|_ prop2
|_ prop3
|_ Last line
end title
[*] --> State1
@enduml
11.9
Special characters
It’s possible to use any unicode characters with &# syntax or <U+XXXX>
@startuml
usecase foo as "this is &#8734; long"
usecase bar as "this is also <U+221E> long"
@enduml
11.10
OpenIconic
OpenIconic is an very nice open source icon set. Those icons have been integrated into the creole
parser, so you can use them out-of-the-box.
You can use the following syntax: <&ICON_NAME>.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
96 of 118
11.10 OpenIconic
11
CREOLE
@startuml
title: <size :20><&heart >Use of OpenIconic <&heart ></size >
class Wifi
note left
Click on <&wifi >
end note
@enduml
The complete list is available on OpenIconic Website, or you can use the following special diagram:
@startuml
listopeniconic
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
97 of 118
11.11 Definiendo y usando sprites
11.11
11
CREOLE
Definiendo y usando sprites
Un Sprite es un pequeño elemento gráfico que puede ser usado en diagramas.
En PlantUML, los sprites son monocromos y pueden tener 4, 8 o 16 niveles de grises.
Para definir un sprite, tienes que usar noteación hexadecimal entre el 0 y la letra F, por cada píxel.
Entonces puedes usar los sprites con la etiqueta <$XXX> donde XXX es el nombre del sprite.
@startuml
sprite $foo1 {
FFFFFFFFFFFFFFF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
F0123456789ABCF
FFFFFFFFFFFFFFF
}
Alice -> Bob : Testing <$foo1 >
@enduml
11.12
Encoding Sprite
To encode sprite, you can use the command line like:
java -jar plantuml.jar -encodesprite 16z foo.png
where foo.png if the image file you want to use (it will be converted to gray automatically).
After -encodesprite, you have to specify a format: 4, 8, 16, 4z, 8z or 16z.
The number indicates the gray level and the optionnal z is used to enable compression in sprite
definition.
11.13
Importing Sprite
You can also launch the GUI to generate a sprite from an existing image.
Click in the menubar then on File/Open Sprite Window.
After copying an image into you clipboard, several possible definitions of the corresponding sprite
will be displayed : you will just have to pickup the one you want.
11.14
Ejemplos
@startuml
sprite $printer [15 x15/8z] NOtH3W0W208HxFz_kMAhj7lHWpa1XC716sz0Pq4MVPEWfBHIuxP3L6kbTcizR8tAhzaqFvXwvFfPEq
start
:click on <$printer > to print the page;
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
98 of 118
11.14 Ejemplos
11
CREOLE
@startuml
sprite $bug [15 x15 /16z] PKzR2i0m2BFMi15p__FEjQEqB1z27aeqCqixa8S4OT7C53cKpsHpaYPDJY_12MHM - BLRyywPhrrlw3qum
sprite $printer [15 x15/8z] NOtH3W0W208HxFz_kMAhj7lHWpa1XC716sz0Pq4MVPEWfBHIuxP3L6kbTcizR8tAhzaqFvXwvFfPEq
sprite $disk {
444445566677881
436000000009991
43600000000 ACA1
53700000001 A7A1
53700000012 B8A1
53800000123 B8A1
63800001233 C9A1
634999 AABBC99B1
744566778899 AB1
7456 AAAAA99AAB1
8566 AFC228AABB1
8567 AC8118BBBB1
867 BD4433BBBBB1
39 AAAAABBBBBBC1
}
title Use of sprites (<$printer >, <$bug >...)
class Example {
Can have some bug : <$bug >
Click on <$disk > to save
}
note left : The printer <$printer > is available
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
99 of 118
12 CAMBIAR FUENTES Y COLORES
12
12.1
Cambiar fuentes y colores
Uso
Puesdes cambiar los colores y fuentes de un diagrama usando el comando skinparam. Ejemplo:
skinparam backgroundColor yellow
Puedes usar este comando:
• En la definición del diagrama, como cualquier otro comando,
• En un archivo incluido (vea Preprocesamiento),
• En un archivo de configuración, proporcionado en la consola de comandos o en el ANT task.
12.2
Anidado
Para evitar repeticiones, es posible anidar definiciones. Entonces, la siguiente definición:
skinparam
skinparam
skinparam
skinparam
xxxxParam1
xxxxParam2
xxxxParam3
xxxxParam4
value1
value2
value3
value4
es estrictamente equivalente a:
skinparam xxxx {
Param1 value1
Param2 value2
Param3 value3
Param4 value4
}
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
100 of 118
12.3 Color
12.3
12 CAMBIAR FUENTES Y COLORES
Color
Puedes usar, tanto el nombre del color, como el código RGB.
Nombre del parámetro
backgroundColor
activityArrowColor
activityBackgroundColor
activityBorderColor
activityStartColor
activityEndColor
activityBarColor
usecaseArrowColor
usecaseActorBackgroundColor
usecaseActorBorderColor
usecaseBackgroundColor
usecaseBorderColor
classArrowColor
classBackgroundColor
classBorderColor
packageBackgroundColor
packageBorderColor
stereotypeCBackgroundColor
stereotypeABackgroundColor
stereotypeIBackgroundColor
stereotypeEBackgroundColor
componentArrowColor
componentBackgroundColor
componentBorderColor
componentInterfaceBackgroundColor
componentInterfaceBorderColor
noteBackgroundColor
noteBorderColor
stateBackgroundColor
stateBorderColor
stateArrowColor
stateStartColor
stateEndColor
sequenceArrowColor
sequenceActorBackgroundColor
sequenceActorBorderColor
sequenceGroupBackgroundColor
sequenceLifeLineBackgroundColor
sequenceLifeLineBorderColor
sequenceParticipantBackgroundColor
sequenceParticipantBorderColor
Defecto
Valor
white
#A80036
#FEFECE
#A80036
Color
Comentario
Fondo de la página
Color de las flechas en diagramas de actividades
Fondo de las actividades
Color de los bordes de la actividad
black
Círculo de comienzo en diagramas de actividades
black
Círculo de finalización en diagramas de actividades
black
Barra de sincronización en diagramas de actividades
#A80036
Color de las flechas en diagramas de casos de uso
#FEFECE
Color de la cabeza del actor en diagramas de casos de us
#A80036
Color de los bordes del actor en diagramas de casos de u
#FEFECE
Fondo de los casos de uso
#A80036
Color de los bordes de un caso de uso en diagramas de c
#A80036
Color de la flechas en diagramas de clases
#FEFECE
Fondo de classes/interface/enum en diagramas de clases
#A80036
Bordes de classes/interface/enum en diagramas de clases
#FEFECE
Fondo de paquetes en diagramas de clases
#A80036
Bordes de paquetes en diagramas de clases
#ADD1B2
Fondo de puntos de una clase en diagramas de clases
#A9DCDF
Fondo de puntos de clases abstractas en diagramas de cl
#B4A7E5
Fondo de puntos de interface en diagramas de clases
#EB937F
Fondo de puntos de enum en diagramas de clases
#A80036
Color de flechas en diagramas de componentes
#FEFECE
Fondo de componentes
#A80036
Bordes de componentes
#FEFECE
Fondo de interface en diagramas de componentes
#A80036
Bordes de interface en diagramas de componentes
#FBFB77
Fondo de notas
#A80036
Bordes de notas
#FEFECE
Fondo de estados en diagramas de estados
#A80036
Bordes de estados en diagramas de estados
#A80036
Color de flechas en diagramas de estados
black
Círculo de comienzo en diagramas de estados
black
Círculo de finalización en diagramas de estados
#A80036
#FEFECE
#A80036
#EEEEEE
Color de flechas en diagramas de secuencia
Color de la cabeza del actor en diagramas de secuencia
Borde del actor en diagramas de secuencia
Color de la cabeza de alt/opt/loop en diagramas de secu
white
Fondo de línea de vida en diagramas de secuencia
#A80036
Borde de línea de vida en diagramas de secuencia
#FEFECE
Fondo de participante en diagramas de secuencia
#A80036
Borde de participante en diagramas de secuencia
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
101 of 118
12.4 Color de fuente, nombre y tamaño
12.4
12 CAMBIAR FUENTES Y COLORES
Color de fuente, nombre y tamaño
Puedes cambiar la fuente para el dibujo usando los parámetros xxxFontColor, xxxFontSize y
xxxFontName.
Ejemplo:
skinparam classFontColor red
skinparam classFontSize 10
skinparam classFontName Aapex
Puedes también cambiar la fuente por defecto para todas las fuentes, usando skinparam defaultFontName.
Ejemplo:
skinparam defaultFontName Aapex
Por favor tenga en cuenta que fontname es altamente dependiente del sistema, por lo tanto no lo
sobre use, si está buscando portabilidad.
Parámetro
Nombre
activityFontColor
activityFontSize
activityFontStyle
activityFontName
activityArrowFontColor
activityArrowFontSize
activityArrowFontStyle
activityArrowFontName
circledCharacterFontColor
circledCharacterFontSize
circledCharacterFontStyle
circledCharacterFontName
circledCharacterRadius
classArrowFontColor
classArrowFontSize
classArrowFontStyle
classArrowFontName
classAttributeFontColor
classAttributeFontSize
classAttributeIconSize
classAttributeFontStyle
classAttributeFontName
classFontColor
classFontSize
classFontStyle
classFontName
classStereotypeFontColor
classStereotypeFontSize
classStereotypeFontStyle
classStereotypeFontName
componentFontColor
componentFontSize
componentFontStyle
componentFontName
componentStereotypeFontColor
componentStereotypeFontSize
componentStereotypeFontStyle
componentStereotypeFontName
Defecto
Valor
black
14
plain
black
13
plain
black
17
bold
Courier
11
black
10
plain
black
10
10
plain
black
12
plain
black
12
italic
black
14
plain
black
14
italic
Comentario
Usado para caja de actividad
Usado para texto en las flechas de los diagramas de actividades
Usado para texto en círculo para class, enum u otros
Usado para texto en las flechas de los diagramas de clases
Atributos y métodos de clase
Usado para nombres de clases
Usado para estereotipos de clases
Usado para nombres de componentes
Usado para estereotipos de componentes
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
102 of 118
12.4 Color de fuente, nombre y tamaño
componentArrowFontColor
componentArrowFontSize
componentArrowFontStyle
componentArrowFontName
noteFontColor
noteFontSize
noteFontStyle
noteFontName
packageFontColor
packageFontSize
packageFontStyle
packageFontName
sequenceActorFontColor
sequenceActorFontSize
sequenceActorFontStyle
sequenceActorFontName
sequenceDividerFontColor
sequenceDividerFontSize
sequenceDividerFontStyle
sequenceDividerFontName
sequenceArrowFontColor
sequenceArrowFontSize
sequenceArrowFontStyle
sequenceArrowFontName
sequenceGroupingFontColor
sequenceGroupingFontSize
sequenceGroupingFontStyle
sequenceGroupingFontName
sequenceGroupingHeaderFontColor
sequenceGroupingHeaderFontSize
sequenceGroupingHeaderFontStyle
sequenceGroupingHeaderFontName
sequenceParticipantFontColor
sequenceParticipantFontSize
sequenceParticipantFontStyle
sequenceParticipantFontName
sequenceTitleFontColor
sequenceTitleFontSize
sequenceTitleFontStyle
sequenceTitleFontName
titleFontColor
titleFontSize
titleFontStyle
titleFontName
stateFontColor
stateFontSize
stateFontStyle
stateFontName
stateArrowFontColor
stateArrowFontSize
stateArrowFontStyle
stateArrowFontName
stateAttributeFontColor
stateAttributeFontSize
stateAttributeFontStyle
stateAttributeFontName
12 CAMBIAR FUENTES Y COLORES
black
13
plain
black
13
plain
black
14
plain
black
13
plain
black
13
bold
black
13
plain
black
11
plain
black
13
plain
black
13
plain
black
13
plain
black
18
plain
black
14
plain
black
13
plain
black
12
plain
Usado para texto en las flechas de los diagramas de componentes
Usado para notas en todos los diagramas excepto diagramas de secu
Usado para nombres de paquetes y particiones
Usado para actores en diagramas de secuencia
Usado para texto en divisores en diagramas de secuencia
Usado para texto en las flechas de los diagramas de secuencia
Usado para texto del ”else” en diagramas de secuencia
Usado para texto de encabezados ”alt/opt/loop” en diagramas de s
Usado para texto del participante en diagramas de secuencia
Usado para títulos en diagramas de secuencia
Usado para títulos en todos los diagramas excepeto diagramas de se
Usado para estados en diagramas de estados
Usado para texto en las flechas de los diagramas de estados
Usado para descripciones de estados en diagramas de estados
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
103 of 118
12.4 Color de fuente, nombre y tamaño
usecaseFontColor
usecaseFontSize
usecaseFontStyle
usecaseFontName
usecaseStereotypeFontColor
usecaseStereotypeFontSize
usecaseStereotypeFontStyle
usecaseStereotypeFontName
usecaseActorFontColor
usecaseActorFontSize
usecaseActorFontStyle
usecaseActorFontName
usecaseActorStereotypeFontColor
usecaseActorStereotypeFontSize
usecaseActorStereotypeFontStyle
usecaseActorStereotypeFontName
usecaseArrowFontColor
usecaseArrowFontSize
usecaseArrowFontStyle
usecaseArrowFontName
footerFontColor
footerFontSize
footerFontStyle
footerFontName
headerFontColor
headerFontSize
headerFontStyle
headerFontName
12 CAMBIAR FUENTES Y COLORES
black
14
plain
black
14
italic
black
14
plain
black
14
italic
black
13
plain
black
10
plain
black
10
plain
Usado para etiquetas de casos de uso en diagramas de casos de uso
Usado para estereotipo en un caso de uso
Usado para etiquetas de actores en diagramas de casos de uso
Usado para estereotipo de actor
Usado para texto en las flechas de los diagramas de casos de uso
Usado para pie de página
Usado para encabezado
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
104 of 118
12.5 Blanco y negro
12.5
12 CAMBIAR FUENTES Y COLORES
Blanco y negro
Puedes forzar el uso de salida en blanco y negro usando el comando 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 : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
105 of 118
13
13
PREPROCESAMIENTO
Preprocesamiento
Algunos capacidades de preprocesamiento menores son incluídas PlantUML, y disponibles para
todos los diagramas.
Aquellas funcionalidades son bastante similares al preprocesador del lenguaje C, excepto que el
carácter especial (#) ha sido cambiado por el signo de exclamación (!).
13.1
Incluyendo archivos
Use la directiva !include para incluir archivos en su diagrama.
Imagine que tiene la misma clase que aparece en varios diagramas. En lugar de duplicar la descripción de esa clase, puede definir un archivo que contenga esa descripción.
@startuml
!include List.iuml
List <|.. ArrayList
@enduml
File List.iuml: interface List List : int size() List : void clear()
El archivo List.iuml puede ser incluido en muchos diagramas, y cualquier modificación en ese
archivo repercutirá en todos los diagramas que lo incluyan.
Puedes también colocar varios bloques de texto @startuml/@enduml en un archivo incluido y luego
especificar que bloque quieres incluir, añadiendo !0 donde 0 es el número del bloque.
Por ejemplo, si usas !include foo.txt!1, el segundo bloque @startuml/@enduml dentro de
foo.txt, será incluido.
13.2
Incluyendo URL
Use la directiva !includeurl para incluir archivos de Internet/Intranet en su diagrama.
También puede usar !includeurl http://someurl.com/mypath!0 para especificar que bloque
@startuml/@enduml de http://someurl.com/mypath quiere incluir. La notación !0 denota el
primer diagrama.
13.3
Definición de constante
Puede definir una constante usando la directiva !define. Así como en el lenguaje C, un nombre de
constante puede únicamente usar caracteres alfanuméricos y de subrayado, y no puede comenzar
con un dígito.
@startuml
!define SEQUENCE (S,# AAAAAA) Database Sequence
!define TABLE (T,# FFAAAA) Database Table
class USER << TABLE >>
class ACCOUNT << TABLE >>
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
106 of 118
13.4 Definición de Macro
13
PREPROCESAMIENTO
class UID << SEQUENCE >>
USER "1" -- "*" ACCOUNT
USER -> UID
@enduml
Por supuesto, puedes usar la directiva !include para definir todas las constantes en un solo archivo,
e incluirlo en tu diagrama.
Una constante puede darse de baja con la directiva !undef XXX.
También puedes especificar constantes en la línea de comandos con las banderas -D.
java -jar plantuml.jar -DTITLE ="My title" atest1.txt
Tenga en cuenta que la bandera -D debe colocarse después de la sección ”-jar plantuml.jar”.
13.4
Definición de Macro
También puedes definir macros con argumentos.
@startuml
!define module(x) component x <<module >>
module(ABC)
module(XYZ)
@enduml
Una macro puede tenes varios argumentos.
@startuml
!define send(a,b,c) a->b : c
send(Alice , Bob , Hello)
send(Bob , Alice , ok)
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
107 of 118
13.5 Macro en varias líneas
13.5
13
PREPROCESAMIENTO
Macro en varias líneas
También puedes definir una macro en varias líneas usando !definelong y !enddefinelong.
@startuml
!define DOUBLE(x) x x
!definelong AUTHEN(x,y)
x -> y : DOUBLE(hello)
y -> x : ok
!enddefinelong
AUTHEN(Bob ,Alice)
@enduml
13.6
Condiciones
Puedes usar las directivas !ifdef XXX y !endif para tener dibujos condicionales.
Las líneas entre aquellas dos directivas, serán incluidas únicamente si la constante después la directiva !ifdef, ha sido previamente definida.
También puedes establecer la parte !else, que será incluida si la constante no fue definida.
@startuml
!include ArrayList.iuml
@enduml
File ArrayList.iuml:
class ArrayList
!ifdef SHOW_METHODS
ArrayList : int size ()
ArrayList : void clear ()
!endif
Puedes también usar la directiva !define para activar la parte condicional del diagrama.
@startuml
!define SHOW_METHODS
!include ArrayList.iuml
@enduml
También puedes usar la directiva !ifndef que incluye líneas si la constante provista, NO fue
definida.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
108 of 118
13.7 Ruta de búsqueda
13.7
13
PREPROCESAMIENTO
Ruta de búsqueda
Puedes especificar la propiedad java ”plantuml.include.path” en la línea de comandos.
Por ejemplo:
java -Dplantuml.include.path ="c:/ mydir" -jar plantuml.jar atest1.txt
Tenga en cuenta que la opción -D debe ser puesta antes de la opción -jar. Las opciones -D después
de la opción -jar será usada para definir constantes dentro del preprocesador de plantuml.
13.8
Características avanzadas
Es posible anexar texto al argumento de una macro usando la sintáxis ##.
@startuml
!definelong COMP_TEXTGENCOMP(name)
[name] << Comp >>
interface Ifc << IfcType >> AS name ##Ifc
name ##Ifc - [name]
!enddefinelong
COMP_TEXTGENCOMP(dummy)
@enduml
Una macro puede ser definida por otra macro.
@startuml
!define DOUBLE(x) x x
!definelong AUTHEN(x,y)
x -> y : DOUBLE(hello)
y -> x : ok
!enddefinelong
AUTHEN(Bob ,Alice)
@enduml
Una macro puede ser polimórfica con el contador de argumentos.
@startuml
!define module(x) component x <<module >>
!define module(x,y) component x as y <<module >>
module(foo)
module(bar , barcode)
@enduml
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
109 of 118
13.8 Características avanzadas
13
PREPROCESAMIENTO
Puedes usar una variable de entorno de sistema o definición de constante cuando usas ”include”:
!include %windir %/ test1.txt
!define PLANTUML_HOME /home/foo
!include PLANTUML_HOME/test1.txt
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
110 of 118
14
14
INTERNACIONALIZACIÓN
Internacionalización
El lenguaje de PlantUML usa letras para definir actores, casos de uso y demás. Pero letras no son
únicamente caracteres latinos A-Z, podría ser cualquier tipo de letra de cualquier lenguaje.
@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
Codificación de caracteres (Charset)
La codificación de caracteres usada cuando se lee los archivos de texto que contienen el texto
descriptivo UML, dependiente del sistema. Normalmente, debería estar bien, pero en algunos casos,
quizás quieras usar alguna otra codificación de caracteres. Por ejemplo, con la lína de comandos:
java -jar plantuml.jar -charset UTF -8 files.txt
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
111 of 118
14.1 Codificación de caracteres (Charset)
14
INTERNACIONALIZACIÓN
O, con el ANT task:
<target name =" main">
<plantuml dir ="./ src" charset ="UTF -8" />
</target >
Dependiendo de tu instalación de Java, la siguiente codificación de caracteres debería estar disponible:
ISO-8859-1, UTF-8, UTF-16BE, UTF-16LE, UTF-16.
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
112 of 118
15 NOMBRES DE COLORES
15
Nombres de colores
Esta es la lista de los colores reconocidos por PlantUML. Los nombres son sensibles a mayúsculas
y minúsculas.
AliceBlue
AntiqueWhite
Aquamarine
Aqua
Azure
Beige
Bisque
Black
BlanchedAlmond
BlueViolet
Blue
Brown
BurlyWood
CadetBlue
Chartreuse
Chocolate
Coral
CornflowerBlue
Cornsilk
Crimson
Cyan
DarkBlue
DarkCyan
DarkGoldenRod
DarkGray
DarkGreen
DarkKhaki
DarkMagenta
DarkOliveGreen
DarkOrchid
DarkRed
DarkSalmon
DarkSeaGreen
DarkSlateBlue
DarkSlateGray
DarkTurquoise
DarkViolet
Darkorange
DeepPink
DeepSkyBlue
DimGray
DodgerBlue
FireBrick
FloralWhite
ForestGreen
Fuchsia
Gainsboro
GhostWhite
GoldenRod
Gold
Gray
GreenYellow
Green
HoneyDew
HotPink
IndianRed
Indigo
Ivory
Khaki
LavenderBlush
Lavender
LawnGreen
LemonChiffon
LightBlue
LightCoral
LightCyan
LightGoldenRodYellow
LightGreen
LightGrey
LightPink
LightSalmon
LightSeaGreen
LightSkyBlue
LightSlateGray
LightSteelBlue
LightYellow
LimeGreen
Lime
Linen
Magenta
Maroon
MediumAquaMarine
MediumBlue
MediumOrchid
MediumPurple
MediumSeaGreen
MediumSlateBlue
MediumSpringGreen
MediumTurquoise
MediumVioletRed
MidnightBlue
MintCream
MistyRose
Moccasin
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
NavajoWhite
Navy
OldLace
OliveDrab
Olive
OrangeRed
Orange
Orchid
PaleGoldenRod
PaleGreen
PaleTurquoise
PaleVioletRed
PapayaWhip
PeachPuff
Peru
Pink
Plum
PowderBlue
Purple
Red
RosyBrown
RoyalBlue
SaddleBrown
Salmon
SandyBrown
SeaGreen
SeaShell
Sienna
Silver
SkyBlue
SlateBlue
SlateGray
Snow
SpringGreen
SteelBlue
Tan
Teal
Thistle
Tomato
Turquoise
Violet
Wheat
WhiteSmoke
White
YellowGreen
Yellow
113 of 118
CONTENTS
CONTENTS
Contents
1 Diagrama de Secuencia
1
1.1
Ejemplo básico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Comentarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.3
Declarando participantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.4
Sin usar letras en participantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.5
Auto-Mensaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.6
Cambiar estilo de la flecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
1.7
Cambiar el color de la flecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.8
Numeración de la secuencia de mensajes . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.9
Título . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.10 Leyenda del diagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.11 Dividiendo diagramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.12 Agrupando mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.13 Notas en mensajes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
1.14 Algunas otras notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.15 Cambiando el aspecto de las notas . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
1.16 Creole y HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
1.17 Divisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
1.18 Referencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.19 Retardo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
1.20 Espaciado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.21 Activación y Destrucción de la Línea de vida . . . . . . . . . . . . . . . . . . . . . .
13
1.22 Creación de participante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
1.23 Mensajes entrantes y salientes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
1.24 Estereotipos y marcas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
1.25 Mayor información en los títulos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
1.26 Entorno de participante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
1.27 Removiendo pie de página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
1.28 Personalización (Skinparam) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2 Diagrama de Casos de Uso
21
2.1
Casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.2
Actores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.3
Descripción de Casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.4
Ejemplo básico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.5
Extensión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.6
Usando notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.7
Estereotipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.8
Cambiar dirección a las flechas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.9
Casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.10 Dividiendo los diagramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.11 Dirección: de izquierda a derecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
2.12 Personalización (Skinparam) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
2.13 Un ejemplo completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
114 of 118
CONTENTS
CONTENTS
3 Diagrama de Clases
29
3.1
Relación entre clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.2
Etiquetas en las relaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.3
Añadiendo métodos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.4
Definiendo la visibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.5
Abstracto y Estático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
3.6
Cuerpo avanzado de las clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34
3.7
Notas y estereotipos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
3.8
Más acerca de notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
3.9
Notas en enlaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
3.10 Clases abstractas e interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
3.11 Sin usar letras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
3.12 Atributos, métodos... ocultos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.13 Clases ocultas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.14 Uso de clases genéricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.15 Círculo enmarcador específico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.16 Paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.17 Estilos de paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
3.18 Espacios de nombre
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.19 Creación automática del espacio de nombre . . . . . . . . . . . . . . . . . . . . . . .
44
3.20 Interface Lollipop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
3.21 Cambiando la dirección de las flechas . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
3.22 Título del diagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
3.23 Leyenda del diagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.24 Asociación de clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.25 Personalización (Skinparam) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
3.26 Estereotipos personalizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
3.27 Degrado de colores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.28 Dividiendo archivos grandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
4 Diagrama de Actividades
51
4.1
Actividades simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
4.2
Etiquetas en las flechas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
4.3
Cambiando la dirección de la flecha . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
4.4
Ramas (bifurcaciones) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
4.5
Más acerca de las Ramas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
4.6
Sincronización . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
4.7
Descripción de actividades de gran contenido . . . . . . . . . . . . . . . . . . . . . .
55
4.8
Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
4.9
Partición
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
4.10 Título del diagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
4.11 Personalización (Skinparam) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
4.12 Octágono . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
4.13 Un ejemplo completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
115 of 118
CONTENTS
CONTENTS
5 Diagrama de Actividades (beta)
61
5.1
Una Actividad simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
5.2
Start/Stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
5.3
Condicionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
5.4
El ciclo Repeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
5.5
El ciclo While . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
5.6
Procesamiento paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
5.7
Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
5.8
Título y leyenda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
5.9
Colores
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
5.10 Flechas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.11 Agrupación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
5.12 Carriles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
5.13 Desacoplar y remover
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
5.14 Otras formas de representación de actividades . . . . . . . . . . . . . . . . . . . . . .
70
5.15 Un ejemplo completo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
6 Diagrama de Componentes
73
6.1
Componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
6.2
Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
6.3
Ejemplos basicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
6.4
Usando notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
6.5
Agrupando componentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
6.6
Cambiando la dirección de las flechas . . . . . . . . . . . . . . . . . . . . . . . . . . .
76
6.7
Titula el diagrama . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
6.8
Utiliza la notación UML2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
6.9
Colores individuales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
6.10 Personalización (Skinparam) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
7 Diagrama de Estados
80
7.1
Un Estado Simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
7.2
Estados compuestos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
7.3
Nombres largos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
7.4
Estados simultáneos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
82
7.5
Dirección de la flecha . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
7.6
Notas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
7.7
Más sobre notas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
7.8
Personalización (Skinparam) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
8 Diagrama de Objetos
87
8.1
Definición de objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
8.2
Relaciones entre objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
8.3
Agregando campos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
87
8.4
Características comunes en diagramas de clases . . . . . . . . . . . . . . . . . . . . .
88
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
116 of 118
CONTENTS
CONTENTS
9 Comandos comunes
89
9.1
Encabezado y pie de página . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
9.2
Zoom (acercamiento) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
10 Salt
90
10.1 Basic widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
10.2 Using grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90
10.3 Using separator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
10.4 Tree widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
10.5 Enclosing brackets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
10.6 Adding tabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
10.7 Using menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92
10.8 Advanced table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
93
11 Creole
94
11.1 Emphasized text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
11.2 List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
11.3 Escape character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
94
11.4 Horizontal lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
11.5 Headings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
11.6 Legacy HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
11.7 Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
11.8 Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
11.9 Special characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
11.10OpenIconic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
96
11.11Definiendo y usando sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
11.12Encoding Sprite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
11.13Importing Sprite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
11.14Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
12 Cambiar fuentes y colores
100
12.1 Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
12.2 Anidado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
12.3 Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
12.4 Color de fuente, nombre y tamaño . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
12.5 Blanco y negro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
13 Preprocesamiento
106
13.1 Incluyendo archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
13.2 Incluyendo URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
13.3 Definición de constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
13.4 Definición de Macro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
13.5 Macro en varias líneas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
13.6 Condiciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
13.7 Ruta de búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
13.8 Características avanzadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
117 of 118
CONTENTS
14 Internacionalización
CONTENTS
111
14.1 Codificación de caracteres (Charset) . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
15 Nombres de colores
PlantUML : Guía de Referencia del Lenguaje (martes 1 de marzo de 2016)
113
118 of 118

Documentos relacionados