PlantUML agiliza la creación de diagramas de secuencia gracias a su sintaxis intuitiva y fácil de usar. Este enfoque permite tanto a los principiantes como a los diseñadores experimentados pasar rápidamente del concepto a un resultado gráfico pulido.
La sintaxis de PlantUML está diseñada para facilitar su uso, garantizando que los usuarios puedan comprender los fundamentos con el mínimo esfuerzo. Esta claridad reduce la curva de aprendizaje y acelera el proceso de creación de diagramas.
- Traducción directa de texto a gráfico:
 
Existe una correlación directa entre la entrada textual y el diagrama resultante. Esta coherencia garantiza que el resultado visual refleje fielmente el borrador inicial, lo que minimiza las discrepancias inesperadas y agiliza el flujo de trabajo.
La estrecha relación entre texto e imagen no sólo simplifica el proceso de diseño, sino que también lo acelera. Al reducir la necesidad de extensas revisiones, los usuarios pueden centrarse en perfeccionar sus diagramas con mayor eficacia.
- Visualización en tiempo real:
 
La posibilidad de visualizar el resultado final mientras se redacta el texto aumenta la productividad. Este bucle de retroalimentación inmediata ayuda a identificar y corregir errores en una fase temprana, garantizando una transición más fluida desde el concepto hasta la finalización.
- Ediciones y revisiones fluidas:
 
La edición es sencilla cuando se trabaja con diagramas basados en texto. Los ajustes pueden realizarse directamente en el texto de origen, eliminando las complejidades y los posibles errores asociados a las herramientas de edición gráfica.
En resumen, PlantUML ofrece un enfoque sólido y eficiente para la creación de diagramas de secuencia. Su énfasis en la simplicidad y la precisión lo convierte en un activo inestimable para cualquiera que busque producir diagramas claros y precisos con facilidad.
Para mejorar aún más su experiencia en la creación de diagramas, consulte los 
comandos comunes de PlantUML.
En los diagramas de secuencia PlantUML, la secuencia 
-> denota un mensaje enviado entre dos participantes, que son reconocidos automáticamente y no necesitan ser declarados de antemano.
Utilice flechas punteadas empleando la secuencia 
-->, ofreciendo una visualización distinta en sus diagramas.
Para mejorar la legibilidad sin afectar a la representación visual, utilice flechas inversas como 
<- o 
<--. Sin embargo, tenga en cuenta que esto es específicamente para diagramas de secuencia y las reglas difieren para otros tipos de diagramas.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml
 
 
 
 | 
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 
collections 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
collections Foo6
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
Foo1 -> Foo6 : To collections
@enduml
 
 
 
 | 
Se puede renombrar un participante usando la palabra reservada 
as.
También es posible cambiar el 
color de fondo de los actores o participantes.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant "I have a really\nlong name" as L #99FF99
/' You can also declare:
   participant L as "I have a really\nlong name"  #99FF99
  '/
Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml
 
 
 
 | 
You can use the 
orderkeyword to custom the print order of participant.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml
 
 
 
 | 
WARNING
 This translation need to be updated. WARNING
Puedes declarar el participante en múltiples líneas.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Participant [
    =Title
    ----
    ""SubTitle""
]
participant Bob
Participant -> Bob
@enduml
 
 
 | 
[Ref. QA-15232]
Puede utilizar comillas para definir los participantes.
Y puede utilizar la palabra clave 
as para dar un alias a esos participantes.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "This is very\nlong" as Long
' You can also declare:
' "Bob()" -> Long as "This is very\nlong"
Long --> "Bob()" : ok
@enduml
 
 
 
 | 
Un participante puede enviarse un mensaje a sí mismo.
También es posible tener varias líneas utilizando 
\n.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice -> Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml
 
 
 
 | 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice <- Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml
 
 
 
 | 
[Ref. QA-1361]
La alineación del texto en las flechas puede establecerse en 
left, 
right o 
center utilizando 
skinparam sequenceMessageAlign.
También puede utilizar 
direction o 
reverseDirection para alinear el texto dependiendo de la dirección de la flecha. Encontrará más detalles y ejemplos en la página 
skinparam.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam sequenceMessageAlign right
Bob -> Alice : Request
Alice -> Bob : Response
@enduml
 
 
 
 | 
