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