Texto del mensaje de respuesta debajo de la flecha
Puede poner el texto del mensaje de respuesta debajo de la flecha, con el comando 
skinparam responseMessageBelowArrow true.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam responseMessageBelowArrow true
Bob -> Alice : hello
Bob <- Alice : ok
@enduml
 
 
 
 | 
You can change the actor style from stick man 
(by default) to:
- an awesome man with the 
skinparam actorStyle awesome command; 
- a hollow man with the 
skinparam actorStyle hollow  command. 
Stick man (by default)
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
actor Alice
actor Bob
Alice -> Bob : hello
hide footbox
@enduml
 
 
 
 | 
Awesome man 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam actorStyle awesome
actor Alice
actor Bob
Alice -> Bob : hello
hide footbox
@enduml
 
 
 
 | 
[Ref. QA-10493]
Hollow man 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam actorStyle Hollow
actor Alice
actor Bob
Alice -> Bob : hello
hide footbox
@enduml
 
 
 
 | 
[Ref. PR#396]
Puede cambiar el estilo de la flecha de diferentes formas:
- añade una 
x al final para indicar un mensaje 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 
<-> 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Bob ->x Alice
Bob -> Alice
Bob ->> Alice
Bob -\ Alice
Bob \\- Alice
Bob //-- Alice
Bob ->o Alice
Bob o\\-- Alice
Bob <-> Alice
Bob <->o Alice
@enduml
 
 
 
 | 
Puede cambiar el color de flechas individuales usando la siguiente notación:
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml
 
 
 
 | 
La palabra clave 
autonumber es usada para añadir automáticamente números a los mensajes.
| 
 
🎉 Copied!
 
 
 
 
 | 
@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//.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber 15
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response
autonumber 40 10
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml
 
 
 
 | 
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.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
autonumber "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber 15 "<b>(<u>##</u>)"
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response
autonumber 40 10 "<font color=red><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml
 
 
 
 | 
También puedes usar 
autonumber stop y
autonumber resume //increment// //format// para pausar y continuar la numeración automática, respectivamente.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
autonumber 10 10 "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
autonumber stop
Bob -> Alice : dummy
autonumber resume "<font color=red><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
autonumber stop
Bob -> Alice : dummy
autonumber resume 1 "<font color=blue><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml
 
 
 
 | 
*[Ref. [QA-7119](https://forum.plantuml.net/7119/create-links-after-creating-a-diagram?show=7137#a7137)]*
WARNING
 This translation need to be updated. WARNING
La palabra clave 
title se utiliza para añadir un título a la página.
Las páginas pueden mostrar encabezados y pies de página utilizando 
header y 
footer.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
header Page Header
footer Page %page% of %lastpage%
title Example Title
Alice -> Bob : message 1
Alice -> Bob : message 2
@enduml
 
 
 
 | 
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.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice -> Bob : message 1
Alice -> Bob : message 2
newpage
Alice -> Bob : message 3
Alice -> Bob : message 4
newpage A title for the\nlast page
Alice -> Bob : message 5
Alice -> Bob : message 6
@enduml
 
 
 
 | 
WARNING
 This translation need to be updated. WARNING
Es posible agrupar mensajes usando las siguientes palabras reservadas:
alt/else 
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.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice -> Bob: Authentication Request
alt successful case
    Bob -> Alice: Authentication Accepted
else some kind of failure
    Bob -> Alice: Authentication Failure
    group My own label
    Alice -> Log : Log attack start
        loop 1000 times
            Alice -> Bob: DNS Attack
        end
    Alice -> Log : Log attack end
    end
else Another type of failure
   Bob -> Alice: Please repeat
end
@enduml
 
 
 | 
WARNING
 This translation need to be updated. WARNING
Para 
group, es posible añadir, entre
[ y 
], un texto o etiqueta secundaria que se mostrará en la cabecera.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Failure
group My own label [My own label 2]
    Alice -> Log : Log attack start
    loop 1000 times
        Alice -> Bob: DNS Attack
    end
    Alice -> Log : Log attack end
end
@enduml
 
 
 | 
[Ref. QA-2503]
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 .
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice->Bob : hello
note left: this is a first note
Bob->Alice : ok
note right: this is another note
Bob->Bob : I am thinking
note left
a note
can also be defined
on several lines
end note
@enduml
 
 
 
 | 
También es posible colocar notas relativas al participante con las palabras reservadas <code>note
left of</code> , 
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 .
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Alice
participant Bob
note left of Alice #aqua
This is displayed
left of Alice.
end note
note right of Alice: This is displayed right of Alice.
note over Alice: This is displayed over Alice.
note over Alice, Bob #FFAAAA: This is displayed\n over Bob and Alice.
note over Bob, Alice
This is yet another
example of
a long note.
end note
@enduml
 
 
 
 | 
WARNING
 This translation need to be updated. WARNING
Puedes usar las palabras reservadas 
hnote y 
rnote para cambiar el aspecto de las notas.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
 "r" as rectangle
 "h" as hexagon
endrnote
@enduml
 
 
 
 | 
*[Ref. [QA-1765](https://forum.plantuml.net/1765/is-it-possible-to-have-different-shapes-for-notes?show=1806#c1806)]*
WARNING
 This translation need to be updated. WARNING
Puedes hacer directamente una nota sobre todos los participantes, con la sintaxis:
note across: note_description 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice->Bob:m1
Bob->Charlie:m2
note over Alice, Charlie: Old method for note over all part. with:\n ""note over //FirstPart, LastPart//"".
note across: New method with:\n""note across""
Bob->Alice
hnote across:Note across all part.
@enduml
 
 
 
 | 
[Ref. QA-9738]
Puedes hacer que varias notas estén alineadas al mismo nivel, con la sintaxis 
/:
- sin 
/ (por defecto, las notas no están alineadas) 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
note over Alice : initial state of Alice
note over Bob : initial state of Bob
Bob -> Alice : hello
@enduml
 
 
 
 | 
- con 
/ (las notas  están alineadas) 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
note over Alice : initial state of Alice
/ note over Bob : initial state of Bob
Bob -> Alice : hello
@enduml
 
 
 
 | 
[Ref. QA-354]
También es posible usar sintexis de WikiCreole:
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Alice
participant "The **Famous** Bob" as Bob
Alice -> Bob : hello --there--
... Some ~~long delay~~ ...
Bob -> Alice : ok
note left
  This is **bold**
  This is //italics//
  This is ""monospaced""
  This is --stroked--
  This is __underlined__
  This is ~~waved~~
end note
Alice -> Bob : A //well formatted// message
note right of Alice
 This is <back:cadetblue><size:18>displayed</size></back>
 __left of__ Alice.
end note
note left of Bob
 <u:red>This</u> is <color #118888>displayed</color>
 **<color purple>left of</color> <s:red>Alice</strike> Bob**.
end note
note over Alice, Bob
 <w:#FF33FF>This is hosted</w> by <img sourceforge.jpg>
end note
@enduml
 
 
 
 | 
WARNING
 This translation need to be updated. WARNING
Si quieres, puedes dividir un diagrama usando el separador 
== para separar su diagrama en pasos lógicos.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
== Initialization ==
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
== Repetition ==
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
 
 
 
 | 
WARNING
 This translation need to be updated. WARNING
Puedes referenciar en un diagrama utilizando la palabra clave 
ref over.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Alice
actor Bob
ref over Alice, Bob : init
Alice -> Bob : hello
ref over Bob
  This can be on
  several lines
end ref
@enduml
 
 
 
 | 
Puedes usar 
... para indicar un retardo en el diagrama.
Y también es posible colocar un mensaje con ese retardo.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes latter...
Bob --> Alice: Bye !
@enduml
 
 
 
 | 
Para interrumpir mensajes largos, puede añadir manualmente 
\n en el texto.
Otra opción es utilizar el ajuste 
maxMessageSize:
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam maxMessageSize 50
participant a
participant b
a -> b :this\nis\nmanually\ndone
a -> b :this is a very long message on several words
@enduml
 
 
 
 | 
You can use 
sequenceMessageSpan command to allow message text to span beyond the involved participants.
Without sequenceMessageSpan (by default)
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
ParticipantNumber1 -> ParticipantNumber2 : this is a very long message that is very long
ParticipantNumber1 -> ParticipantNumber1 : this is a very long message that is very long 
ParticipantNumber2 -> ParticipantNumber3 : foo2
@enduml
 
 
 
 | 
With  sequenceMessageSpan (on teoz mode)
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
!pragma teoz true
!pragma sequenceMessageSpan true
ParticipantNumber1 -> ParticipantNumber2 : this is a very long message that is very long
ParticipantNumber1 -> ParticipantNumber1 : this is a very long message that is very long 
ParticipantNumber2 -> ParticipantNumber3 : foo2
@enduml
 
 
 
 | 
[Ref. GH-2386]
Puedes usar 
||| para indicar espaciado en el diagrama.
También es posible especificar un número de píxel para ser usado.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice -> Bob: message 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: ok
@enduml
 
 
 
 | 
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.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant User
User -> A: DoWork
activate A
A -> B: << createRequest >>
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: RequestCreated
deactivate B
A -> User: Done
deactivate A
@enduml
 
 
 
 | 
Puede usarse anidamiento de líneas de vida, y es posible agregar un 
color a dicha línea de vida.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant User
User -> A: DoWork
activate A #FFBBBB
A -> A: Internal call
activate A #DarkSalmon
A -> B: << createRequest >>
activate B
B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A
@enduml
 
 
 
 | 
WARNING
 This translation need to be updated. WARNING
El comando 
return genera un mensaje de retorno con una etiqueta de texto opcional.
El punto de retorno es el que causó la activación más reciente de la línea de vida.
La sintaxis es 
return label donde 
label si se proporciona es cualquier cadena aceptable para mensajes convencionales.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Bob -> Alice : hello
activate Alice
Alice -> Alice : some action
return bye
@enduml
 
 
 
 | 
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.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Bob -> Alice : hello
create Other
Alice -> Other : new
create control String
Alice -> String
note right : You can also put notes!
Alice --> Bob : ok
@enduml
 
 
 
 | 
Inmediatamente después de especificar el participante de destino, se puede utilizar la siguiente sintaxis:
++ Activar el objetivo  * (opcionalmente puede ir seguido de un 
color )
-- Desactivar el origen 
** Crear una  * instancia del objetivo 
!! Destruir una instancia del objetivo 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
alice -> bob ++ : hello
bob -> bob ++ : self call
bob -> bib ++  #005500 : hello
bob -> george ** : create
return done
return rc
bob -> george !! : delete
return success
@enduml
 
 
 
 | 
Entonces puedes mezclar activación y desactivación, en la misma línea:
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
alice   ->  bob     ++   : hello1
bob     ->  charlie --++ : hello2
charlie --> alice   --   : ok
@enduml
 
 
 
 | 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
@startuml
alice -> bob   --++ #gold: hello
bob   -> alice --++ #gold: you too
alice -> bob   --: step1
alice -> bob   : step2
@enduml
@enduml
 
 
 
 | 
[Ref. QA-4834, QA-9573 y QA-13234]
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.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
[-> A: DoWork
activate A
A -> A: Internal call
activate A
A ->] : << createRequest >>
A<--] : RequestCreated
deactivate A
[<- A: Done
deactivate A
@enduml
 
 
 
 | 
También puedes tener la siguiente sintaxis:
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
[-> Bob
[o-> Bob
[o->o Bob
[x-> Bob
[<- Bob
[x<- Bob
Bob ->]
Bob ->o]
Bob o->o]
Bob ->x]
Bob <-]
Bob x<-]
@enduml
 
 
 
 | 
WARNING
 This translation need to be updated. WARNING
Puedes tener flechas 
cortas con el uso de 
?.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
?-> Alice    : ""?->""\n**short** to actor1
[-> Alice    : ""[->""\n**from start** to actor1
[-> Bob      : ""[->""\n**from start** to actor2
?-> Bob      : ""?->""\n**short** to actor2
Alice ->]    : ""->]""\nfrom actor1 **to end**
Alice ->?    : ""->?""\n**short** from actor1
Alice -> Bob : ""->"" \nfrom actor1 to actor2
@enduml
 
 
 
 | 
[Ref. QA-310]
Con 
teoz es posible añadir anclas al diagrama y utilizar las anclas para especificar el tiempo de duración.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
!pragma teoz true
{start} Alice -> Bob : start doing things during duration
Bob -> Max : something
Max -> Bob : something else
{end} Bob -> Alice : finish
{start} <-> {end} : some time
@enduml
 
 
 | 
Puede utilizar la opción de 
línea de comandos -P para especificar el pragma:
java -jar plantuml.jar -Pteoz=true
[Ref. issue-582]
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).
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,#ADD1B2) Testable >>
Bob->Alice: First message
@enduml
 
 
 
 | 
Por defecto, 
guillemet (comillas) son usadas para mostrar el estereotipo.
Puedes cambiar este comportamiento usando skinparam 
guillemet:
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam guillemet false
participant "Famous Bob" as Bob << Generated >>
participant Alice << (C,#ADD1B2) Testable >>
Bob->Alice: First message
@enduml
 
 
 
 | 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Bob << (C,#ADD1B2) >>
participant Alice << (C,#ADD1B2) >>
Bob->Alice: First message
@enduml
 
 
 
 | 
It is possible to define stereotypes position (
top or 
bottom) with the command 
skinparam stereotypePosition.
Top postion (by default)
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam stereotypePosition top
participant A<<st1>>
participant B<<st2>>
A --> B : stereo test
@enduml
 
 
 
 | 
Bottom postion
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam stereotypePosition bottom
participant A<<st1>>
participant B<<st2>>
A --> B : stereo test
@enduml
 
 
 
 | 
[Ref. QA-18650]
Puedes usar 
sintaxis de Creole en el título.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
title __Simple__ **communication** example
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
 
 
 
 | 
Puedes añadir una nueva línea usando \n en la descripción del título.
| 
 
🎉 Copied!
 
 
 
 
 | 
@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 .
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
title
 <u>Simple</u> communication example
 on <i>several</i> lines and using <font color=red>html</font>
 This is hosted by <img:sourceforge.jpg>
end title
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
 
 
 
 | 
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 .
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
box "Internal Service" #LightBlue
participant Bob
participant Alice
end box
participant Other
Bob -> Alice : hello
Alice -> Other : hello
@enduml
 
 
 
 | 
WARNING
 This translation need to be updated. WARNING
Puedes usar las palabras reservadas 
hide footbox para remover el pie de página del diagrama.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
hide footbox
title Footer removed
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
@enduml
 
 
 
 | 
Puedes usar el comando 
skinparam para cambiar los colores y las fuentes de los dibujos
Puedes usar este comando:
También puedes cambiar otros parámetros de renderización, como se ve en los siguientes ejemplos
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam sequenceArrowThickness 2
skinparam roundcorner 20
skinparam maxmessagesize 60
skinparam sequenceParticipant underline
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: Create Request
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml
 
 
 
 | 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam backgroundColor #EEEBDC
skinparam handwritten true
skinparam sequence {
ArrowColor DeepSkyBlue
ActorBorderColor DeepSkyBlue
LifeLineBorderColor blue
LifeLineBackgroundColor #A9DCDF
ParticipantBorderColor DeepSkyBlue
ParticipantBackgroundColor DodgerBlue
ParticipantFontName Impact
ParticipantFontSize 17
ParticipantFontColor #A9DCDF
ActorBackgroundColor aqua
ActorFontColor DeepSkyBlue
ActorFontSize 17
ActorFontName Aapex
}
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: Create Request
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml
 
 
 | 
Es posible ajustar algunos parámetros de relleno
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam ParticipantPadding 20
skinparam BoxPadding 10
box "Foo1"
participant Alice1
participant Alice2
end box
box "Foo2"
participant Bob1
participant Bob2
end box
Alice1 -> Bob1 : hello
Alice1 -> Out : out
@enduml
 
 
 
 | 
Normal arrow
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Alice as a
participant Bob   as b
a ->     b : ""->   ""
a ->>    b : ""->>  ""
a -\     b : ""-\   ""
a -\\    b : ""-\\\\""
a -/     b : ""-/   ""
a -//    b : ""-//  ""
a ->x    b : ""->x  ""
a x->    b : ""x->  ""
a o->    b : ""o->  ""
a ->o    b : ""->o  ""
a o->o   b : ""o->o ""
a <->    b : ""<->  ""
a o<->o  b : ""o<->o""
a x<->x  b : ""x<->x""
a ->>o   b : ""->>o ""
a -\o    b : ""-\o  ""
a -\\o   b : ""-\\\\o""
a -/o    b : ""-/o  ""
a -//o   b : ""-//o ""
a x->o   b : ""x->o ""
@enduml
 
 
 
 | 
Itself arrow
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Alice as a
participant Bob   as b
a ->     a : ""->   ""
a ->>    a : ""->>  ""
a -\     a : ""-\   ""
a -\\    a : ""-\\\\""
a -/     a : ""-/   ""
a -//    a : ""-//  ""
a ->x    a : ""->x  ""
a x->    a : ""x->  ""
a o->    a : ""o->  ""
a ->o    a : ""->o  ""
a o->o   a : ""o->o ""
a <->    a : ""<->  ""
a o<->o  a : ""o<->o""
a x<->x  a : ""x<->x""
a ->>o   a : ""->>o ""
a -\o    a : ""-\o  ""
a -\\o   a : ""-\\\\o""
a -/o    a : ""-/o  ""
a -//o   a : ""-//o ""
a x->o   a : ""x->o ""
@enduml
 
 
 
 | 
Incoming and outgoing messages (with '[', ']')
Incoming messages (with '[')
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Alice as a
participant Bob   as b
[->      b : ""[->   ""
[->>     b : ""[->>  ""
[-\      b : ""[-\   ""
[-\\     b : ""[-\\\\""
[-/      b : ""[-/   ""
[-//     b : ""[-//  ""
[->x     b : ""[->x  ""
[x->     b : ""[x->  ""
[o->     b : ""[o->  ""
[->o     b : ""[->o  ""
[o->o    b : ""[o->o ""
[<->     b : ""[<->  ""
[o<->o   b : ""[o<->o""
[x<->x   b : ""[x<->x""
[->>o    b : ""[->>o ""
[-\o     b : ""[-\o  ""
[-\\o    b : ""[-\\\\o""
[-/o     b : ""[-/o  ""
[-//o    b : ""[-//o ""
[x->o    b : ""[x->o ""
@enduml
 
 
 
 | 
Outgoing messages (with ']')
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Alice as a
participant Bob   as b
a ->]      : ""->]   ""
a ->>]     : ""->>]  ""
a -\]      : ""-\]   ""
a -\\]     : ""-\\\\]""
a -/]      : ""-/]   ""
a -//]     : ""-//]  ""
a ->x]     : ""->x]  ""
a x->]     : ""x->]  ""
a o->]     : ""o->]  ""
a ->o]     : ""->o]  ""
a o->o]    : ""o->o] ""
a <->]     : ""<->]  ""
a o<->o]   : ""o<->o]""
a x<->x]   : ""x<->x]""
a ->>o]    : ""->>o] ""
a -\o]     : ""-\o]  ""
a -\\o]    : ""-\\\\o]""
a -/o]     : ""-/o]  ""
a -//o]    : ""-//o] ""
a x->o]    : ""x->o] ""
@enduml
 
 
 
 | 
Short incoming and outgoing messages (with '?')
Short incoming (with '?')
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Alice as a
participant Bob   as b
a ->     b : //Long long label//
?->      b : ""?->   ""
?->>     b : ""?->>  ""
?-\      b : ""?-\   ""
?-\\     b : ""?-\\\\""
?-/      b : ""?-/   ""
?-//     b : ""?-//  ""
?->x     b : ""?->x  ""
?x->     b : ""?x->  ""
?o->     b : ""?o->  ""
?->o     b : ""?->o  ""
?o->o    b : ""?o->o ""
?<->     b : ""?<->  ""
?o<->o   b : ""?o<->o""
?x<->x   b : ""?x<->x""
?->>o    b : ""?->>o ""
?-\o     b : ""?-\o  ""
?-\\o    b : ""?-\\\\o ""
?-/o     b : ""?-/o  ""
?-//o    b : ""?-//o ""
?x->o    b : ""?x->o ""
@enduml
 
 
 
 | 
Short outgoing (with '?')
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Alice as a
participant Bob   as b
a ->     b : //Long long label//
a ->?      : ""->?   ""
a ->>?     : ""->>?  ""
a -\?      : ""-\?   ""
a -\\?     : ""-\\\\?""
a -/?      : ""-/?   ""
a -//?     : ""-//?  ""
a ->x?     : ""->x?  ""
a x->?     : ""x->?  ""
a o->?     : ""o->?  ""
a ->o?     : ""->o?  ""
a o->o?    : ""o->o? ""
a <->?     : ""<->?  ""
a o<->o?   : ""o<->o?""
a x<->x?   : ""x<->x?""
a ->>o?    : ""->>o? ""
a -\o?     : ""-\o?  ""
a -\\o?    : ""-\\\\o?""
a -/o?     : ""-/o?  ""
a -//o?    : ""-//o? ""
a x->o?    : ""x->o? ""
@enduml
 
 
 
 | 
By default
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
 
 
 
 | 
LifelineStrategy 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam lifelineStrategy nosolid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
 
 
 
 | 
[Ref. QA-9016]
In order to have solid life line in sequence diagrams, you can use: 
skinparam lifelineStrategy solid
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam lifelineStrategy solid
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
 
 
 
 | 
[Ref. QA-2794]
style strictuml
To be conform to strict UML (
for arrow style: emits triangle rather than sharp arrowheads), you can use:
skinparam style strictuml 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
skinparam style strictuml
Bob -> Alice : hello
Alice -> Bob : ok
@enduml
 
 
 
 | 
[Ref. QA-1047]
By default, all participants are displayed.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
participant Alice
participant Bob
participant Carol
Alice -> Bob : hello
@enduml
 
 
 
 | 
But you can 
hide unlinked participant.
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
hide unlinked
participant Alice
participant Bob
participant Carol
Alice -> Bob : hello
@enduml
 
 
 
 | 
[Ref. QA-4247]
It is possible to 
color a group messages:
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
Alice -> Bob: Authentication Request
alt#Gold #LightBlue Successful case
    Bob -> Alice: Authentication Accepted
else #Pink Failure
    Bob -> Alice: Authentication Rejected
end
@enduml
 
 
 | 
[Ref. QA-4750 and QA-6410]
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
mainframe This is a **mainframe**
Alice->Bob : Hello
@enduml
 
 
 
 | 
[Ref. QA-4019 and Issue#148]
You can use the 
(nn) option (before or after arrow) to make the arrows slanted, where 
nn is the number of shift pixels.
[Available only after v1.2022.6beta+]
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
A ->(10) B: text 10
B ->(10) A: text 10
A ->(10) B: text 10
A (10)<- B: text 10
@enduml
 
 
 
 | 
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
A ->(40) B++: Rq
B -->(20) A--: Rs
@enduml
 
 
 
 | 
[Ref. QA-14145]
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
!pragma teoz true
A ->(50) C: Starts\nwhen 'B' sends
& B ->(25) C: \nBut B's message\n arrives before A's
@enduml
 
 
 
 | 
[Ref. QA-6684]
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
!pragma teoz true
S1 ->(30) S2: msg 1\n
& S2 ->(30) S1: msg 2
note left S1: msg\nS2 to S1
& note right S2: msg\nS1 to S2
@enduml
 
 
 
 | 
[Ref. QA-1072]
You can use the 
& teoz command to display parallel messages:
| 
 
🎉 Copied!
 
 
 
 
 | 
@startuml
!pragma teoz true
Alice -> Bob : hello
& Bob -> Charlie : hi
@enduml
 
 
 
 | 
(See also Teoz architecture)