Arrows LR
@startuml Bob -> Alice Bob ->o Alice Bob ->x Alice Bob --> Alice Bob -->o Alice Bob -->x Alice Bob ->> Alice Bob ->>o Alice Bob ->>x Alice Bob -->> Alice Bob -->>o Alice Bob -->>x Alice Bob -\ Alice Bob -\o Alice Bob -\x Alice Bob --\ Alice Bob --\o Alice Bob --\x Alice Bob -\\ Alice Bob -\\o Alice Bob -\\x Alice Bob --\\ Alice Bob --\\o Alice Bob --\\x Alice Bob -/ Alice Bob -/o Alice Bob -/x Alice Bob --/ Alice Bob --/o Alice Bob --/x Alice Bob -// Alice Bob -//o Alice Bob -//x Alice Bob --// Alice Bob --//o Alice Bob --//x Alice @enduml
Arrows RL
@startuml Bob <- Alice Bob o<- Alice Bob x<- Alice Bob <-- Alice Bob o<-- Alice Bob x<-- Alice Bob <<- Alice Bob o<<- Alice Bob x<<- Alice Bob <<-- Alice Bob o<<-- Alice Bob x<<-- Alice Bob \- Alice Bob o\- Alice Bob x\- Alice Bob \-- Alice Bob o\-- Alice Bob x\-- Alice Bob \\- Alice Bob o\\- Alice Bob x\\- Alice Bob \\-- Alice Bob o\\-- Alice Bob x\\-- Alice Bob /- Alice Bob o/- Alice Bob x/- Alice Bob /-- Alice Bob o/-- Alice Bob x/-- Alice Bob //- Alice Bob o//- Alice Bob x//- Alice Bob //-- Alice Bob o//-- Alice Bob x//-- Alice @enduml
Arrows both
@startuml Bob <-> Alice Bob o<-> Alice Bob x<-> Alice Bob <--> Alice Bob o<--> Alice Bob x<--> Alice Bob <<-> Alice Bob o<<-> Alice Bob x<<-> Alice Bob <<--> Alice Bob o<<--> Alice Bob x<<--> Alice Bob \-> Alice Bob o\-> Alice Bob x\-> Alice Bob \--> Alice Bob o\--> Alice Bob x\--> Alice Bob \\-> Alice Bob o\\-> Alice Bob x\\-> Alice Bob \\--> Alice Bob o\\--> Alice Bob x\\--> Alice Bob /-> Alice Bob o/-> Alice Bob x/-> Alice Bob /--> Alice Bob o/--> Alice Bob x/--> Alice Bob //-> Alice Bob o//-> Alice Bob x//-> Alice Bob //--> Alice Bob o//--> Alice Bob x//--> Alice Bob <->o Alice Bob o<->o Alice Bob x<->o Alice Bob <-->o Alice Bob o<-->o Alice Bob x<-->o Alice Bob <<->o Alice Bob o<<->o Alice Bob x<<->o Alice Bob <<-->o Alice Bob o<<-->o Alice Bob x<<-->o Alice Bob \->o Alice Bob o\->o Alice Bob x\->o Alice Bob \-->o Alice Bob o\-->o Alice Bob x\-->o Alice Bob \\->o Alice Bob o\\->o Alice Bob x\\->o Alice Bob \\-->o Alice Bob o\\-->o Alice Bob x\\-->o Alice Bob /->o Alice Bob o/->o Alice Bob x/->o Alice Bob /-->o Alice Bob o/-->o Alice Bob x/-->o Alice Bob //->o Alice Bob o//->o Alice Bob x//->o Alice Bob //-->o Alice Bob o//-->o Alice Bob x//-->o Alice Bob <->x Alice Bob o<->x Alice Bob x<->x Alice Bob <-->x Alice Bob o<-->x Alice Bob x<-->x Alice Bob <<->x Alice Bob o<<->x Alice Bob x<<->x Alice Bob <<-->x Alice Bob o<<-->x Alice Bob x<<-->x Alice Bob \->x Alice Bob o\->x Alice Bob x\->x Alice Bob \-->x Alice Bob o\-->x Alice Bob x\-->x Alice Bob \\->x Alice Bob o\\->x Alice Bob x\\->x Alice Bob \\-->x Alice Bob o\\-->x Alice Bob x\\-->x Alice Bob /->x Alice Bob o/->x Alice Bob x/->x Alice Bob /-->x Alice Bob o/-->x Alice Bob x/-->x Alice Bob //->x Alice Bob o//->x Alice Bob x//->x Alice Bob //-->x Alice Bob o//-->x Alice Bob x//-->x Alice Bob <->> Alice Bob o<->> Alice Bob x<->> Alice Bob <-->> Alice Bob o<-->> Alice Bob x<-->> Alice Bob <<->> Alice Bob o<<->> Alice Bob x<<->> Alice Bob <<-->> Alice Bob o<<-->> Alice Bob x<<-->> Alice Bob \->> Alice Bob o\->> Alice Bob x\->> Alice Bob \-->> Alice Bob o\-->> Alice Bob x\-->> Alice Bob \\->> Alice Bob o\\->> Alice Bob x\\->> Alice Bob \\-->> Alice Bob o\\-->> Alice Bob x\\-->> Alice Bob /->> Alice Bob o/->> Alice Bob x/->> Alice Bob /-->> Alice Bob o/-->> Alice Bob x/-->> Alice Bob //->> Alice Bob o//->> Alice Bob x//->> Alice Bob //-->> Alice Bob o//-->> Alice Bob x//-->> Alice Bob <->>o Alice Bob o<->>o Alice Bob x<->>o Alice Bob <-->>o Alice Bob o<-->>o Alice Bob x<-->>o Alice Bob <<->>o Alice Bob o<<->>o Alice Bob x<<->>o Alice Bob <<-->>o Alice Bob o<<-->>o Alice Bob x<<-->>o Alice Bob \->>o Alice Bob o\->>o Alice Bob x\->>o Alice Bob \-->>o Alice Bob o\-->>o Alice Bob x\-->>o Alice Bob \\->>o Alice Bob o\\->>o Alice Bob x\\->>o Alice Bob \\-->>o Alice Bob o\\-->>o Alice Bob x\\-->>o Alice Bob /->>o Alice Bob o/->>o Alice Bob x/->>o Alice Bob /-->>o Alice Bob o/-->>o Alice Bob x/-->>o Alice Bob //->>o Alice Bob o//->>o Alice Bob x//->>o Alice Bob //-->>o Alice Bob o//-->>o Alice Bob x//-->>o Alice Bob <->>x Alice Bob o<->>x Alice Bob x<->>x Alice Bob <-->>x Alice Bob o<-->>x Alice Bob x<-->>x Alice Bob <<->>x Alice Bob o<<->>x Alice Bob x<<->>x Alice Bob <<-->>x Alice Bob o<<-->>x Alice Bob x<<-->>x Alice Bob \->>x Alice Bob o\->>x Alice Bob x\->>x Alice Bob \-->>x Alice Bob o\-->>x Alice Bob x\-->>x Alice Bob \\->>x Alice Bob o\\->>x Alice Bob x\\->>x Alice Bob \\-->>x Alice Bob o\\-->>x Alice Bob x\\-->>x Alice Bob /->>x Alice Bob o/->>x Alice Bob x/->>x Alice Bob /-->>x Alice Bob o/-->>x Alice Bob x/-->>x Alice Bob //->>x Alice Bob o//->>x Alice Bob x//->>x Alice Bob //-->>x Alice Bob o//-->>x Alice Bob x//-->>x Alice Bob <-\ Alice Bob o<-\ Alice Bob x<-\ Alice Bob <--\ Alice Bob o<--\ Alice Bob x<--\ Alice Bob <<-\ Alice Bob o<<-\ Alice Bob x<<-\ Alice Bob <<--\ Alice Bob o<<--\ Alice Bob x<<--\ Alice Bob \-\ Alice Bob o\-\ Alice Bob x\-\ Alice Bob \--\ Alice Bob o\--\ Alice Bob x\--\ Alice Bob \\-\ Alice Bob o\\-\ Alice Bob x\\-\ Alice Bob \\--\ Alice Bob o\\--\ Alice Bob x\\--\ Alice Bob /-\ Alice Bob o/-\ Alice Bob x/-\ Alice Bob /--\ Alice Bob o/--\ Alice Bob x/--\ Alice Bob //-\ Alice Bob o//-\ Alice Bob x//-\ Alice Bob //--\ Alice Bob o//--\ Alice Bob x//--\ Alice Bob <-\o Alice Bob o<-\o Alice Bob x<-\o Alice Bob <--\o Alice Bob o<--\o Alice Bob x<--\o Alice Bob <<-\o Alice Bob o<<-\o Alice Bob x<<-\o Alice Bob <<--\o Alice Bob o<<--\o Alice Bob x<<--\o Alice Bob \-\o Alice Bob o\-\o Alice Bob x\-\o Alice Bob \--\o Alice Bob o\--\o Alice Bob x\--\o Alice Bob \\-\o Alice Bob o\\-\o Alice Bob x\\-\o Alice Bob \\--\o Alice Bob o\\--\o Alice Bob x\\--\o Alice Bob /-\o Alice Bob o/-\o Alice Bob x/-\o Alice Bob /--\o Alice Bob o/--\o Alice Bob x/--\o Alice Bob //-\o Alice Bob o//-\o Alice Bob x//-\o Alice Bob //--\o Alice Bob o//--\o Alice Bob x//--\o Alice Bob <-\x Alice Bob o<-\x Alice Bob x<-\x Alice Bob <--\x Alice Bob o<--\x Alice Bob x<--\x Alice Bob <<-\x Alice Bob o<<-\x Alice Bob x<<-\x Alice Bob <<--\x Alice Bob o<<--\x Alice Bob x<<--\x Alice Bob \-\x Alice Bob o\-\x Alice Bob x\-\x Alice Bob \--\x Alice Bob o\--\x Alice Bob x\--\x Alice Bob \\-\x Alice Bob o\\-\x Alice Bob x\\-\x Alice Bob \\--\x Alice Bob o\\--\x Alice Bob x\\--\x Alice Bob /-\x Alice Bob o/-\x Alice Bob x/-\x Alice Bob /--\x Alice Bob o/--\x Alice Bob x/--\x Alice Bob //-\x Alice Bob o//-\x Alice Bob x//-\x Alice Bob //--\x Alice Bob o//--\x Alice Bob x//--\x Alice Bob <-\\ Alice Bob o<-\\ Alice Bob x<-\\ Alice Bob <--\\ Alice Bob o<--\\ Alice Bob x<--\\ Alice Bob <<-\\ Alice Bob o<<-\\ Alice Bob x<<-\\ Alice Bob <<--\\ Alice Bob o<<--\\ Alice Bob x<<--\\ Alice Bob \-\\ Alice Bob o\-\\ Alice Bob x\-\\ Alice Bob \--\\ Alice Bob o\--\\ Alice Bob x\--\\ Alice Bob \\-\\ Alice Bob o\\-\\ Alice Bob x\\-\\ Alice Bob \\--\\ Alice Bob o\\--\\ Alice Bob x\\--\\ Alice Bob /-\\ Alice Bob o/-\\ Alice Bob x/-\\ Alice Bob /--\\ Alice Bob o/--\\ Alice Bob x/--\\ Alice Bob //-\\ Alice Bob o//-\\ Alice Bob x//-\\ Alice Bob //--\\ Alice Bob o//--\\ Alice Bob x//--\\ Alice Bob <-\\o Alice Bob o<-\\o Alice Bob x<-\\o Alice Bob <--\\o Alice Bob o<--\\o Alice Bob x<--\\o Alice Bob <<-\\o Alice Bob o<<-\\o Alice Bob x<<-\\o Alice Bob <<--\\o Alice Bob o<<--\\o Alice Bob x<<--\\o Alice Bob \-\\o Alice Bob o\-\\o Alice Bob x\-\\o Alice Bob \--\\o Alice Bob o\--\\o Alice Bob x\--\\o Alice Bob \\-\\o Alice Bob o\\-\\o Alice Bob x\\-\\o Alice Bob \\--\\o Alice Bob o\\--\\o Alice Bob x\\--\\o Alice Bob /-\\o Alice Bob o/-\\o Alice Bob x/-\\o Alice Bob /--\\o Alice Bob o/--\\o Alice Bob x/--\\o Alice Bob //-\\o Alice Bob o//-\\o Alice Bob x//-\\o Alice Bob //--\\o Alice Bob o//--\\o Alice Bob x//--\\o Alice Bob <-\\x Alice Bob o<-\\x Alice Bob x<-\\x Alice Bob <--\\x Alice Bob o<--\\x Alice Bob x<--\\x Alice Bob <<-\\x Alice Bob o<<-\\x Alice Bob x<<-\\x Alice Bob <<--\\x Alice Bob o<<--\\x Alice Bob x<<--\\x Alice Bob \-\\x Alice Bob o\-\\x Alice Bob x\-\\x Alice Bob \--\\x Alice Bob o\--\\x Alice Bob x\--\\x Alice Bob \\-\\x Alice Bob o\\-\\x Alice Bob x\\-\\x Alice Bob \\--\\x Alice Bob o\\--\\x Alice Bob x\\--\\x Alice Bob /-\\x Alice Bob o/-\\x Alice Bob x/-\\x Alice Bob /--\\x Alice Bob o/--\\x Alice Bob x/--\\x Alice Bob //-\\x Alice Bob o//-\\x Alice Bob x//-\\x Alice Bob //--\\x Alice Bob o//--\\x Alice Bob x//--\\x Alice Bob <-/ Alice Bob o<-/ Alice Bob x<-/ Alice Bob <--/ Alice Bob o<--/ Alice Bob x<--/ Alice Bob <<-/ Alice Bob o<<-/ Alice Bob x<<-/ Alice Bob <<--/ Alice Bob o<<--/ Alice Bob x<<--/ Alice Bob \-/ Alice Bob o\-/ Alice Bob x\-/ Alice Bob \--/ Alice Bob o\--/ Alice Bob x\--/ Alice Bob \\-/ Alice Bob o\\-/ Alice Bob x\\-/ Alice Bob \\--/ Alice Bob o\\--/ Alice Bob x\\--/ Alice Bob /-/ Alice Bob o/-/ Alice Bob x/-/ Alice Bob /--/ Alice Bob o/--/ Alice Bob x/--/ Alice Bob //-/ Alice Bob o//-/ Alice Bob x//-/ Alice Bob //--/ Alice Bob o//--/ Alice Bob x//--/ Alice Bob <-/o Alice Bob o<-/o Alice Bob x<-/o Alice Bob <--/o Alice Bob o<--/o Alice Bob x<--/o Alice Bob <<-/o Alice Bob o<<-/o Alice Bob x<<-/o Alice Bob <<--/o Alice Bob o<<--/o Alice Bob x<<--/o Alice Bob \-/o Alice Bob o\-/o Alice Bob x\-/o Alice Bob \--/o Alice Bob o\--/o Alice Bob x\--/o Alice Bob \\-/o Alice Bob o\\-/o Alice Bob x\\-/o Alice Bob \\--/o Alice Bob o\\--/o Alice Bob x\\--/o Alice Bob /-/o Alice Bob o/-/o Alice Bob x/-/o Alice Bob /--/o Alice Bob o/--/o Alice Bob x/--/o Alice Bob //-/o Alice Bob o//-/o Alice Bob x//-/o Alice Bob //--/o Alice Bob o//--/o Alice Bob x//--/o Alice Bob <-/x Alice Bob o<-/x Alice Bob x<-/x Alice Bob <--/x Alice Bob o<--/x Alice Bob x<--/x Alice Bob <<-/x Alice Bob o<<-/x Alice Bob x<<-/x Alice Bob <<--/x Alice Bob o<<--/x Alice Bob x<<--/x Alice Bob \-/x Alice Bob o\-/x Alice Bob x\-/x Alice Bob \--/x Alice Bob o\--/x Alice Bob x\--/x Alice Bob \\-/x Alice Bob o\\-/x Alice Bob x\\-/x Alice Bob \\--/x Alice Bob o\\--/x Alice Bob x\\--/x Alice Bob /-/x Alice Bob o/-/x Alice Bob x/-/x Alice Bob /--/x Alice Bob o/--/x Alice Bob x/--/x Alice Bob //-/x Alice Bob o//-/x Alice Bob x//-/x Alice Bob //--/x Alice Bob o//--/x Alice Bob x//--/x Alice Bob <-// Alice Bob o<-// Alice Bob x<-// Alice Bob <--// Alice Bob o<--// Alice Bob x<--// Alice Bob <<-// Alice Bob o<<-// Alice Bob x<<-// Alice Bob <<--// Alice Bob o<<--// Alice Bob x<<--// Alice Bob \-// Alice Bob o\-// Alice Bob x\-// Alice Bob \--// Alice Bob o\--// Alice Bob x\--// Alice Bob \\-// Alice Bob o\\-// Alice Bob x\\-// Alice Bob \\--// Alice Bob o\\--// Alice Bob x\\--// Alice Bob /-// Alice Bob o/-// Alice Bob x/-// Alice Bob /--// Alice Bob o/--// Alice Bob x/--// Alice Bob //-// Alice Bob o//-// Alice Bob x//-// Alice Bob //--// Alice Bob o//--// Alice Bob x//--// Alice Bob <-//o Alice Bob o<-//o Alice Bob x<-//o Alice Bob <--//o Alice Bob o<--//o Alice Bob x<--//o Alice Bob <<-//o Alice Bob o<<-//o Alice Bob x<<-//o Alice Bob <<--//o Alice Bob o<<--//o Alice Bob x<<--//o Alice Bob \-//o Alice Bob o\-//o Alice Bob x\-//o Alice Bob \--//o Alice Bob o\--//o Alice Bob x\--//o Alice Bob \\-//o Alice Bob o\\-//o Alice Bob x\\-//o Alice Bob \\--//o Alice Bob o\\--//o Alice Bob x\\--//o Alice Bob /-//o Alice Bob o/-//o Alice Bob x/-//o Alice Bob /--//o Alice Bob o/--//o Alice Bob x/--//o Alice Bob //-//o Alice Bob o//-//o Alice Bob x//-//o Alice Bob //--//o Alice Bob o//--//o Alice Bob x//--//o Alice Bob <-//x Alice Bob o<-//x Alice Bob x<-//x Alice Bob <--//x Alice Bob o<--//x Alice Bob x<--//x Alice Bob <<-//x Alice Bob o<<-//x Alice Bob x<<-//x Alice Bob <<--//x Alice Bob o<<--//x Alice Bob x<<--//x Alice Bob \-//x Alice Bob o\-//x Alice Bob x\-//x Alice Bob \--//x Alice Bob o\--//x Alice Bob x\--//x Alice Bob \\-//x Alice Bob o\\-//x Alice Bob x\\-//x Alice Bob \\--//x Alice Bob o\\--//x Alice Bob x\\--//x Alice Bob /-//x Alice Bob o/-//x Alice Bob x/-//x Alice Bob /--//x Alice Bob o/--//x Alice Bob x/--//x Alice Bob //-//x Alice Bob o//-//x Alice Bob x//-//x Alice Bob //--//x Alice Bob o//--//x Alice Bob x//--//x Alice @enduml
actor
@startuml actor Alice #green ' a comment this is participant Bob box "Sweet deal" participant "Mr funky foo" as M #EAA participant "Mr. Sleepy" as S #AEA end box ref over Alice, Bob: init == Auth Plot == Alice --> Bob: Authenticaion Request Bob --> Alice: Successful auth Bob --> M: Alice is on M --> Alice: Hello Alice, I am M ...time passes... M --> S: Here is some dough! Alice --> Alice: Say, is it breezy? activate Alice ||22|| Alice --> M: Pleased to meet you,\nNow about Bob... ||22|| destroy Alice Bob --> M: Woops, Alice was destroyed deactivate Bob == Revival == activate M M ->]: << createSomeFoo >> M <--]: DidMakeSomeFoo M -->o Alice: Thou art revived! deactivate M @enduml
class
@startuml class Foo <<Bar>> { You can use several lines .. As you want and group == things together. -- You can have as many groups as you want. -- +publicMethod() -privateMethod() #protectedMethod() End of class } class Bar { note: This is a class .. Hello foo .. +public .. Private things prefixed with - .. -private #protected int foo String password } interface IBar { int a int b -- +public() -private() } Foo --> Bar IBar --> Foo IBar --> Bar @enduml
mindmap-multilines
@startmindmap * foo **:multi line; **_:multiline without box; ***[#red] inline color ***[#blue]_ inline color without box @endmindmap
object
@startuml title Objects and Interfaces interface Zzapper <<FooFoo>> { +publicAbc() #protectedAbc() } object Zzap { int a int b -- +publicAbc() #protectedAbc() -privateAbc() note: This is an object == note: here is a loop } object User { name = "dummy" id = 123 -- +userJump(int length) +userEat(Food food) } object Food { int calories string name } object Store { name = "superCat" id = 347 } Zzapper --> Zzap User --|> Store User --|> Zzap Food --* User Food --o Store @enduml
01-01-1 Basic-examples
@startuml Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response Alice -> Bob: Another authentication Request Alice <-- Bob: another authentication Response @enduml
01-02-1 Declaring-participant
@startuml participant participant as Foo actor actor as Foo1 boundary boundary as Foo2 control control as Foo3 entity entity as Foo4 database database as Foo5 collections collections as Foo6 queue queue as Foo7 Foo -> Foo1 : To actor Foo -> Foo2 : To boundary Foo -> Foo3 : To control Foo -> Foo4 : To entity Foo -> Foo5 : To database Foo -> Foo6 : To collections Foo -> Foo7: To queue @enduml
01-02-2 Declaring-participant
@startuml actor Bob #red ' The only difference between actor 'and participant is the drawing participant Alice participant "I have a really\nlong name" as L #99FF99 /' You can also declare: participant L as "I have a really\nlong name" #99FF99 '/ Alice->Bob: Authentication Request Bob->Alice: Authentication Response Bob->L: Log transaction @enduml
01-02-3 Declaring-participant
@startuml participant Last order 30 participant Middle order 20 participant First order 10 @enduml
01-03-1 Use-non-letters-in-participants
@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
01-04-1 Message-to-Self
@startuml Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext @enduml
01-05-1 Text-alignment
@startuml skinparam responseMessageBelowArrow true Bob -> Alice : hello Alice -> Bob : ok @enduml
01-06-1 Change-arrow-style
@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
01-07-1 Change-arror-color
@startuml Bob -[#red]> Alice : hello Alice -[#0000FF]->Bob : ok @enduml
01-08-1 Message-sequence-numbering
@startuml autonumber Bob -> Alice : Authentication Request Bob <- Alice : Authentication Response @enduml
01-08-2 Message-sequence-numbering
@startuml autonumber Bob -> Alice : Authentication Request Bob <- Alice : Authentication Response autonumber 15 Bob -> Alice : Another authentication Request Bob <- Alice : Another authentication Response autonumber 40 10 Bob -> Alice : Yet another authentication Request Bob <- Alice : Yet another authentication Response @enduml
01-08-3 Message-sequence-numbering
@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
01-08-4 Message-sequence-numbering
@startuml autonumber 10 10 "<b>[000]" Bob -> Alice : Authentication Request Bob <- Alice : Authentication Response autonumber stop Bob -> Alice : dummy autonumber resume "<font color=red><b>Message 0 " Bob -> Alice : Yet another authentication Request Bob <- Alice : Yet another authentication Response autonumber stop Bob -> Alice : dummy autonumber resume 1 "<font color=blue><b>Message 0 " Bob -> Alice : Yet another authentication Request Bob <- Alice : Yet another authentication Response @enduml
01-09-1 Page-Title-Header-and-Footer
@startuml header Page Header footer Page %page% of %lastpage% title Example Title Alice -> Bob : message 1 Alice -> Bob : message 2 @enduml
01-10-1 Split-diagrams
@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
01-11-1 Grouping-message
@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
01-12-1 Secondary-group-label
@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
01-13-1 Notes-on-messages
@startuml Alice->Bob : hello note left: this is a first note Bob->Alice : ok note right: this is another note Bob->Bob : I am thinking note left a note can also be defined on several lines end note @enduml
01-14-1 Some-other-notes
@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
01-15-1 Changing-notes-shape
@startuml caller -> server : conReq hnote over caller : idle caller <- server : conConf rnote over server "r" as rectangle "h" as hexagon endrnote rnote over server this is on several lines endrnote hnote over caller this is on several lines endhnote @enduml
01-16-1 Note-over-all-participants
@startuml Alice->Bob:m1 Bob->Charlie:m2 note over Alice, Charlie: Old method for note over all part. with:\n ""note over //FirstPart, LastPart//"". note across: New method with:\n""note across"" Bob->Alice hnote across:Note across all part. @enduml
01-17-1 Several-notes-aligned-at-the-same-level
@startuml note over Alice : initial state of Alice note over Bob : initial state of Bob Bob -> Alice : hello @enduml
01-17-2 Several-notes-aligned-at-the-same-level
@startuml note over Alice : initial state of Alice / note over Bob : initial state of Bob Bob -> Alice : hello @enduml
01-18-1 Creole-and-HTML
@startuml participant Alice participant "The **Famous** Bob" as Bob Alice -> Bob : hello --there-- ... Some ~~long delay~~ ... Bob -> Alice : ok note left This is **bold** This is //italics// This is ""monospaced"" This is --stroked-- This is __underlined__ This is ~~waved~~ end note Alice -> Bob : A //well formatted// message note right of Alice This is <back:cadetblue><size:18>displayed</size></back> __left of__ Alice. end note note left of Bob <u:red>This</u> is <color #118888>displayed</color> **<color purple>left of</color> <s:red>Alice</strike> Bob**. end note note over Alice, Bob <w:#FF33FF>This is hosted</w> by <img sourceforge.jpg> end note @enduml
01-19-1 Divider-or-separator
@startuml == Initialization == Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response == Repetition == Alice -> Bob: Another authentication Request Alice <-- Bob: another authentication Response @enduml
01-20-1 Reference
@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
01-21-1 Delay
@startuml Alice -> Bob: Authentication Request ... Bob --> Alice: Authentication Response ...5 minutes latter... Bob --> Alice: Bye ! @enduml
01-22-1 Text-wrapping
@startuml skinparam maxMessageSize 50 participant a participant b a -> b : this\nis\nmanually\ndone a -> b : this is a very long message on several words @enduml
01-23-1 Space
@startuml Alice -> Bob: message 1 Bob --> Alice: ok ||| Alice -> Bob: message 2 Bob --> Alice: ok ||45|| Alice -> Bob: message 3 Bob --> Alice: ok @enduml
01-24-1 lifeline
@startuml participant User User -> A: DoWork activate A A -> B: << createRequest >> activate B B -> C: DoWork activate C C --> B: WorkDone destroy C B --> A: RequestCreated deactivate B A -> User: Done deactivate A @enduml
01-24-2 lifeline
@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 @endum
01-24-3 lifeline
@startuml autoactivate on alice -> bob : hello bob -> bob : self call bill -> bob #005500 : hello from thread 2 bob -> george ** : create return done in thread 2 return rc bob -> george !! : delete return success @enduml
01-25-1 Return
@startuml Bob -> Alice : hello activate Alice Alice -> Alice : some action return bye @enduml
01-26-1 Participant-creation
@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
01-27-1 Shortcut-syntax-for-activation-deactivation-creation
@startuml alice -> bob ++ : hello bob -> bob ++ : self call bob -> bib ++ #005500 : hello bob -> george ** : create return done return rc bob -> george !! : delete return success @enduml
01-28-1 Incoming-and-outgoing-messages
@startuml [-> A: DoWork activate A A -> A: Internal call activate A A ->] : << createRequest >> A<--] : RequestCreated deactivate A [<- A: Done deactivate A @enduml
01-28-2 Incoming-and-outgoing-messages
@startuml participant Alice participant Bob #lightblue Alice -> Bob Bob -> Carol ... [-> Bob [o-> Bob [o->o Bob [x-> Bob ... [<- Bob [x<- Bob ... Bob ->] Bob ->o] Bob o->o] Bob ->x] ... Bob <-] Bob x<-] @enduml
01-29-1 Short-arrows-for-incoming-and-outgoing-messages
@startuml ?-> Alice : ""?->""\n**short** to actor1 [-> Alice : ""[->""\n**from start** to actor1 [-> Bob : ""[->""\n**from start** to actor2 ?-> Bob : ""?->""\n**short** to actor2 Alice ->] : ""->]""\nfrom actor1 **to end** Alice ->? : ""->?""\n**short** from actor1 Alice -> Bob : ""->"" \nfrom actor1 to actor2 @enduml
01-30-1 Anchors-and-Durations
@startuml !pragma teoz true {start} Alice -> Bob : start doing things during duration Bob -> Max : something Max -> Bob : something else {end} Bob -> Alice : finish {start} <-> {end} : some time @enduml
01-31-1 Stereotypes-and-Spots
@startuml participant "Famous Bob" as Bob << Generated >> participant Alice << (C,#ADD1B2) Testable >> Bob->Alice: First message @enduml
01-31-2 Stereotypes-and-Spots
@startuml skinparam guillemet false participant "Famous Bob" as Bob << Generated >> participant Alice << (C,#ADD1B2) Testable >> Bob->Alice: First message @enduml
01-31-3 Stereotypes-and-Spots
@startuml participant Bob << (C,#ADD1B2) >> participant Alice << (C,#ADD1B2) >> Bob->Alice: First message @enduml
01-32-1 More-information-on-titles
@startuml title __Simple__ **communication** example Alice -> Bob: Authentication Request Bob -> Alice: Authentication Response @enduml
01-32-2 More-information-on-titles
@startuml title __Simple__ communication example\non several lines Alice -> Bob: Authentication Request Bob -> Alice: Authentication Response @enduml
01-32-3 More-information-on-titles
@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
01-33-1 Participants-encompass
@startuml box "Internal Service" #LightBlue participant Bob participant Alice end box participant Other Bob -> Alice : hello Alice -> Other : hello @enduml
01-34-1 Removing-Foot-Boxes
@startuml hide footbox title Footer removed Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response @enduml
01-35-1 Skinparam
@startuml skinparam sequenceArrowThickness 2 skinparam roundcorner 20 skinparam maxmessagesize 60 skinparam sequenceParticipant underline actor User participant "First Class" as A participant "Second Class" as B participant "Last Class" as C User -> A: DoWork activate A A -> B: Create Request activate B B -> C: DoWork activate C C --> B: WorkDone destroy C B --> A: Request Created deactivate B A --> User: Done deactivate A @enduml
01-35-2 Skinparam
@startuml skinparam backgroundColor #EEEBDC skinparam handwritten true skinparam sequence { ArrowColor DeepSkyBlue ActorBorderColor DeepSkyBlue LifeLineBorderColor blue LifeLineBackgroundColor #A9DCDF ParticipantBorderColor DeepSkyBlue ParticipantBackgroundColor DodgerBlue ParticipantFontName Impact ParticipantFontSize 17 ParticipantFontColor #A9DCDF ActorBackgroundColor aqua ActorFontColor DeepSkyBlue ActorFontSize 17 ActorFontName Aapex } actor User participant "First Class" as A participant "Second Class" as B participant "Last Class" as C User -> A: DoWork activate A A -> B: Create Request activate B B -> C: DoWork activate C C --> B: WorkDone destroy C B --> A: Request Created deactivate B A --> User: Done deactivate A @enduml
01-36-1 Changing padding
@startuml skinparam ParticipantPadding 20 skinparam BoxPadding 10 box "Foo1" participant Alice1 participant Alice2 end box box "Foo2" participant Bob1 participant Bob2 end box Alice1 -> Bob1 : hello Alice1 -> Out : out @enduml
02-01-1 Usecase
@startuml (First usecase) (Another usecase) as (UC2) usecase UC3 usecase (Last\nusecase) as UC4 @enduml
02-02-1 Actors
@startuml :First Actor: :Another\nactor: as Men2 actor Men3 actor :Last actor: as Men4 @enduml
02-03-1 Stick-man
@startuml :User: --> (Use) "Main Admin" as Admin "Use the application" as (Use) Admin --> (Admin the application) @enduml
02-03-2 Awesome-man
@startuml skinparam actorStyle awesome :User: --> (Use) "Main Admin" as Admin "Use the application" as (Use) Admin --> (Admin the application) @enduml
02-03-3 Hollow-man
@startuml skinparam actorStyle Hollow :User: --> (Use) "Main Admin" as Admin "Use the application" as (Use) Admin --> (Admin the application) @enduml
02-04-1 Usecases-description
@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
02-05-1 Use-package
@startuml left to right direction actor Guest as g package Professional { actor Chef as c actor "Food Critic" as fc } package Restaurant { usecase "Eat Food" as UC1 usecase "Pay for Food" as UC2 usecase "Drink" as UC3 usecase "Review" as UC4 } fc --> UC4 g --> UC1 g --> UC2 g --> UC3 @enduml
02-05-2 Use-package
@startuml left to right direction actor "Food Critic" as fc rectangle Restaurant { usecase "Eat Food" as UC1 usecase "Pay for Food" as UC2 usecase "Drink" as UC3 } fc --> UC1 fc --> UC2 fc --> UC3 @enduml
02-06-1 Basic-example
@startuml User -> (Start) User --> (Use the application) : A small label :Main Admin: ---> (Use the application) : This is\nyet another\nlabel @enduml
02-07-1 Extension
@startuml :Main Admin: as Admin (Use the application) as (Use) User <|-- Admin (Start) <|-- (Use) @enduml
02-08-1 Using-notes
@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
02-09-1 Stereotypes
@startuml User << Human >> :Main Database: as MySql << Application >> (Start) << One Shot >> (Use the application) as (Use) << Main >> User -> (Start) User --> (Use) MySql --> (Use) @enduml
02-10-1 Changing-arrows-direction
@startuml :user: --> (Use case 1) :user: -> (Use case 2) @enduml
02-10-2 Changing-arrows-direction
@startuml (Use case 1) <.. :user: (Use case 2) <- :user: @enduml
02-10-3 Changing-arrows-direction
@startuml :user: -left-> (dummyLeft) :user: -right-> (dummyRight) :user: -up-> (dummyUp) :user: -down-> (dummyDown) @enduml
02-10-4 Changing-arrows-direction
@startuml left to right direction :user: -left-> (dummyLeft) :user: -right-> (dummyRight) :user: -up-> (dummyUp) :user: -down-> (dummyDown) @enduml
02-11-1 Splitting-diagrams
@startuml :actor1: --> (Usecase1) newpage :actor2: --> (Usecase2) @enduml
02-12-1 Left-to-right-direction
@startuml 'default top to bottom direction user1 --> (Usecase 1) user2 --> (Usecase 2) @enduml
02-12-2 Left-to-right-direction
@startuml left to right direction user1 --> (Usecase 1) user2 --> (Usecase 2) @enduml
02-13-1 Skinparam
@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 >> (Use the application) as (Use) << Main >> User -> (Start) User --> (Use) MySql --> (Use) @enduml
02-14-1 Complete-example
@startuml left to right direction skinparam packageStyle rectangle actor customer actor clerk rectangle checkout { customer -- (checkout) (checkout) .> (payment) : include (help) .> (checkout) : extends (checkout) -- clerk } @enduml
02-15-1 Business-Use-Case
@startuml (First usecase)/ (Another usecase)/ as (UC2) usecase/ UC3 usecase/ (Last\nusecase) as UC4 @enduml
02-15-2 Business-Actor
@startuml :First Actor:/ :Another\nactor:/ as Man2 actor/ Woman3 actor/ :Last actor: as Person1 @enduml
02-16-1 Change-arrow-color-and-style
@startuml actor foo foo --> (bar) : normal foo --> (bar1) #line:red;line.bold;text:red : red bold foo --> (bar2) #green;line.dashed;text:green : green dashed foo --> (bar3) #blue;line.dotted;text:blue : blue dotted @enduml
02-17-1 Change-element-color-and-style
@startuml actor a actor b #pink;line:red;line.bold;text:red usecase c #palegreen;line:green;line.dashed;text:green usecase d #aliceblue;line:blue;line.dotted;text:blue @enduml
03-01-1 Declaring-element
@startuml abstract abstract abstract class "abstract class" annotation annotation circle circle () circle_short_form class class diamond diamond <> diamond_short_form entity entity enum enum interface interface @enduml
03-02-1 Relations-between-classes
@startuml Class01 <|-- Class02 Class03 *-- Class04 Class05 o-- Class06 Class07 .. Class08 Class09 -- Class10 @enduml
03-02-2 Relations-between-classes
@startuml Class11 <|.. Class12 Class13 --> Class14 Class15 ..> Class16 Class17 ..|> Class18 Class19 <--* Class20 @enduml
03-02-3 Relations-between-classes
@startuml Class21 #-- Class22 Class23 x-- Class24 Class25 }-- Class26 Class27 +-- Class28 Class29 ^-- Class30 @enduml
03-03-1 Label-on-relations
@startuml Class01 "1" *-- "many" Class02 : contains Class03 o-- Class04 : aggregation Class05 --> "1" Class06 @enduml
03-03-2 Label-on-relations
@startuml class Car Driver - Car : drives > Car *- Wheel : have 4 > Car -- Person : < owns @enduml
03-04-1 Adding-methods
@startuml Object <|-- ArrayList Object : equals() ArrayList : Object[] elementData ArrayList : size() @enduml
03-04-2 Adding-methods
@startuml class Dummy { String data void methods() } class Flight { flightNumber : Integer departureTime : Date } @enduml
03-04-3 Adding-methods
@startuml class Dummy { {field} A field (despite parentheses) {method} Some method } @enduml
03-05-1 Defining-visibility
@startuml class Dummy { -field1 #field2 ~method1() +method2() } @enduml
03-05-2 Defining-visibility
@startuml skinparam classAttributeIconSize 0 class Dummy { -field1 #field2 ~method1() +method2() } @enduml
03-06-1 Abstract-and-Static
@startuml class Dummy { {static} String id {abstract} void methods() } @enduml
03-07-1 Advanced-class-body
@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
03-08-1 Notes-and-stereotypes
@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
03-09-1 More-on-notes
@startuml class Foo note left: On last defined class class Object 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
03-10-1 Note-on-field-or-method
@startuml class A { {static} int counter +void {abstract} start(int timeout) } note right of A::counter This member is annotated end note note right of A::start This method is now explained in a UML note end note @enduml
03-10-2 Note-on-method-with-the-same-name
@startuml class A { {static} int counter +void {abstract} start(int timeoutms) +void {abstract} start(Duration timeout) } note left of A::counter This member is annotated end note note right of A::"start(int timeoutms)" This method with int end note note right of A::"start(Duration timeout)" This method with Duration end note @enduml
03-11-1 Note-on-links
@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
03-12-1 Abstract-class-and-interface
@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
03-13-1 Using-non-letters
@startuml class "This is my class" as class1 class class2 as "It works this way too" class2 *-- "foo/dummy" : use @enduml
03-14-1 Hide-attributes-methods
@startuml class Dummy1 { +myMethods() } class Dummy2 { +hiddenMethod() } class Dummy3 <<Serializable>> { String name } hide members hide <<Serializable>> circle show Dummy1 methods show <<Serializable>> fields @enduml
03-15-1 Hide-classes
@startuml class Foo1 class Foo2 Foo2 *-- Foo1 hide Foo2 @enduml
03-16-1 Remove-classes
@startuml class Foo1 class Foo2 Foo2 *-- Foo1 remove Foo2 @enduml
03-17-1 Hide-or-Remove-unlinked-class
@startuml class C1 class C2 class C3 C1 -- C2 @enduml
03-17-2 Hide-or-Remove-unlinked-class
@startuml class C1 class C2 class C3 C1 -- C2 hide @unlinked @enduml
03-17-3 Hide-or-Remove-unlinked-class
@startuml class C1 class C2 class C3 C1 -- C2 remove @unlinked @enduml
03-18-1 Use-generics
@startuml class Foo<? extends Element> { int size() } Foo *- Element @enduml
03-19-1 Specific-Spot
@startuml class System << (S,#FF7700) Singleton >> class Date << (D,orchid) >> @enduml
03-20-1 Packages
@startuml package "Classic Collections" #DDDDDD { Object <|-- ArrayList } package net.sourceforge.plantuml { Object <|-- Demo1 Demo1 *- Demo2 } @enduml
03-21-1 Packages-style
@startuml scale 750 width package foo1 <<Node>> { class Class1 } package foo2 <<Rectangle>> { class Class2 } package foo3 <<Folder>> { class Class3 } package foo4 <<Frame>> { class Class4 } package foo5 <<Cloud>> { class Class5 } package foo6 <<Database>> { class Class6 } @enduml
03-21-2 Packages-style
@startuml skinparam packageStyle rectangle package foo1.foo2 { } package foo1.foo2.foo3 { class Object } foo1.foo2 +-- foo1.foo2.foo3 @enduml
03-22-1 Namespaces
@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
03-23-1 Automatic-namespace-creation
@startuml set namespaceSeparator :: class X1::X2::foo { some info } @enduml
03-23-2 Automatic-namespace-creation
@startuml set namespaceSeparator none class X1.X2.foo { some info } @enduml
03-24-1 Lollipop-interface
@startuml class foo bar ()- foo @enduml
03-25-1 Changing-arrows-direction
@startuml Room o- Student Room *-- Chair @enduml
03-25-2 Changing-arrows-direction
@startuml Student -o Room Chair --* Room @enduml
03-25-3 Changing-arrows-direction
@startuml foo -left-> dummyLeft foo -right-> dummyRight foo -up-> dummyUp foo -down-> dummyDown @enduml
03-25-4 Changing-arrows-direction
@startuml left to right direction foo -left-> dummyLeft foo -right-> dummyRight foo -up-> dummyUp foo -down-> dummyDown @enduml
03-26-1 Association-classes
@startuml class Student { Name } Student "0..*" - "1..*" Course (Student, Course) .. Enrollment class Enrollment { drop() cancel() } @enduml
03-26-2 Association-classes
@startuml class Student { Name } Student "0..*" -- "1..*" Course (Student, Course) . Enrollment class Enrollment { drop() cancel() } @enduml
03-27-1 Association-on-same-classe
@startuml class Station { +name: string } class StationCrossing { +cost: TimeInterval } <> diamond StationCrossing . diamond diamond - "from 0..*" Station diamond - "to 0..* " Station @enduml
03-28-1 Skinparam
@startuml skinparam class { BackgroundColor PaleGreen ArrowColor SeaGreen BorderColor SpringGreen } skinparam stereotypeCBackgroundColor YellowGreen Class01 "1" *-- "many" Class02 : contains Class03 o-- Class04 : aggregation @enduml
03-29-1 Skinned-Stereotypes
@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
03-30-1 Color-gradient
@startuml skinparam backgroundcolor AntiqueWhite/Gold skinparam classBackgroundColor Wheat|CornflowerBlue class Foo #red-green note left of Foo #blue\9932CC this is my note on this class end note package example #GreenYellow/LightGoldenRodYellow { class Dummy } @enduml
03-31-1 Help-on-layout
@startuml class Bar1 class Bar2 together { class Together1 class Together2 class Together3 } Together1 - Together2 Together2 - Together3 Together2 -[hidden]--> Bar1 Bar1 -[hidden]> Bar2 @enduml
03-32-1 Splitting-large-files
@startuml ' Split into 4 pages page 2x2 skinparam pageMargin 10 skinparam pageExternalColor gray skinparam pageBorderColor black 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
03-33-1 Extends-and-implements
@startuml class ArrayList implements List class ArrayList extends AbstractList @enduml
03-34-01-1 Bracketed-relations-style-Line-style
@startuml title Bracketed line style without label class foo class bar bar1 : [bold] bar2 : [dashed] bar3 : [dotted] bar4 : [hidden] bar5 : [plain] foo --> bar foo -[bold]-> bar1 foo -[dashed]-> bar2 foo -[dotted]-> bar3 foo -[hidden]-> bar4 foo -[plain]-> bar5 @enduml
03-34-01-2 Bracketed-relations-style-Line-style
@startuml title Bracketed line style with label class foo class bar bar1 : [bold] bar2 : [dashed] bar3 : [dotted] bar4 : [hidden] bar5 : [plain] foo --> bar : ? foo -[bold]-> bar1 : [bold] foo -[dashed]-> bar2 : [dashed] foo -[dotted]-> bar3 : [dotted] foo -[hidden]-> bar4 : [hidden] foo -[plain]-> bar5 : [plain] @enduml
03-34-02-1 Bracketed-relations-style-Line-color
@startuml title Bracketed line color class foo class bar bar1 : [#red] bar2 : [#green] bar3 : [#blue] foo --> bar foo -[#red]-> bar1 : [#red] foo -[#green]-> bar2 : [#green] foo -[#blue]-> bar3 : [#blue] 'foo -[#blue;#yellow;#green]-> bar4 @enduml
03-34-03-1 Bracketed-relations-style-Line-thickness
@startuml title Bracketed line thickness class foo class bar bar1 : [thickness=1] bar2 : [thickness=2] bar3 : [thickness=4] bar4 : [thickness=8] bar5 : [thickness=16] foo --> bar : ∅ foo -[thickness=1]-> bar1 : [1] foo -[thickness=2]-> bar2 : [2] foo -[thickness=4]-> bar3 : [4] foo -[thickness=8]-> bar4 : [8] foo -[thickness=16]-> bar5 : [16] @enduml
03-34-04-1 Bracketed-relations-style-Mix
@startuml title Bracketed line style mix class foo class bar bar1 : [#red,thickness=1] bar2 : [#red,dashed,thickness=2] bar3 : [#green,dashed,thickness=4] bar4 : [#blue,dotted,thickness=8] bar5 : [#blue,plain,thickness=16] foo --> bar : ∅ foo -[#red,thickness=1]-> bar1 : [#red,1] foo -[#red,dashed,thickness=2]-> bar2 : [#red,dashed,2] foo -[#green,dashed,thickness=4]-> bar3 : [#green,dashed,4] foo -[#blue,dotted,thickness=8]-> bar4 : [blue,dotted,8] foo -[#blue,plain,thickness=16]-> bar5 : [blue,plain,16] @enduml
03-35-1 Change-relation-color-and-style
@startuml class foo foo --> bar : normal foo --> bar1 #line:red;line.bold;text:red : red bold foo --> bar2 #green;line.dashed;text:green : green dashed foo --> bar3 #blue;line.dotted;text:blue : blue dotted @enduml
03-36-1 Change-class-color-and-style
@startuml abstract abstract annotation annotation #pink;line:red;line.bold;text:red class class #palegreen;line:green;line.dashed;text:green interface interface #aliceblue;line:blue;line.dotted;text:blue @enduml
03-36-2 Change-class-color-and-style
@startuml class bar #line:green;back:lightblue class bar2 #lightblue;line:green class Foo1 #back:red;line:00FFFF class FooDashed #line.dashed:blue class FooDotted #line.dotted:blue class FooBold #line.bold class Demo1 #back:lightgreen|yellow;header:blue/red @enduml
03-37-1 Arrows-fromto-class-members
@startuml class Foo { + field1 + field2 } class Bar { + field3 + field4 } Foo::field1 --> Bar::field3 : foo Foo::field2 --> Bar::field4 : bar @enduml
03-37-2 Arrows-fromto-class-members
@startuml left to right direction class User { id : INTEGER .. other_id : INTEGER } class Email { id : INTEGER .. user_id : INTEGER address : INTEGER } User::id *-- Email::user_id @enduml
04-01-1 Definition-of-objects
@startuml object firstObject object "My Second Object" as o2 @enduml
04-02-1 Relations-between-objects
@startuml object Object01 object Object02 object Object03 object Object04 object Object05 object Object06 object Object07 object Object08 Object01 <|-- Object02 Object03 *-- Object04 Object05 o-- "4" Object06 Object07 .. Object08 : some labels @enduml
04-03-1 Associations-objects
@startuml object o1 object o2 diamond dia object o3 o1 --> dia o2 --> dia dia --> o3 @enduml
04-04-1 Adding-fields
@startuml object user user : name = "Dummy" user : id = 123 @enduml
04-04-2 Adding-fields
@startuml object user { name = "Dummy" id = 123 } @enduml
04-06-1 Map-table-or-associative-array
@startuml map CapitalCity { UK => London USA => Washington Germany => Berlin } @enduml
04-06-2 Map-table-or-associative-array
@startuml map "Map **Contry => CapitalCity**" as CC { UK => London USA => Washington Germany => Berlin } @enduml
04-06-3 Map-table-or-associative-array
@startuml map "map: Map<Integer, String>" as users { 1 => Alice 2 => Bob 3 => Charlie } @enduml
04-06-4 Map-table-or-associative-array
@startuml object London map CapitalCity { UK *-> London USA => Washington Germany => Berlin } @enduml
04-06-5 Map-table-or-associative-array
@startuml object London object Washington object Berlin object NewYork map CapitalCity { UK *-> London USA *--> Washington Germany *---> Berlin } NewYork --> CapitalCity::USA @enduml
05-01-1 Simple-Action
@startuml (*) --> "First Action" "First Action" --> (*) @enduml
05-02-1 Label-on-arrows
@startuml (*) --> "First Action" -->[You can put also labels] "Second Action" --> (*) @enduml
05-03-1 Changing-arrow-direction
@startuml (*) -up-> "First Action" -right-> "Second Action" --> "Third Action" -left-> (*) @enduml
05-04-1 Branches
@startuml (*) --> "Initialization" if "Some Test" then -->[true] "Some Action" --> "Another Action" -right-> (*) else ->[false] "Something else" -->[Ending process] (*) endif @enduml
05-04-2 Branches
@startuml (*) --> "check input" If "input is verbose" then --> [Yes] "turn on verbosity" --> "run command" else --> "run command" Endif -->(*) @enduml
05-05-1 More-on-Branches
@startuml (*) --> if "Some Test" then -->[true] "action 1" if "" then -> "action 3" as a3 else if "Other test" then -left-> "action 5" else --> "action 6" endif endif else ->[false] "action 2" endif a3 --> if "last test" then --> "action 7" else -> "action 8" endif @enduml
05-06-1 Synchronization
@startuml (*) --> ===B1=== --> "Parallel Action 1" --> ===B2=== ===B1=== --> "Parallel Action 2" --> ===B2=== --> (*) @enduml
05-07-1 Long-action-description
@startuml (*) -left-> "this <size:20>action</size> is <b>very</b> <color:red>long2</color> and defined on several lines that contains many <i>text</i>" as A1 -up-> "Another action\n on several lines" A1 --> "Short action <img:sourceforge.jpg>" @enduml
05-08-1 Notes
@startuml (*) --> "Some action" note right: This action has to be defined "Some action" --> (*) note left This note is on several lines end note @enduml
05-09-1 Partition
@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
05-10-1 Skinparam
@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
05-11-1 Octagon
@startuml 'Default is skinparam activityShape roundBox skinparam activityShape octagon (*) --> "First Action" "First Action" --> (*) @enduml
05-12-1 Complete-example
@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=== 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
06-01-1 Simple-action
@startuml :Hello world; :This is on defined on several **lines**; @enduml
06-02-1 Start-Stop-End
@startuml start :Hello world; :This is on defined on several **lines**; stop @enduml
06-02-2 Start-Stop-End
@startuml start :Hello world; :This is on defined on several **lines**; end @enduml
06-03-01-1 Conditional-Several-tests-horizontal-mode
@startuml start if (condition A) then (yes) :Text 1; elseif (condition B) then (yes) :Text 2; stop elseif (condition C) then (yes) :Text 3; elseif (condition D) then (yes) :Text 4; else (nothing) :Text else; endif stop @enduml
06-03-01-2 Conditional-Several-tests-vertical-mode
@startuml !pragma useVerticalIf on start if (condition A) then (yes) :Text 1; elseif (condition B) then (yes) :Text 2; stop elseif (condition C) then (yes) :Text 3; elseif (condition D) then (yes) :Text 4; else (nothing) :Text else; endif stop @enduml
06-03-1 Conditional
@startuml start if (Graphviz installed?) then (yes) :process all\ndiagrams; else (no) :process only __sequence__ and __activity__ diagrams; endif stop @enduml
06-03-2 Conditional
@startuml if (color?) is (<color:red>red) then :print red; else :print not red; @enduml
06-03-3 Conditional
@startuml if (counter?) equals (5) then :print 5; else :print not 5; @enduml
06-04-1 Conditional-with-stop-on-an-action
@startuml if (condition?) then :error; stop endif #palegreen:action; @enduml
06-04-2 Conditional-with-stop-on-an-action
@startuml if (condition?) then #pink:error; kill endif #palegreen:action; @enduml
06-04-3 Conditional-with-stop-on-an-action
@startuml if (condition?) then #pink:error; detach endif #palegreen:action; @enduml
06-05-1 Repeat-loop
@startuml start repeat :read data; :generate diagrams; repeat while (more data?) is (yes) ->no; stop @enduml
06-05-2 Repeat-loop
@startuml start repeat :read data; :generate diagrams; repeat while (more data?) stop @enduml
06-06-1 Break-on-a-repeat-loop
@startuml start repeat :Test something; if (Something went wrong?) then (no) #palegreen:OK; break endif ->NOK; :Alert "Error with long text"; repeat while (Something went wrong with long text?) is (yes) not (no) ->//merged step//; :Alert "Sucess"; stop @endum
06-07-1 While-loop
@startuml start while (data available?) :read data; :generate diagrams; endwhile stop @enduml
06-07-2 While-loop
@startuml while (check filesize ?) is (not empty) :read file; endwhile (empty) :close file; @enduml
06-08-1 Parallel-processing
@startuml start if (multiprocessor?) then (yes) fork :Treatment 1; fork again :Treatment 2; end fork else (monoproc) :Treatment 1; :Treatment 2; endif @enduml
06-09-01-1 Split-processing
@startuml start split :A; split again :B; split again :C; split again :a; :b; end split :D; end @enduml
06-09-02-1 Split-processing
@startuml split -[hidden]-> :A; split again -[hidden]-> :B; split again -[hidden]-> :C; end split :D; @enduml
06-09-02-2 Split-processing
@startuml split -[hidden]-> :A; split again -[hidden]-> :a; :b; split again -[hidden]-> (Z) end split :D; @enduml
06-09-03-1 Split-processing
@startuml start split :A; kill split again :B; detach split again :C; kill end split @enduml
06-09-03-2 Split-processing
@startuml start split :A; kill split again :b; :c; detach split again (Z) detach split again end split again stop end split @enduml
06-10-1 Notes
@startuml start :foo1; floating 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
06-10-2 Notes
@startuml start repeat :Enter data; :Submit; backward :Warning; note right: Note repeat while (Valid?) is (No) not (Yes) stop @enduml
06-11-1 Colors
@startuml start :starting progress; #HotPink:reading configuration files These files should edited at this point!; #AAAAAA:ending of the process; @enduml
06-12-1 Lines-without-arrows
@startuml skinparam ArrowHeadColor none start :Hello world; :This is on defined on several **lines**; stop @enduml
06-12-2 Lines-without-arrows
@startuml skinparam ArrowHeadColor none start repeat :Enter data; :Submit; backward :Warning; repeat while (Valid?) is (No) not (Yes) stop @enduml
06-13-1 Arrows
@startuml :foo1; -> You can put text on arrows; if (test) then -[#blue]-> :foo2; -[#green,dashed]-> The text can also be on several lines and **very** long...; :foo3; else -[#black,dotted]-> :foo4; endif -[#gray,bold]-> :foo5; @enduml
06-14-1 Connector
@startuml start :Some activity; (A) detach (A) :Other activity; @enduml
06-15-1 Color-on-connector
@startuml start :The connector below wishes he was blue; #blue:(B) :This next connector feels that she would be better off green; #green:(G) stop @enduml
06-16-1 Grouping-or-partition
@startuml start partition Initialization { :read config file; :init internal variable; } partition Running { :wait for user interaction; :print information; } stop @enduml
06-17-1 Swimlanes
@startuml |Swimlane1| start :foo1; |#AntiqueWhite|Swimlane2| :foo2; :foo3; |Swimlane1| :foo4; |Swimlane2| :foo5; stop @enduml
06-17-2 Swimlanes
@startuml |#pink|Actor_For_red| start if (color?) is (red) then #pink:**action red**; :foo1; else (not red) |#lightgray|Actor_For_no_red| #lightgray:**action not red**; :foo2; endif |Next_Actor| #lightblue:foo3; :foo4; |Final_Actor| #palegreen:foo5; stop @enduml
06-18-1 Detach-or-kill
@startuml :start; fork :foo1; :foo2; fork again :foo3; detach endfork if (foo4) then :foo5; detach endif :foo6; detach :foo7; stop @enduml
06-18-2 Detach-or-kill
@startuml :start; fork :foo1; :foo2; fork again :foo3; kill endfork if (foo4) then :foo5; kill endif :foo6; kill :foo7; stop @enduml
06-19-1 SDL
@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
06-20-1 Complete-example
@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(); 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
06-21-01-1 Condition-Style
@startuml skinparam conditionStyle inside start repeat :act1; :act2; repeatwhile (<b>end) :act3; @enduml
06-21-01-2 Condition-Style
@startuml start repeat :act1; :act2; repeatwhile (<b>end) :act3; @enduml
06-21-02-1 Condition-Style
@startuml skinparam conditionStyle diamond start repeat :act1; :act2; repeatwhile (<b>end) :act3; @enduml
06-21-03-1 Condition-Style
@startuml skinparam conditionStyle InsideDiamond start repeat :act1; :act2; repeatwhile (<b>end) :act3; @enduml
06-21-03-2 Condition-Style
@startuml skinparam conditionStyle foo1 start repeat :act1; :act2; repeatwhile (<b>end) :act3; @enduml
06-22-01-1 Condition-End-Style
@startuml skinparam ConditionEndStyle diamond :A; if (decision) then (yes) :B1; else (no) endif :C; @enduml
06-22-01-2 Condition-End-Style
@startuml skinparam ConditionEndStyle diamond :A; if (decision) then (yes) :B1; else (no) :B2; endif :C; @enduml
06-22-02-1 Condition-End-Style
@startuml skinparam ConditionEndStyle hline :A; if (decision) then (yes) :B1; else (no) endif :C; @enduml
06-22-02-2 Condition-End-Style
@startuml skinparam ConditionEndStyle hline :A; if (decision) then (yes) :B1; else (no) :B2; endif :C; @enduml
07-01-1 Components
@startuml [First component] [Another component] as Comp2 component Comp3 component [Last\ncomponent] as Comp4 @enduml
07-02-1 Interfaces
@startuml () "First Interface" () "Another interface" as Interf2 interface Interf3 interface "Last\ninterface" as Interf4 @enduml
07-03-1 Basic-example
@startuml DataAccess - [First Component] [First Component] ..> HTTP : use @enduml
07-04-1 Using-notes
@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
07-05-1 Grouping-Components
@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
07-06-1 Changing-arrows-direction
@startuml [Component] --> Interface1 [Component] -> Interface2 @enduml
07-06-2 Changing-arrows-direction
@startuml Interface1 <-- [Component] Interface2 <- [Component] @enduml
07-06-3 Changing-arrows-direction
@startuml [Component] -left-> left [Component] -right-> right [Component] -up-> up [Component] -down-> down @enduml
07-06-4 Changing-arrows-direction
@startuml left to right direction [Component] -left-> left [Component] -right-> right [Component] -up-> up [Component] -down-> down @enduml
07-07-1 Use-UML2-notation
@startuml interface "Data Access" as DA DA - [First Component] [First Component] ..> HTTP : use @enduml
07-08-1 Use-UML1-notation
@startuml skinparam componentStyle uml1 interface "Data Access" as DA DA - [First Component] [First Component] ..> HTTP : use @enduml
07-09-1 Use-rectangle-notation
@startuml skinparam componentStyle rectangle interface "Data Access" as DA DA - [First Component] [First Component] ..> HTTP : use @enduml
07-10-1 Long description
@startuml component comp1 [ This component has a long comment on several lines ] @enduml
07-11-1 Individual-colors
@startuml component [Web Server] #Yellow @enduml
07-12-1 Using-Sprite-in-Stereotype
@startuml sprite $businessProcess [16x16/16] { FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFF0FFFFF FFFFFFFFFF00FFFF FF00000000000FFF FF000000000000FF FF00000000000FFF FFFFFFFFFF00FFFF FFFFFFFFFF0FFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF } rectangle " End to End\nbusiness process" <<$businessProcess>> { rectangle "inner process 1" <<$businessProcess>> as src rectangle "inner process 2" <<$businessProcess>> as tgt src -> tgt } @enduml
07-13-1 Skinparam
@startuml skinparam interface { backgroundColor RosyBrown borderColor orange } skinparam component { FontSize 13 BackgroundColor<<Apache>> Red BorderColor<<Apache>> #FF6655 FontName Courier BorderColor black BackgroundColor gold ArrowFontName Impact ArrowColor #FF6655 ArrowFontColor #777777 } () "Data Access" as DA DA - [First Component] [First Component] ..> () HTTP : use HTTP - [Web Server] << Apache >> @enduml
07-13-2 Skinparam
@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
07-14-01-1 componentStyle
@startuml skinparam BackgroundColor transparent skinparam componentStyle uml2 component A { component "A.1" { } component A.44 { [A4.1] } component "A.2" [A.3] component A.5 [ A.5] component A.6 [ ] } [a]->[b] @enduml
07-14-01-2 componentStyle
@startuml skinparam BackgroundColor transparent skinparam componentStyle rectangle component A { component "A.1" { } component A.44 { [A4.1] } component "A.2" [A.3] component A.5 [ A.5] component A.6 [ ] } [a]->[b] @enduml
07-15-1 Hide-or-Remove-unlinked-component
@startuml component C1 component C2 component C3 C1 -- C2 @enduml
07-15-2 Hide-or-Remove-unlinked-component
@startuml component C1 component C2 component C3 C1 -- C2 hide @unlinked @enduml
07-15-3 Hide-or-Remove-unlinked-component
@startuml component C1 component C2 component C3 C1 -- C2 remove @unlinked @enduml
08-01-1 Declaring-element
@startuml actor actor actor/ "actor/" agent agent artifact artifact boundary boundary card card circle circle cloud cloud collections collections component component control control database database entity entity file file folder folder frame frame hexagon hexagon interface interface label label node node package package queue queue rectangle rectangle stack stack storage storage usecase usecase usecase/ "usecase/" @enduml
08-01-2 Declaring-element
@startuml folder folder [ This is a <b>folder ---- You can use separator ==== of different kind .... and style ] node node [ This is a <b>node ---- You can use separator ==== of different kind .... and style ] database database [ This is a <b>database ---- You can use separator ==== of different kind .... and style ] usecase usecase [ This is a <b>usecase ---- You can use separator ==== of different kind .... and style ] card card [ This is a <b>card ---- You can use separator ==== of different kind .... and style <i><color:blue>(add from V1.2020.7)</color></i> ] @enduml
08-02-01-1 Declaring-element-Actor
@startuml actor actor1 :actor2: @enduml
08-02-02-1 Declaring-element-Component
@startuml component component1 [component2] @enduml
08-02-03-1 Declaring-element-Interface
@startuml interface interface1 () "interface2" label "//interface example//" @enduml
08-02-04-1 Declaring-element-Usecase
@startuml usecase usecase1 (usecase2) @enduml
08-03-1 Linking-or-arrow
@startuml node node1 node node2 node node3 node node4 node node5 node1 -- node2 : label1 node1 .. node3 : label2 node1 ~~ node4 : label3 node1 == node5 @enduml
08-03-2 Linking-or-arrow
@startuml artifact artifact1 artifact artifact2 artifact artifact3 artifact artifact4 artifact artifact5 artifact artifact6 artifact artifact7 artifact artifact8 artifact artifact9 artifact artifact10 artifact1 --> artifact2 artifact1 --* artifact3 artifact1 --o artifact4 artifact1 --+ artifact5 artifact1 --# artifact6 artifact1 -->> artifact7 artifact1 --0 artifact8 artifact1 --^ artifact9 artifact1 --(0 artifact10 @enduml
08-03-3 Linking-or-arrow
@startuml cloud cloud1 cloud cloud2 cloud cloud3 cloud cloud4 cloud cloud5 cloud1 -0- cloud2 cloud1 -0)- cloud3 cloud1 -(0- cloud4 cloud1 -(0)- cloud5 @enduml
08-03-4 Linking-or-arrow
@startuml actor foo1 actor foo2 foo1 <-0-> foo2 foo1 <-(0)-> foo2 (ac1) -le(0)-> left1 ac1 -ri(0)-> right1 ac1 .up(0).> up1 ac1 ~up(0)~> up2 ac1 -do(0)-> down1 ac1 -do(0)-> down2 actor1 -0)- actor2 component comp1 component comp2 comp1 *-0)-+ comp2 [comp3] <-->> [comp4] @enduml
08-04-01-1 Bracketed-arrow-style-Line-style
@startuml node foo title Bracketed line style without label foo --> bar foo -[bold]-> bar1 foo -[dashed]-> bar2 foo -[dotted]-> bar3 foo -[hidden]-> bar4 foo -[plain]-> bar5 @enduml
08-04-01-2 Bracketed-arrow-style-Line-style
@startuml title Bracketed line style with label node foo foo --> bar : ? foo -[bold]-> bar1 : [bold] foo -[dashed]-> bar2 : [dashed] foo -[dotted]-> bar3 : [dotted] foo -[hidden]-> bar4 : [hidden] foo -[plain]-> bar5 : [plain] @enduml
08-04-02-1 Bracketed-arrow-style-Line-color
@startuml title Bracketed line color node foo foo --> bar foo -[#red]-> bar1 : [#red] foo -[#green]-> bar2 : [#green] foo -[#blue]-> bar3 : [#blue] foo -[#blue;#yellow;#green]-> bar4 @enduml
08-04-03-1 Bracketed-arrow-style-Line-thickness
@startuml title Bracketed line thickness node foo foo --> bar : ? foo -[thickness=1]-> bar1 : [1] foo -[thickness=2]-> bar2 : [2] foo -[thickness=4]-> bar3 : [4] foo -[thickness=8]-> bar4 : [8] foo -[thickness=16]-> bar5 : [16] @enduml
08-04-04-1 Bracketed-arrow-style-Mix
@startuml title Bracketed line style mix node foo foo --> bar : ? foo -[#red,thickness=1]-> bar1 : [#red,1] foo -[#red,dashed,thickness=2]-> bar2 : [#red,dashed,2] foo -[#green,dashed,thickness=4]-> bar3 : [#green,dashed,4] foo -[#blue,dotted,thickness=8]-> bar4 : [blue,dotted,8] foo -[#blue,plain,thickness=16]-> bar5 : [blue,plain,16] foo -[#blue;#green,dashed,thickness=4]-> bar6 : [blue;green,dashed,4] @enduml
08-05-1 Change-arrow-color-and-style
@startuml node foo foo --> bar : normal foo --> bar1 #line:red;line.bold;text:red : red bold foo --> bar2 #green;line.dashed;text:green : green dashed foo --> bar3 #blue;line.dotted;text:blue : blue dotted @enduml
08-06-1 Change-element-color-and-style
@startuml agent a cloud c #pink;line:red;line.bold;text:red file f #palegreen;line:green;line.dashed;text:green node n #aliceblue;line:blue;line.dotted;text:blue @enduml
08-06-2 Change-element-color-and-style
@startuml agent a cloud c #pink;line:red;line.bold;text:red [ c cloud description ] file f #palegreen;line:green;line.dashed;text:green { [c1] [c2] } frame frame { node n #aliceblue;line:blue;line.dotted;text:blue } @enduml
08-07-1 Nestable-elements
@startuml artifact artifact { } card card { } cloud cloud { } component component { } database database { } file file { } folder folder { } frame frame { } hexagon hexagon { } node node { } package package { } queue queue { } rectangle rectangle { } stack stack { } storage storage { } @enduml
08-08-01-1 Example-with-one-level
@startuml artifact artifactVeryLOOOOOOOOOOOOOOOOOOOg as "artifact" { file f1 } card cardVeryLOOOOOOOOOOOOOOOOOOOg as "card" { file f2 } cloud cloudVeryLOOOOOOOOOOOOOOOOOOOg as "cloud" { file f3 } component componentVeryLOOOOOOOOOOOOOOOOOOOg as "component" { file f4 } database databaseVeryLOOOOOOOOOOOOOOOOOOOg as "database" { file f5 } file fileVeryLOOOOOOOOOOOOOOOOOOOg as "file" { file f6 } folder folderVeryLOOOOOOOOOOOOOOOOOOOg as "folder" { file f7 } frame frameVeryLOOOOOOOOOOOOOOOOOOOg as "frame" { file f8 } hexagon hexagonVeryLOOOOOOOOOOOOOOOOOOOg as "hexagon" { file f9 } node nodeVeryLOOOOOOOOOOOOOOOOOOOg as "node" { file f10 } package packageVeryLOOOOOOOOOOOOOOOOOOOg as "package" { file f11 } queue queueVeryLOOOOOOOOOOOOOOOOOOOg as "queue" { file f12 } rectangle rectangleVeryLOOOOOOOOOOOOOOOOOOOg as "rectangle" { file f13 } stack stackVeryLOOOOOOOOOOOOOOOOOOOg as "stack" { file f14 } storage storageVeryLOOOOOOOOOOOOOOOOOOOg as "storage" { file f15 } @enduml
08-08-02-1 Other-example
@startuml artifact Foo1 { folder Foo2 } folder Foo3 { artifact Foo4 } frame Foo5 { database Foo6 } cloud vpc { node ec2 { stack stack } } @enduml
08-08-02-2 Other-example
@startuml node Foo1 { cloud Foo2 } cloud Foo3 { frame Foo4 } database Foo5 { storage Foo6 } storage Foo7 { storage Foo8 } @enduml
08-08-03-1 Full-nesting
@startuml artifact artifact { card card { cloud cloud { component component { database database { file file { folder folder { frame frame { hexagon hexagon { node node { package package { queue queue { rectangle rectangle { stack stack { storage storage { } } } } } } } } } } } } } } } @enduml
08-08-03-2 Full-nesting
@startuml storage storage { stack stack { rectangle rectangle { queue queue { package package { node node { hexagon hexagon { frame frame { folder folder { file file { database database { component component { cloud cloud { card card { artifact artifact { } } } } } } } } } } } } } } } @enduml
08-09-01-1 Simple-alias-with-as
@startuml node Node1 as n1 node "Node 2" as n2 file f1 as "File 1" cloud c1 as "this is a cloud" cloud c2 [this is another cloud] n1 -> n2 n1 --> f1 f1 -> c1 c1 -> c2 @enduml
08-09-02-1 Examples-of-long-alias
@startuml actor "actor" as actorVeryLOOOOOOOOOOOOOOOOOOOg agent "agent" as agentVeryLOOOOOOOOOOOOOOOOOOOg artifact "artifact" as artifactVeryLOOOOOOOOOOOOOOOOOOOg boundary "boundary" as boundaryVeryLOOOOOOOOOOOOOOOOOOOg card "card" as cardVeryLOOOOOOOOOOOOOOOOOOOg cloud "cloud" as cloudVeryLOOOOOOOOOOOOOOOOOOOg collections "collections" as collectionsVeryLOOOOOOOOOOOOOOOOOOOg component "component" as componentVeryLOOOOOOOOOOOOOOOOOOOg control "control" as controlVeryLOOOOOOOOOOOOOOOOOOOg database "database" as databaseVeryLOOOOOOOOOOOOOOOOOOOg entity "entity" as entityVeryLOOOOOOOOOOOOOOOOOOOg file "file" as fileVeryLOOOOOOOOOOOOOOOOOOOg folder "folder" as folderVeryLOOOOOOOOOOOOOOOOOOOg frame "frame" as frameVeryLOOOOOOOOOOOOOOOOOOOg hexagon "hexagon" as hexagonVeryLOOOOOOOOOOOOOOOOOOOg interface "interface" as interfaceVeryLOOOOOOOOOOOOOOOOOOOg label "label" as labelVeryLOOOOOOOOOOOOOOOOOOOg node "node" as nodeVeryLOOOOOOOOOOOOOOOOOOOg package "package" as packageVeryLOOOOOOOOOOOOOOOOOOOg queue "queue" as queueVeryLOOOOOOOOOOOOOOOOOOOg stack "stack" as stackVeryLOOOOOOOOOOOOOOOOOOOg rectangle "rectangle" as rectangleVeryLOOOOOOOOOOOOOOOOOOOg storage "storage" as storageVeryLOOOOOOOOOOOOOOOOOOOg usecase "usecase" as usecaseVeryLOOOOOOOOOOOOOOOOOOOg @enduml
08-09-02-2 Examples-of-long-alias
@startuml actor actorVeryLOOOOOOOOOOOOOOOOOOOg as "actor" agent agentVeryLOOOOOOOOOOOOOOOOOOOg as "agent" artifact artifactVeryLOOOOOOOOOOOOOOOOOOOg as "artifact" boundary boundaryVeryLOOOOOOOOOOOOOOOOOOOg as "boundary" card cardVeryLOOOOOOOOOOOOOOOOOOOg as "card" cloud cloudVeryLOOOOOOOOOOOOOOOOOOOg as "cloud" collections collectionsVeryLOOOOOOOOOOOOOOOOOOOg as "collections" component componentVeryLOOOOOOOOOOOOOOOOOOOg as "component" control controlVeryLOOOOOOOOOOOOOOOOOOOg as "control" database databaseVeryLOOOOOOOOOOOOOOOOOOOg as "database" entity entityVeryLOOOOOOOOOOOOOOOOOOOg as "entity" file fileVeryLOOOOOOOOOOOOOOOOOOOg as "file" folder folderVeryLOOOOOOOOOOOOOOOOOOOg as "folder" frame frameVeryLOOOOOOOOOOOOOOOOOOOg as "frame" hexagon hexagonVeryLOOOOOOOOOOOOOOOOOOOg as "hexagon" interface interfaceVeryLOOOOOOOOOOOOOOOOOOOg as "interface" label labelVeryLOOOOOOOOOOOOOOOOOOOg as "label" node nodeVeryLOOOOOOOOOOOOOOOOOOOg as "node" package packageVeryLOOOOOOOOOOOOOOOOOOOg as "package" queue queueVeryLOOOOOOOOOOOOOOOOOOOg as "queue" stack stackVeryLOOOOOOOOOOOOOOOOOOOg as "stack" rectangle rectangleVeryLOOOOOOOOOOOOOOOOOOOg as "rectangle" storage storageVeryLOOOOOOOOOOOOOOOOOOOg as "storage" usecase usecaseVeryLOOOOOOOOOOOOOOOOOOOg as "usecase" @enduml
08-10-1 Round-corner
@startuml skinparam rectangle { roundCorner<<Concept>> 25 } rectangle "Concept Model" <<Concept>> { rectangle "Example 1" <<Concept>> as ex1 rectangle "Another rectangle" } @enduml
08-11-01-1 Specific-SkinParameter-roundCorner
@startuml skinparam roundCorner 15 actor actor agent agent artifact artifact boundary boundary card card circle circle cloud cloud collections collections component component control control database database entity entity file file folder folder frame frame hexagon hexagon interface interface label label node node package package queue queue rectangle rectangle stack stack storage storage usecase usecase @enduml
08-12-1 Appendix-All-type-of-arrow-line
@startuml left to right direction skinparam nodesep 5 f3 ~~ b3 : ""~~""\n//dotted// f2 .. b2 : ""..""\n//dashed// f1 == b1 : ""==""\n//bold// f0 -- b0 : ""--""\n//plain// @enduml
08-13-01-1 Type-of-arrow-head
@startuml left to right direction skinparam nodesep 5 f13 --0 b13 : ""--0"" f12 --@ b12 : ""--@"" f11 --:|> b11 : ""--:|>"" f10 --||> b10 : ""--||>"" f9 --|> b9 : ""--|>"" f8 --^ b8 : ""--^ "" f7 --\\ b7 : ""--\\\\"" f6 --# b6 : ""--# "" f5 --+ b5 : ""--+ "" f4 --o b4 : ""--o "" f3 --* b3 : ""--* "" f2 -->> b2 : ""-->>"" f1 --> b1 : ""--> "" f0 -- b0 : ""-- "" @enduml
08-13-02-1 Type-of-0-arrow-or-circle-arrow
@startuml left to right direction skinparam nodesep 5 f10 0--0 b10 : "" 0--0 "" f9 )--( b9 : "" )--("" f8 0)--(0 b8 : "" 0)--(0"" f7 0)-- b7 : "" 0)-- "" f6 -0)- b6 : "" -0)-\n "" f5 -(0)- b5 : "" -(0)-\n"" f4 -(0- b4 : "" -(0-\n "" f3 --(0 b3 : "" --(0 "" f2 --( b2 : "" --( "" f1 --0 b1 : "" --0 "" @enduml
08-14-01-1 Simple-element
@startuml actor actor #aliceblue;line:blue;line.dotted;text:blue actor/ "actor/" #aliceblue;line:blue;line.dotted;text:blue agent agent #aliceblue;line:blue;line.dotted;text:blue artifact artifact #aliceblue;line:blue;line.dotted;text:blue boundary boundary #aliceblue;line:blue;line.dotted;text:blue card card #aliceblue;line:blue;line.dotted;text:blue circle circle #aliceblue;line:blue;line.dotted;text:blue cloud cloud #aliceblue;line:blue;line.dotted;text:blue collections collections #aliceblue;line:blue;line.dotted;text:blue component component #aliceblue;line:blue;line.dotted;text:blue control control #aliceblue;line:blue;line.dotted;text:blue database database #aliceblue;line:blue;line.dotted;text:blue entity entity #aliceblue;line:blue;line.dotted;text:blue file file #aliceblue;line:blue;line.dotted;text:blue folder folder #aliceblue;line:blue;line.dotted;text:blue frame frame #aliceblue;line:blue;line.dotted;text:blue hexagon hexagon #aliceblue;line:blue;line.dotted;text:blue interface interface #aliceblue;line:blue;line.dotted;text:blue label label #aliceblue;line:blue;line.dotted;text:blue node node #aliceblue;line:blue;line.dotted;text:blue package package #aliceblue;line:blue;line.dotted;text:blue queue queue #aliceblue;line:blue;line.dotted;text:blue rectangle rectangle #aliceblue;line:blue;line.dotted;text:blue stack stack #aliceblue;line:blue;line.dotted;text:blue storage storage #aliceblue;line:blue;line.dotted;text:blue usecase usecase #aliceblue;line:blue;line.dotted;text:blue usecase/ "usecase/" #aliceblue;line:blue;line.dotted;text:blue @enduml
08-14-03-1 Without-sub-element
@startuml artifact artifact #aliceblue;line:blue;line.dotted;text:blue { } card card #aliceblue;line:blue;line.dotted;text:blue { } cloud cloud #aliceblue;line:blue;line.dotted;text:blue { } component component #aliceblue;line:blue;line.dotted;text:blue { } database database #aliceblue;line:blue;line.dotted;text:blue { } file file #aliceblue;line:blue;line.dotted;text:blue { } folder folder #aliceblue;line:blue;line.dotted;text:blue { } frame frame #aliceblue;line:blue;line.dotted;text:blue { } hexagon hexagon #aliceblue;line:blue;line.dotted;text:blue { } node node #aliceblue;line:blue;line.dotted;text:blue { } package package #aliceblue;line:blue;line.dotted;text:blue { } queue queue #aliceblue;line:blue;line.dotted;text:blue { } rectangle rectangle #aliceblue;line:blue;line.dotted;text:blue { } stack stack #aliceblue;line:blue;line.dotted;text:blue { } storage storage #aliceblue;line:blue;line.dotted;text:blue { } @enduml
08-14-04-1 With-sub-element
@startuml artifact artifactVeryLOOOOOOOOOOOOOOOOOOOg as "artifact" #aliceblue;line:blue;line.dotted;text:blue { file f1 } card cardVeryLOOOOOOOOOOOOOOOOOOOg as "card" #aliceblue;line:blue;line.dotted;text:blue { file f2 } cloud cloudVeryLOOOOOOOOOOOOOOOOOOOg as "cloud" #aliceblue;line:blue;line.dotted;text:blue { file f3 } component componentVeryLOOOOOOOOOOOOOOOOOOOg as "component" #aliceblue;line:blue;line.dotted;text:blue { file f4 } database databaseVeryLOOOOOOOOOOOOOOOOOOOg as "database" #aliceblue;line:blue;line.dotted;text:blue { file f5 } file fileVeryLOOOOOOOOOOOOOOOOOOOg as "file" #aliceblue;line:blue;line.dotted;text:blue { file f6 } folder folderVeryLOOOOOOOOOOOOOOOOOOOg as "folder" #aliceblue;line:blue;line.dotted;text:blue { file f7 } frame frameVeryLOOOOOOOOOOOOOOOOOOOg as "frame" #aliceblue;line:blue;line.dotted;text:blue { file f8 } hexagon hexagonVeryLOOOOOOOOOOOOOOOOOOOg as "hexagon" #aliceblue;line:blue;line.dotted;text:blue { file f9 } node nodeVeryLOOOOOOOOOOOOOOOOOOOg as "node" #aliceblue;line:blue;line.dotted;text:blue { file f10 } package packageVeryLOOOOOOOOOOOOOOOOOOOg as "package" #aliceblue;line:blue;line.dotted;text:blue { file f11 } queue queueVeryLOOOOOOOOOOOOOOOOOOOg as "queue" #aliceblue;line:blue;line.dotted;text:blue { file f12 } rectangle rectangleVeryLOOOOOOOOOOOOOOOOOOOg as "rectangle" #aliceblue;line:blue;line.dotted;text:blue { file f13 } stack stackVeryLOOOOOOOOOOOOOOOOOOOg as "stack" #aliceblue;line:blue;line.dotted;text:blue { file f14 } storage storageVeryLOOOOOOOOOOOOOOOOOOOg as "storage" #aliceblue;line:blue;line.dotted;text:blue { file f15 } @enduml
08-15-02-1 Global-style-on-componentDiagram
@startuml <style> componentDiagram { BackGroundColor palegreen LineThickness 1 LineColor red } </style> actor actor actor/ "actor/" agent agent artifact artifact boundary boundary card card circle circle cloud cloud collections collections component component control control database database entity entity file file folder folder frame frame hexagon hexagon interface interface label label node node package package queue queue rectangle rectangle stack stack storage storage usecase usecase usecase/ "usecase/" @enduml
08-15-03-1 Style-for-each-element
@startuml <style> actor { BackGroundColor #f80c12 LineThickness 1 LineColor black } agent { BackGroundColor #f80c12 LineThickness 1 LineColor black } artifact { BackGroundColor #ee1100 LineThickness 1 LineColor black } boundary { BackGroundColor #ee1100 LineThickness 1 LineColor black } card { BackGroundColor #ff3311 LineThickness 1 LineColor black } circle { BackGroundColor #ff3311 LineThickness 1 LineColor black } cloud { BackGroundColor #ff4422 LineThickness 1 LineColor black } collections { BackGroundColor #ff4422 LineThickness 1 LineColor black } component { BackGroundColor #ff6644 LineThickness 1 LineColor black } control { BackGroundColor #ff6644 LineThickness 1 LineColor black } database { BackGroundColor #ff9933 LineThickness 1 LineColor black } entity { BackGroundColor #feae2d LineThickness 1 LineColor black } file { BackGroundColor #feae2d LineThickness 1 LineColor black } folder { BackGroundColor #ccbb33 LineThickness 1 LineColor black } frame { BackGroundColor #d0c310 LineThickness 1 LineColor black } hexagon { BackGroundColor #aacc22 LineThickness 1 LineColor black } interface { BackGroundColor #69d025 LineThickness 1 LineColor black } label { BackGroundColor black LineThickness 1 LineColor black } node { BackGroundColor #22ccaa LineThickness 1 LineColor black } package { BackGroundColor #12bdb9 LineThickness 1 LineColor black } queue { BackGroundColor #11aabb LineThickness 1 LineColor black } rectangle { BackGroundColor #4444dd LineThickness 1 LineColor black } stack { BackGroundColor #3311bb LineThickness 1 LineColor black } storage { BackGroundColor #3b0cbd LineThickness 1 LineColor black } usecase { BackGroundColor #442299 LineThickness 1 LineColor black } </style> actor actor actor/ "actor/" agent agent artifact artifact boundary boundary card card circle circle cloud cloud collections collections component component control control database database entity entity file file folder folder frame frame hexagon hexagon interface interface label label node node package package queue queue rectangle rectangle stack stack storage storage usecase usecase usecase/ "usecase/" @enduml
08-15-05-1 Global-style-on-componentDiagram
@startuml <style> componentDiagram { BackGroundColor palegreen LineThickness 2 LineColor red } </style> artifact artifact { } card card { } cloud cloud { } component component { } database database { } file file { } folder folder { } frame frame { } hexagon hexagon { } node node { } package package { } queue queue { } rectangle rectangle { } stack stack { } storage storage { } @enduml
08-15-06-1 Style-for-each-nested-element
@startuml <style> artifact { BackGroundColor #ee1100 LineThickness 1 LineColor black } card { BackGroundColor #ff3311 LineThickness 1 LineColor black } cloud { BackGroundColor #ff4422 LineThickness 1 LineColor black } component { BackGroundColor #ff6644 LineThickness 1 LineColor black } database { BackGroundColor #ff9933 LineThickness 1 LineColor black } file { BackGroundColor #feae2d LineThickness 1 LineColor black } folder { BackGroundColor #ccbb33 LineThickness 1 LineColor black } frame { BackGroundColor #d0c310 LineThickness 1 LineColor black } hexagon { BackGroundColor #aacc22 LineThickness 1 LineColor black } node { BackGroundColor #22ccaa LineThickness 1 LineColor black } package { BackGroundColor #12bdb9 LineThickness 1 LineColor black } queue { BackGroundColor #11aabb LineThickness 1 LineColor black } rectangle { BackGroundColor #4444dd LineThickness 1 LineColor black } stack { BackGroundColor #3311bb LineThickness 1 LineColor black } storage { BackGroundColor #3b0cbd LineThickness 1 LineColor black } </style> artifact artifact { } card card { } cloud cloud { } component component { } database database { } file file { } folder folder { } frame frame { } hexagon hexagon { } node node { } package package { } queue queue { } rectangle rectangle { } stack stack { } storage storage { } @enduml
08-15-08-1 Global-style-on-componentDiagram
@startuml <style> componentDiagram { BackGroundColor palegreen LineThickness 1 LineColor red } </style> artifact e1 as "artifact" { file f1 } card e2 as "card" { file f2 } cloud e3 as "cloud" { file f3 } component e4 as "component" { file f4 } database e5 as "database" { file f5 } file e6 as "file" { file f6 } folder e7 as "folder" { file f7 } frame e8 as "frame" { file f8 } hexagon e9 as "hexagon" { file f9 } node e10 as "node" { file f10 } package e11 as "package" { file f11 } queue e12 as "queue" { file f12 } rectangle e13 as "rectangle" { file f13 } stack e14 as "stack" { file f14 } storage e15 as "storage" { file f15 } @enduml
08-15-09-1 Style-for-each-nested-element
@startuml <style> artifact { BackGroundColor #ee1100 LineThickness 1 LineColor black } card { BackGroundColor #ff3311 LineThickness 1 LineColor black } cloud { BackGroundColor #ff4422 LineThickness 1 LineColor black } component { BackGroundColor #ff6644 LineThickness 1 LineColor black } database { BackGroundColor #ff9933 LineThickness 1 LineColor black } file { BackGroundColor #feae2d LineThickness 1 LineColor black } folder { BackGroundColor #ccbb33 LineThickness 1 LineColor black } frame { BackGroundColor #d0c310 LineThickness 1 LineColor black } hexagon { BackGroundColor #aacc22 LineThickness 1 LineColor black } node { BackGroundColor #22ccaa LineThickness 1 LineColor black } package { BackGroundColor #12bdb9 LineThickness 1 LineColor black } queue { BackGroundColor #11aabb LineThickness 1 LineColor black } rectangle { BackGroundColor #4444dd LineThickness 1 LineColor black } stack { BackGroundColor #3311bb LineThickness 1 LineColor black } storage { BackGroundColor #3b0cbd LineThickness 1 LineColor black } </style> artifact e1 as "artifact" { file f1 } card e2 as "card" { file f2 } cloud e3 as "cloud" { file f3 } component e4 as "component" { file f4 } database e5 as "database" { file f5 } file e6 as "file" { file f6 } folder e7 as "folder" { file f7 } frame e8 as "frame" { file f8 } hexagon e9 as "hexagon" { file f9 } node e10 as "node" { file f10 } package e11 as "package" { file f11 } queue e12 as "queue" { file f12 } rectangle e13 as "rectangle" { file f13 } stack e14 as "stack" { file f14 } storage e15 as "storage" { file f15 } @enduml
09-01-1 Simple State
@startuml [*] --> State1 State1 --> [*] State1 : this is a string State1 : this is another string State1 -> State2 State2 --> [*] @enduml
09-02-1 Change state rendering
@startuml hide empty description [*] --> State1 State1 --> [*] State1 : this is a string State1 : this is another string State1 -> State2 State2 --> [*] @enduml
09-03-01-1 Internal-sub-state
@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
09-03-02-1 Sub-state-to-sub-state
@startuml state A { state X { } state Y { } } state B { state Z { } } X --> Z Z --> Y @enduml
09-04-1 Long name
@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
09-05-1 History
@startuml [*] -> State1 State1 --> State2 : Succeeded State1 --> [*] : Aborted State2 --> State3 : Succeeded State2 --> [*] : Aborted state State3 { state "Accumulate Enough Data" as long1 long1 : Just a test [*] --> long1 long1 --> long1 : New Data long1 --> ProcessData : Enough Data State2 --> [H]: Resume } State3 --> State2 : Pause State2 --> State3[H*]: DeepResume State3 --> State3 : Failed State3 --> [*] : Succeeded / Save Result State3 --> [*] : Aborted @enduml
09-06-1 Fork
@startuml state fork_state <<fork>> [*] --> fork_state fork_state --> State2 fork_state --> State3 state join_state <<join>> State2 --> join_state State3 --> join_state join_state --> State4 State4 --> [*] @enduml
09-07-01-1 Horizontal-separator---
@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
09-07-02-1 Vertical-separator
@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
09-08-1 Conditional
@startuml state "Req(Id)" as ReqId <<sdlreceive>> state "Minor(Id)" as MinorId state "Major(Id)" as MajorId state c <<choice>> Idle --> ReqId ReqId --> c c --> MinorId : [Id <= 10] c --> MajorId : [Id > 10] @enduml
09-09-1 Stereotypes-full-example
@startuml state choice1 <<choice>> state fork1 <<fork>> state join2 <<join>> state end3 <<end>> [*] --> choice1 : from start\nto choice choice1 --> fork1 : from choice\nto fork choice1 --> join2 : from choice\nto join choice1 --> end3 : from choice\nto end fork1 ---> State1 : from fork\nto state fork1 --> State2 : from fork\nto state State2 --> join2 : from state\nto join State1 --> [*] : from state\nto end join2 --> [*] : from join\nto end @enduml
09-10-1 Point
@startuml state Somp { state entry1 <<entryPoint>> state entry2 <<entryPoint>> state sin entry1 --> sin entry2 -> sin sin -> sin2 sin2 --> exitA <<exitPoint>> } [*] --> entry1 exitA --> Foo Foo1 -> entry2 @enduml
09-11-1 Pin
@startuml state Somp { state entry1 <<inputPin>> state entry2 <<inputPin>> state sin entry1 --> sin entry2 -> sin sin -> sin2 sin2 --> exitA <<outputPin>> } [*] --> entry1 exitA --> Foo Foo1 -> entry2 @enduml
09-12-1 Expansion
@startuml state Somp { state entry1 <<expansionInput>> state entry2 <<expansionInput>> state sin entry1 --> sin entry2 -> sin sin -> sin2 sin2 --> exitA <<expansionOutput>> } [*] --> entry1 exitA --> Foo Foo1 -> entry2 @enduml
09-13-1 Arrow direction
@startuml [*] -up-> First First -right-> Second Second --> Third Third -left-> Last @enduml
09-14-1 Change-line-color-and-style
@startuml State S1 State S2 S1 -[#DD00AA]-> S2 S1 -left[#yellow]-> S3 S1 -up[#red,dashed]-> S4 S1 -right[dotted,#blue]-> S5 X1 -[dashed]-> X2 Z1 -[dotted]-> Z2 Y1 -[#blue,bold]-> Y2 @enduml
09-15-1 Note
@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
09-15-2 Note
@startuml state foo note "This is a floating note" as N1 @enduml
09-16-1 More in notes
@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
09-17-1 More-in-notes
@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
09-18-1 Inline-color
@startuml state CurrentSite #pink { state HardwareSetup #lightblue { state Site #brown Site -[hidden]-> Controller Controller -[hidden]-> Devices } state PresentationSetup{ Groups -[hidden]-> PlansAndGraphics } state Trends #FFFF77 state Schedule #magenta state AlarmSupression } @enduml
09-19-1 Skinparam
@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 { state "Idle mode" as Idle <<Warning>> state "Configuring mode" as Configuring [*] --> Idle Idle --> Configuring : EvConfig Configuring --> Idle : EvConfig } NotShooting --> [*] @enduml
09-20-1 Changing-style
@startuml <style> stateDiagram { BackgroundColor Peru 'LineColor Gray FontName Impact FontColor Red arrow { FontSize 13 LineColor Blue } } </style> [*] --> NotShooting state "Not Shooting State" as NotShooting { state "Idle mode" as Idle <<Warning>> state "Configuring mode" as Configuring [*] --> Idle Idle --> Configuring : EvConfig Configuring --> Idle : EvConfig } NotShooting --> [*] @enduml
09-21-1 Change-state-color-and-style
@startuml state FooGradient #red-green ##00FFFF state FooDashed #red|green ##[dashed]blue { } state FooDotted ##[dotted]blue { } state FooBold ##[bold] { } state Foo1 ##[dotted]green { state inner1 ##[dotted]yellow } state out ##[dotted]gold state Foo2 ##[bold]green { state inner2 ##[dotted]yellow } inner1 -> inner2 out -> inner2 @enduml
09-21-2 Change-state-color-and-style
@startuml state FooGradient #red-green;line:00FFFF state FooDashed #red|green;line.dashed;line:blue { } state FooDotted #line.dotted;line:blue { } state FooBold #line.bold { } state Foo1 #line.dotted;line:green { state inner1 #line.dotted;line:yellow } state out #line.dotted;line:gold state Foo2 #line.bold;line:green { state inner2 #line.dotted;line:yellow } inner1 -> inner2 out -> inner2 @enduml
09-21-3 Change-state-color-and-style
@startuml state s1 : s1 description state s2 #pink;line:red;line.bold;text:red : s2 description state s3 #palegreen;line:green;line.dashed;text:green : s3 description state s4 #aliceblue;line:blue;line.dotted;text:blue : s4 description @enduml
10-01-1 Declaring-participant
@startuml robust "Web Browser" as WB concise "Web User" as WU @0 WU is Idle WB is Idle @100 WU is Waiting WB is Processing @300 WB is Waiting @enduml
10-02-1 Binary-and-Clock
@startuml clock clk with period 1 binary "Enable" as EN @0 EN is low @5 EN is high @10 EN is low @enduml
10-03-1 Adding-message
@startuml robust "Web Browser" as WB concise "Web User" as WU @0 WU is Idle WB is Idle @100 WU -> WB : URL WU is Waiting WB is Processing @300 WB is Waiting @enduml
10-04-1 Relative-time
@startuml robust "DNS Resolver" as DNS robust "Web Browser" as WB concise "Web User" as WU @0 WU is Idle WB is Idle DNS is Idle @+100 WU -> WB : URL WU is Waiting WB is Processing @+200 WB is Waiting WB -> DNS@+50 : Resolve URL @+100 DNS is Processing @+300 DNS is Idle @enduml
10-05-1 Anchor-Points
@startuml clock clk with period 1 binary "enable" as EN concise "dataBus" as db @0 as :start @5 as :en_high @10 as :en_low @:start EN is low db is "0x0000" @:en_high EN is high @:en_low EN is low @:en_high-2 db is "0xf23a" @:en_high+6 db is "0x0000" @enduml
10-06-1 Participant-oriented
@startuml robust "Web Browser" as WB concise "Web User" as WU @WB 0 is idle +200 is Proc. +100 is Waiting @WU 0 is Waiting +500 is ok @enduml
10-07-1 Setting-scale
@startuml concise "Web User" as WU scale 100 as 50 pixels @WU 0 is Waiting +500 is ok @enduml
10-08-1 Initial-state
@startuml robust "Web Browser" as WB concise "Web User" as WU WB is Initializing WU is Absent @WB 0 is idle +200 is Processing +100 is Waiting @WU 0 is Waiting +500 is ok @enduml
10-09-1 Intricated-state
@startuml robust "Signal1" as S1 robust "Signal2" as S2 S1 has 0,1,2,hello S2 has 0,1,2 @0 S1 is 0 S2 is 0 @100 S1 is {0,1} #SlateGrey S2 is {0,1} @200 S1 is 1 S2 is 0 @300 S1 is hello S2 is {0,2} @enduml
10-10-1 Hidden-state
@startuml concise "Web User" as WU @0 WU is {-} @100 WU is A1 @200 WU is {-} @300 WU is {hidden} @400 WU is A3 @500 WU is {-} @enduml
10-11-1 Hide-time-axis
@startuml hide time-axis concise "Web User" as WU WU is Absent @WU 0 is Waiting +500 is ok @enduml
10-12-1 Using-Time-and-Date
@startuml robust "Web Browser" as WB concise "Web User" as WU @2019/07/02 WU is Idle WB is Idle @2019/07/04 WU is Waiting : some note WB is Processing : some other note @2019/07/05 WB is Waiting @enduml
10-12-2 Using-Time-and-Date
@startuml robust "Web Browser" as WB concise "Web User" as WU @1:15:00 WU is Idle WB is Idle @1:16:30 WU is Waiting : some note WB is Processing : some other note @1:17:30 WB is Waiting @enduml
10-13-1 Adding-constraint
@startuml robust "Web Browser" as WB concise "Web User" as WU WB is Initializing WU is Absent @WB 0 is idle +200 is Processing +100 is Waiting WB@0 <-> @50 : {50 ms lag} @WU 0 is Waiting +500 is ok @200 <-> @+150 : {150 ms} @enduml
10-14-1 Highlighted-period
@startuml robust "Web Browser" as WB concise "Web User" as WU @0 WU is Idle WB is Idle @100 WU -> WB : URL WU is Waiting #LightCyan;line:Aqua @200 WB is Proc. @300 WU -> WB@350 : URL2 WB is Waiting @+200 WU is ok @+200 WB is Idle highlight 200 to 450 #Gold;line:DimGrey : This is my caption @enduml
10-15-1 Adding-texts
@startuml Title this is my title header: some header footer: some footer legend Some legend end legend caption some caption robust "Web Browser" as WB concise "Web User" as WU @0 WU is Idle WB is Idle @100 WU is Waiting WB is Processing @300 WB is Waiting @enduml
10-16-1 Complete-example
@startuml concise "Client" as Client concise "Server" as Server concise "Response freshness" as Cache Server is idle Client is idle @Client 0 is send Client -> Server@+25 : GET +25 is await +75 is recv +25 is idle +25 is send Client -> Server@+25 : GET\nIf-Modified-Since: 150 +25 is await +50 is recv +25 is idle @100 <-> @275 : no need to re-request from server @Server 25 is recv +25 is work +25 is send Server -> Client@+25 : 200 OK\nExpires: 275 +25 is idle +75 is recv +25 is send Server -> Client@+25 : 304 Not Modified +25 is idle @Cache 75 is fresh +200 is stale @enduml
10-17-1 Digital-Example
@startuml scale 5 as 150 pixels clock clk with period 1 binary "enable" as en binary "R/W" as rw binary "data Valid" as dv concise "dataBus" as db concise "address bus" as addr @6 as :write_beg @10 as :write_end @15 as :read_beg @19 as :read_end @0 en is low db is "0x0" addr is "0x03f" rw is low dv is 0 @:write_beg-3 en is high @:write_beg-2 db is "0xDEADBEEF" @:write_beg-1 dv is 1 @:write_beg rw is high @:write_end rw is low dv is low @:write_end+1 rw is low db is "0x0" addr is "0x23" @12 dv is high @13 db is "0xFFFF" @20 en is low dv is low @21 db is "0x0" highlight :write_beg to :write_end #Gold:Write highlight :read_beg to :read_end #lightBlue:Read db@:write_beg-1 <-> @:write_end : setup time db@:write_beg-1 -> addr@:write_end+1 : hold @enduml
10-18-1 Adding-color
@startuml concise "LR" as LR concise "ST" as ST LR is AtPlace #palegreen ST is AtLoad #gray @LR 0 is Lowering 100 is Lowered #pink 350 is Releasing @ST 200 is Moving @enduml
11-01-01-1 Complex-example
@startjson { "firstName": "John", "lastName": "Smith", "isAlive": true, "age": 27, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021-3100" }, "phoneNumbers": [ { "type": "home", "number": "212 555-1234" }, { "type": "office", "number": "646 555-4567" } ], "children": [], "spouse": null } @endjson
11-01-1 Display-JSON-Data
@startjson { "fruit":"Apple", "size":"Large", "color":"Red" } @endjson
11-02-1 Highlight-parts
@startjson #highlight "lastName" #highlight "address" / "city" #highlight "phoneNumbers" / "0" / "number" { "firstName": "John", "lastName": "Smith", "isAlive": true, "age": 28, "address": { "streetAddress": "21 2nd Street", "city": "New York", "state": "NY", "postalCode": "10021-3100" }, "phoneNumbers": [ { "type": "home", "number": "212 555-1234" }, { "type": "office", "number": "646 555-4567" } ], "children": [], "spouse": null } @endjson
11-03-01-1 Synthesis-of-all-JSON-basic-element
@startjson { "null": null, "true": true, "false": false, "JSON_Number": [-1, -1.1, "<color:green>TBC"], "JSON_String": "a\nb\rc\td <color:green>TBC...", "JSON_Object": { "{}": {}, "k_int": 123, "k_str": "abc", "k_obj": {"k": "v"} }, "JSON_Array" : [ [], [true, false], [-1, 1], ["a", "b", "c"], ["mix", null, true, 1, {"k": "v"}] ] } @endjson
11-04-01-1 Array-type
@startjson { "Numeric": [1, 2, 3], "String ": ["v1a", "v2b", "v3c"], "Boolean": [true, false, true] } @endjson
11-04-03-1 Number-array
@startjson [1, 2, 3] @endjson
11-04-04-1 String-array
@startjson ["1a", "2b", "3c"] @endjson
11-04-05-1 Boolean-array
@startjson [true, false, true] @endjson
11-05-1 JSON-numbers
@startjson { "DecimalNumber": [-1, 0, 1], "DecimalNumber . Digits": [-1.1, 0.1, 1.1], "DecimalNumber ExponentPart": [1E5] } @endjson
11-06-01-1 JSON-Unicode
@startjson { "<color:blue><b>code": "<color:blue><b>value", "a\\u005Cb": "a\u005Cb", "\\uD83D\\uDE10": "\uD83D\uDE10", "😐": "😐" } @endjson
11-06-02-1 JSON-two-character-escape-sequence
@startjson { "**legend**: character name": ["**two-character escape sequence**", "example (between 'a' and 'b')"], "quotation mark character (U+0022)": ["\\\"", "a\"b"], "reverse solidus character (U+005C)": ["\\\\", "a\\b"], "solidus character (U+002F)": ["\\\/", "a\/b"], "backspace character (U+0008)": ["\\b", "a\bb"], "form feed character (U+000C)": ["\\f", "a\fb"], "line feed character (U+000A)": ["\\n", "a\nb"], "carriage return character (U+000D)": ["\\r", "a\rb"], "character tabulation character (U+0009)": ["\\t", "a\tb"] } @endjson
11-06-02-2 JSON-two-character-escape-sequence
@startjson [ "\\\\", "\\n", "\\r", "\\t" ] @endjson
11-07-1 Minimal-JSON-examples
@startjson "Hello world!" @endjson
11-07-2 Minimal-JSON-examples
@startjson 42 @endjson
11-07-3 Minimal-JSON-examples
@startjson true @endjson
11-08-01-1 Without-style
@startjson #highlight "1" / "hr" [ { "name": "Mark McGwire", "hr": 65, "avg": 0.278 }, { "name": "Sammy Sosa", "hr": 63, "avg": 0.288 } ] @endjson
11-08-02-1 With-style
@startjson <style> jsonDiagram { node { BackGroundColor Khaki LineColor lightblue FontName Helvetica FontColor red FontSize 18 FontStyle bold RoundCorner 0 LineThickness 2 LineStyle 10;5 separator { LineThickness 0.5 LineColor black LineStyle 1;5 } } arrow { BackGroundColor lightblue LineColor green LineThickness 2 LineStyle 2;5 } highlight { BackGroundColor red FontColor white FontStyle italic } } </style> #highlight "1" / "hr" [ { "name": "Mark McGwire", "hr": 65, "avg": 0.278 }, { "name": "Sammy Sosa", "hr": 63, "avg": 0.288 } ] @endjson
12-01-1 Complex-example
@startyaml doe: "a deer, a female deer" ray: "a drop of golden sun" pi: 3.14159 xmas: true french-hens: 3 calling-birds: - huey - dewey - louie - fred xmas-fifth-day: calling-birds: four french-hens: 3 golden-rings: 5 partridges: count: 1 location: "a pear tree" turtle-doves: two @endyaml
12-02-1 Specific-key-with-symbols-or-unicode
@startyaml @fruit: Apple $size: Large &color: Red ❤: Heart ‰: Per mille @endyaml
12-03-01-1 Normal-style
@startyaml #highlight "french-hens" #highlight "xmas-fifth-day" / "partridges" doe: "a deer, a female deer" ray: "a drop of golden sun" pi: 3.14159 xmas: true french-hens: 3 calling-birds: - huey - dewey - louie - fred xmas-fifth-day: calling-birds: four french-hens: 3 golden-rings: 5 partridges: count: 1 location: "a pear tree" turtle-doves: two @endyaml
12-03-02-1 Customised-style
@startyaml <style> yamlDiagram { highlight { BackGroundColor red FontColor white FontStyle italic } } </style> #highlight "french-hens" #highlight "xmas-fifth-day" / "partridges" doe: "a deer, a female deer" ray: "a drop of golden sun" pi: 3.14159 xmas: true french-hens: 3 calling-birds: - huey - dewey - louie - fred xmas-fifth-day: calling-birds: four french-hens: 3 golden-rings: 5 partridges: count: 1 location: "a pear tree" turtle-doves: two @endyaml
12-04-01-1 Without-style
@startyaml - name: Mark McGwire hr: 65 avg: 0.278 - name: Sammy Sosa hr: 63 avg: 0.288 @endyaml
12-04-02-1 With-style
@startyaml <style> yamlDiagram { node { BackGroundColor lightblue LineColor lightblue FontName Helvetica FontColor red FontSize 18 FontStyle bold BackGroundColor Khaki RoundCorner 0 LineThickness 2 LineStyle 10;5 separator { LineThickness 0.5 LineColor black LineStyle 1;5 } } arrow { BackGroundColor lightblue LineColor green LineThickness 2 LineStyle 2;5 } } </style> - name: Mark McGwire hr: 65 avg: 0.278 - name: Sammy Sosa hr: 63 avg: 0.288 @endyaml
12-1 Display-YAML-Data
@startyaml fruit: Apple size: Large color: Red @endyaml
13-01-1 Simple-diagram
@startuml nwdiag { network dmz { address = "210.x.x.x/24" web01 [address = "210.x.x.1"]; web02 [address = "210.x.x.2"]; } network internal { address = "172.x.x.x/24"; web01 [address = "172.x.x.1"]; web02 [address = "172.x.x.2"]; db01; db02; } } @enduml
13-02-1 Define-multiple-addresses
@startuml nwdiag { network dmz { address = "210.x.x.x/24" // set multiple addresses (using comma) web01 [address = "210.x.x.1, 210.x.x.20"]; web02 [address = "210.x.x.2"]; } network internal { address = "172.x.x.x/24"; web01 [address = "172.x.x.1"]; web02 [address = "172.x.x.2"]; db01; db02; } } @enduml
13-03-01-1 Define-group-inside-network-definitions
@startuml nwdiag { network Sample_front { address = "192.168.10.0/24"; // define group group web { web01 [address = ".1"]; web02 [address = ".2"]; } } network Sample_back { address = "192.168.20.0/24"; web01 [address = ".1"]; web02 [address = ".2"]; db01 [address = ".101"]; db02 [address = ".102"]; // define network using defined nodes group db { db01; db02; } } } @enduml
13-03-02-1 Define-group-outside-of-network-definitions
@startuml nwdiag { // define group outside of network definitions group { color = "#FFAAAA"; web01; web02; db01; } network dmz { web01; web02; } network internal { web01; web02; db01; db02; } } @enduml
13-03-04-1 Example-with-2-group
@startuml nwdiag { group { color = "#FFaaaa"; web01; db01; } group { color = "#aaaaFF"; web02; db02; } network dmz { address = "210.x.x.x/24" web01 [address = "210.x.x.1"]; web02 [address = "210.x.x.2"]; } network internal { address = "172.x.x.x/24"; web01 [address = "172.x.x.1"]; web02 [address = "172.x.x.2"]; db01 ; db02 ; } } @enduml
13-03-05-1 Example-with-3-group
@startuml nwdiag { group { color = "#FFaaaa"; web01; db01; } group { color = "#aaFFaa"; web02; db02; } group { color = "#aaaaFF"; web03; db03; } network dmz { web01; web02; web03; } network internal { web01; db01 ; web02; db02 ; web03; db03; } } @enduml
13-04-01-1 Extended-Syntax-Network
@startuml nwdiag { network Sample_front { address = "192.168.10.0/24" color = "red" // define group group web { web01 [address = ".1, .2", shape = "node"] web02 [address = ".2, .3"] } } network Sample_back { address = "192.168.20.0/24" color = "palegreen" web01 [address = ".1"] web02 [address = ".2"] db01 [address = ".101", shape = database ] db02 [address = ".102"] // define network using defined nodes group db { db01; db02; } } } @enduml
13-04-02-1 Extended-Syntax-Group
@startuml nwdiag { group { color = "#CCFFCC"; description = "Long group description"; web01; web02; db01; } network dmz { web01; web02; } network internal { web01; web02; db01 [address = ".101", shape = database]; } } @enduml
13-05-1 Using-Sprites
@startuml !include <office/Servers/application_server> !include <office/Servers/database_server> nwdiag { network dmz { address = "210.x.x.x/24" // set multiple addresses (using comma) web01 [address = "210.x.x.1, 210.x.x.20", description = "<$application_server>\n web01"] web02 [address = "210.x.x.2", description = "<$application_server>\n web02"]; } network internal { address = "172.x.x.x/24"; web01 [address = "172.x.x.1"]; web02 [address = "172.x.x.2"]; db01 [address = "172.x.x.100", description = "<$database_server>\n db01"]; db02 [address = "172.x.x.101", description = "<$database_server>\n db02"]; } } @enduml
13-06-1 Using-OpenIconic
@startuml nwdiag { group nightly { color = "#FFAAAA"; description = "<&clock> Restarted nightly <&clock>"; web02; db01; } network dmz { address = "210.x.x.x/24" user [description = "<&person*4.5>\n user1"]; // set multiple addresses (using comma) web01 [address = "210.x.x.1, 210.x.x.20", description = "<&cog*4>\nweb01"] web02 [address = "210.x.x.2", description = "<&cog*4>\nweb02"]; } network internal { address = "172.x.x.x/24"; web01 [address = "172.x.x.1"]; web02 [address = "172.x.x.2"]; db01 [address = "172.x.x.100", description = "<&spreadsheet*4>\n db01"]; db02 [address = "172.x.x.101", description = "<&spreadsheet*4>\n db02"]; ptr [address = "172.x.x.110", description = "<&print*4>\n ptr01"]; } } @enduml
13-07-1 Same-nodes-on-more-than-two-networks
@startuml nwdiag { // define group at outside network definitions group { color = "#7777FF"; web01; web02; db01; } network dmz { color = "pink" web01; web02; } network internal { web01; web02; db01 [shape = database ]; } network internal2 { color = "LightBlue"; web01; web02; db01; } } @enduml
13-08-1 Peer-networks
@startuml nwdiag { inet [shape = cloud]; inet -- router; network { router; web01; web02; } } @enduml
13-09-01-1 Without-group
@startuml nwdiag { internet [ shape = cloud]; internet -- router; network proxy { router; app; } network default { app; db; } } @enduml
13-09-02-1 Group-on-first
@startuml nwdiag { internet [ shape = cloud]; internet -- router; group { color = "pink"; app; db; } network proxy { router; app; } network default { app; db; } } @enduml
13-09-03-1 Group-on-second
@startuml nwdiag { internet [ shape = cloud]; internet -- router; network proxy { router; app; } group { color = "pink"; app; db; } network default { app; db; } } @enduml
13-09-04-1 Group-on-third
@startuml nwdiag { internet [ shape = cloud]; internet -- router; network proxy { router; app; } network default { app; db; } group { color = "pink"; app; db; } } @enduml
13-10-1 Add-title-caption-header-footer-or-legend-on-network-diagram
@startuml header some header footer some footer title My title nwdiag { network inet { web01 [shape = cloud] } } legend The legend end legend caption This is caption @enduml
13-11-1 Change-width-of-the-networks
@startuml nwdiag { network NETWORK_BASE { dev_A [address = "dev_A" ] dev_B [address = "dev_B" ] } network IntNET1 { dev_B [address = "dev_B1" ] dev_M [address = "dev_M1" ] } network IntNET2 { dev_B [address = "dev_B2" ] dev_M [address = "dev_M2" ] } } @enduml
13-11-2 Change-width-of-the-networks
@startuml nwdiag { network NETWORK_BASE { width = full dev_A [address = "dev_A" ] dev_B [address = "dev_B" ] } network IntNET1 { width = full dev_B [address = "dev_B1" ] dev_M [address = "dev_M1" ] } network IntNET2 { width = full dev_B [address = "dev_B2" ] dev_M [address = "dev_M2" ] } } @enduml
13-11-3 Change-width-of-the-networks
@startuml nwdiag { network NETWORK_BASE { width = full dev_A [address = "dev_A" ] dev_B [address = "dev_B" ] } network IntNET1 { width = full dev_B [address = "dev_B1" ] dev_M [address = "dev_M1" ] } network IntNET2 { dev_B [address = "dev_B2" ] dev_M [address = "dev_M2" ] } } @enduml
13-12-1 Other-internal-networks
@startuml nwdiag { network LAN1 { a [address = "a1"]; } network LAN2 { a [address = "a2"]; switch; } switch -- equip; equip -- printer; } @enduml
13-12-2 Other-internal-networks
@startuml nwdiag { network LAN1 { a [address = "a1"]; } network LAN2 { a [address = "a2"]; switch [address = "s2"]; } switch -- equip; equip [address = "e3"]; equip -- printer; printer [address = "USB"]; } @enduml
14-01-1 Basic-widgets
@startsalt { Just plain text [This is my button] () Unchecked radio (X) Checked radio [] Unchecked box [X] Checked box "Enter text here " ^This is a droplist^ } @endsalt
14-02-1 Using-grid
@startsalt { Login | "MyName " Password | "**** " [Cancel] | [ OK ] } @endsalt
14-02-2 Using-grid
@startsalt {+ Login | "MyName " Password | "**** " [Cancel] | [ OK ] } @endsalt
14-03-1 Group-box
@startsalt {^"My group box" Login | "MyName " Password | "**** " [Cancel] | [ OK ] } @endsalt
14-04-1 Using-separator
@startsalt { Text1 .. "Some field" == Note on usage ~~ Another text -- [Ok] } @endsalt
14-05-1 Tree-widget
@startsalt { {T + World ++ America +++ Canada +++ USA ++++ New York ++++ Boston +++ Mexico ++ Europe +++ Italy +++ Germany ++++ Berlin ++ Africa } } @endsalt
14-06-1 Tree-table
@startsalt { {T +Region | Population | Age + World | 7.13 billion | 30 ++ America | 964 million | 30 +++ Canada | 35 million | 30 +++ USA | 319 million | 30 ++++ NYC | 8 million | 30 ++++ Boston | 617 thousand | 30 +++ Mexico | 117 million | 30 ++ Europe | 601 million | 30 +++ Italy | 61 million | 30 +++ Germany | 82 million | 30 ++++ Berlin | 3 million | 30 ++ Africa | 1 billion | 30 } } @endsalt
14-06-2 Tree-table
@startsalt { .. == with T! {T! +Region | Population | Age + World | 7.13 billion | 30 ++ America | 964 million | 30 } .. == with T- {T- +Region | Population | Age + World | 7.13 billion | 30 ++ America | 964 million | 30 } .. == with T+ {T+ +Region | Population | Age + World | 7.13 billion | 30 ++ America | 964 million | 30 } .. == with T# {T# +Region | Population | Age + World | 7.13 billion | 30 ++ America | 964 million | 30 } .. } @endsalt
14-07-1 Enclosing-brackets
@startsalt { Name | " " Modifiers: | { (X) public | () default | () private | () protected [] abstract | [] final | [] static } Superclass: | { "java.lang.Object " | [Browse...] } } @endsalt
14-08-1 Adding-tabs
@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
14-08-2 Adding-tabs
@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
14-09-1 Using-menu
@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
14-09-2 Using-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
14-09-3 Using-menu
@startsalt {+ {* File | Edit | Source | Refactor } {/ General | Fullscreen | Behavior | Saving } { { Open image in: | ^Smart Mode^^Normal Mode^ } [X] Smooth images when zoomed [X] Confirm image deletion [ ] Show hidden images } [Close] } @endsalt
14-10-1 Advanced-table
@startsalt {# . | Column 2 | Column 3 Row header 1 | value 1 | value 2 Row header 2 | A long cell | * } @endsalt
14-11-1 Scroll-Bars
@startsalt {S Message . . . . } @endsalt
14-11-2 Scroll-Bars
@startsalt {SI Message . . . . } @endsalt
14-11-3 Scroll-Bars
@startsalt {S- Message . . . . } @endsalt
14-12-1 Coloros
@startsalt { <color:Blue>Just plain text [This is my default button] [<color:green>This is my green button] [<color:#9a9a9a>This is my disabled button] [] <color:red>Unchecked box [X] <color:green>Checked box "Enter text here " ^This is a droplist^ ^<color:#9a9a9a>This is a disabled droplist^ ^<color:red>This is a red droplist^ } @endsalt
14-13-1 Pseudo-sprite
@startsalt { [X] checkbox|[] checkbox () radio | (X) radio This is a text|[This is my button]|This is another text "A field"|"Another long Field"|[A button] <<folder ............ .XXXXX...... .X...X...... .XXXXXXXXXX. .X........X. .X........X. .X........X. .X........X. .XXXXXXXXXX. ............ >>|<color:blue>other folder|<<folder>> ^Droplist^ } @endsalt
14-14-1 OpenIconic
@startsalt { Login<&person> | "MyName " Password<&key> | "**** " [Cancel <&circle-x>] | [OK <&account-login>] } @endsalt
14-14-2 OpenIconic
@startuml listopeniconic @enduml
14-15-1 Include-Salt-on-activity-diagram
@startuml (*) --> " {{ salt {+ <b>an example choose one option ()one ()two [ok] } }} " as choose choose -right-> " {{ salt {+ <b>please wait operation in progress <&clock> [cancel] } }} " as wait wait -right-> " {{ salt {+ <b>success congratulations! [ok] } }} " as success wait -down-> " {{ salt {+ <b>error failed, sorry [ok] } }} " @enduml
14-15-2 Include-Salt-on-activity-diagram
@startuml !unquoted procedure SALT($x) "{{ salt %invoke_procedure("_"+$x) }}" as $x !endprocedure !procedure _choose() {+ <b>an example choose one option ()one ()two [ok] } !endprocedure !procedure _wait() {+ <b>please wait operation in progress <&clock> [cancel] } !endprocedure !procedure _success() {+ <b>success congratulations! [ok] } !endprocedure !procedure _error() {+ <b>error failed, sorry [ok] } !endprocedure (*) --> SALT(choose) -right-> SALT(wait) wait -right-> SALT(success) wait -down-> SALT(error) @enduml
14-16-1 Include-salt-on-while-condition-of-activity-diagram
@startuml start while (\n{{\nsalt\n{+\nPassword | "**** "\n[Cancel] | [ OK ]}\n}}\n) is (Incorrect) :log attempt; :attempt_count++; if (attempt_count > 4) then (yes) :increase delay timer; :wait for timer to expire; else (no) endif endwhile (correct) :log request; :disable service; @enduml
15-01-1 Archimate-keyword
@startuml archimate #Technology "VPN Server" as vpnServerA <<technology-device>> rectangle GO #lightgreen rectangle STOP #red rectangle WAIT #orange @enduml
15-02-1 Defining-Junctions
@startuml !define Junction_Or circle #black !define Junction_And circle #whitesmoke Junction_And JunctionAnd Junction_Or JunctionOr archimate #Technology "VPN Server" as vpnServerA <<technology-device>> rectangle GO #lightgreen rectangle STOP #red rectangle WAIT #orange GO -up-> JunctionOr STOP -up-> JunctionOr STOP -down-> JunctionAnd WAIT -down-> JunctionAnd @enduml
15-03-1 Example-1
@startuml skinparam rectangle<<behavior>> { roundCorner 25 } sprite $bProcess jar:archimate/business-process sprite $aService jar:archimate/application-service sprite $aComponent jar:archimate/application-component rectangle "Handle claim" as HC <<$bProcess>><<behavior>> #Business rectangle "Capture Information" as CI <<$bProcess>><<behavior>> #Business rectangle "Notify\nAdditional Stakeholders" as NAS <<$bProcess>><<behavior>> #Business rectangle "Validate" as V <<$bProcess>><<behavior>> #Business rectangle "Investigate" as I <<$bProcess>><<behavior>> #Business rectangle "Pay" as P <<$bProcess>><<behavior>> #Business HC *-down- CI HC *-down- NAS HC *-down- V HC *-down- I HC *-down- P CI -right->> NAS NAS -right->> V V -right->> I I -right->> P rectangle "Scanning" as scanning <<$aService>><<behavior>> #Application rectangle "Customer admnistration" as customerAdministration <<$aService>><<behavior>> #Application rectangle "Claims admnistration" as claimsAdministration <<$aService>><<behavior>> #Application rectangle Printing <<$aService>><<behavior>> #Application rectangle Payment <<$aService>><<behavior>> #Application scanning -up-> CI customerAdministration -up-> CI claimsAdministration -up-> NAS claimsAdministration -up-> V claimsAdministration -up-> I Payment -up-> P Printing -up-> V Printing -up-> P rectangle "Document\nManagement\nSystem" as DMS <<$aComponent>> #Application rectangle "General\nCRM\nSystem" as CRM <<$aComponent>> #Application rectangle "Home & Away\nPolicy\nAdministration" as HAPA <<$aComponent>> #Application rectangle "Home & Away\nFinancial\nAdministration" as HFPA <<$aComponent>> #Application DMS .up.|> scanning DMS .up.|> Printing CRM .up.|> customerAdministration HAPA .up.|> claimsAdministration HFPA .up.|> Payment legend left Example from the "Archisurance case study" (OpenGroup). See ==== <$bProcess> :business process ==== <$aService> : application service ==== <$aComponent> : application component endlegend @enduml
15-04-1 Example-2
@startuml skinparam roundcorner 25 rectangle "Capture Information" as CI <<$archimate/business-process>> #Business @enduml
15-05-1 List-possible-sprites
@startuml listsprite @enduml
15-06-02-1 Archimate-elements
@startuml !include <archimate/Archimate> Motivation_Stakeholder(StakeholderElement, "Stakeholder Description") @enduml
15-06-02-2 Archimate-elements
@startuml !include <archimate/Archimate> Business_Service(BService, "Business Service") @enduml
15-06-03-1 Archimate-relationships
@startuml !include <archimate/Archimate> Motivation_Stakeholder(StakeholderElement, "Stakeholder Description") Business_Service(BService, "Business Service") Rel_Composition(StakeholderElement, BService, "Description for the relationship") @enduml
15-06-03-2 Archimate-relationships
@startuml !include <archimate/Archimate> Motivation_Stakeholder(StakeholderElement, "Stakeholder Description") Business_Service(BService, "Business Service") Rel_Composition_Down(StakeholderElement, BService, "Description for the relationship") @enduml
15-06-04-1 Appendice-Examples-of-all-Archimate-RelationTypes
@startuml left to right direction skinparam nodesep 4 !include <archimate/Archimate> Rel_Triggering(i15, j15, Triggering) Rel_Specialization(i14, j14, Specialization) Rel_Serving(i13, j13, Serving) Rel_Realization(i12, j12, Realization) Rel_Influence(i11, j11, Influence) Rel_Flow(i10, j10, Flow) Rel_Composition(i9, j9, Composition) Rel_Association_dir(i8, j8, Association_dir) Rel_Association(i7, j7, Association) Rel_Assignment(i6, j6, Assignment) Rel_Aggregation(i5, j5, Aggregation) Rel_Access_w(i4, j4, Access_w) Rel_Access_rw(i3, j3, Access_rw) Rel_Access_r(i2, j2, Access_r) Rel_Access(i1, j1, Access) @enduml
16-01-01-1 Declaring-tasks-Duration
@startgantt [Prototype design] lasts 15 days [Test prototype] lasts 10 days @endgantt
16-01-02-1 Declaring-tasks-Start
@startgantt [Prototype design] lasts 15 days [Test prototype] lasts 10 days Project starts 2020-07-01 [Prototype design] starts 2020-07-01 [Test prototype] starts 2020-07-16 @endgantt
16-01-03-1 Declaring-tasks-End
@startgantt [Prototype design] lasts 15 days [Test prototype] lasts 10 days Project starts 2020-07-01 [Prototype design] ends 2020-07-15 [Test prototype] ends 2020-07-25 @endgantt
16-01-04-1 StartEnd
@startgantt Project starts 2020-07-01 [Prototype design] starts 2020-07-01 [Test prototype] starts 2020-07-16 [Prototype design] ends 2020-07-15 [Test prototype] ends 2020-07-25 @endgantt
16-02-1 One-line-declaration
@startgantt Project starts 2020-07-01 [Prototype design] starts 2020-07-01 and ends 2020-07-15 [Test prototype] starts 2020-07-16 and lasts 10 days @enduml
16-03-1 Adding-constraints
@startgantt [Prototype design] lasts 15 days [Test prototype] lasts 10 days [Test prototype] starts at [Prototype design]'s end @endgantt
16-03-2 Adding-constraints
@startgantt [Prototype design] lasts 10 days [Code prototype] lasts 10 days [Write tests] lasts 5 days [Code prototype] starts at [Prototype design]'s end [Write tests] starts at [Code prototype]'s start @endgantt
16-04-1 Short-names
@startgantt [Prototype design] as [D] lasts 15 days [Test prototype] as [T] lasts 10 days [T] starts at [D]'s end @endgantt
16-05-1 Customize-colors
@startgantt [Prototype design] lasts 13 days [Test prototype] lasts 4 days [Test prototype] starts at [Prototype design]'s end [Prototype design] is colored in Fuchsia/FireBrick [Test prototype] is colored in GreenYellow/Green @endgantt
16-06-1 Completion-status
@startgantt [foo] lasts 21 days [foo] is 40% completed [bar] lasts 30 days and is 10% complete @endgantt
16-07-01-1 Milestone-Relative-milestone
@startgantt [Test prototype] lasts 10 days [Prototype completed] happens at [Test prototype]'s end [Setup assembly line] lasts 12 days [Setup assembly line] starts at [Test prototype]'s end @endgantt
16-07-02-1 Milestone-Absolute-milestone
@startgantt Project starts 2020-07-01 [Test prototype] lasts 10 days [Prototype completed] happens 2020-07-10 [Setup assembly line] lasts 12 days [Setup assembly line] starts at [Test prototype]'s end @endgantt
16-07-03-1 Milestone-of-maximum-end-of-tasks
@startgantt [Task1] lasts 4 days then [Task1.1] lasts 4 days [Task1.2] starts at [Task1]'s end and lasts 7 days [Task2] lasts 5 days then [Task2.1] lasts 4 days [MaxTaskEnd] happens at [Task1.1]'s end [MaxTaskEnd] happens at [Task1.2]'s end [MaxTaskEnd] happens at [Task2.1]'s end @endgantt
16-08-1 Hyperlinks
@startgantt [task1] lasts 10 days [task1] links to [[http://plantuml.com]] @endgantt
16-09-1 Calendar
@startgantt Project starts the 20th of september 2017 [Prototype design] as [TASK1] lasts 13 days [TASK1] is colored in Lavender/LightBlue @endgantt
16-10-1 Coloring-days
@startgantt Project starts the 2020/09/01 2020/09/07 is colored in salmon 2020/09/13 to 2020/09/16 are colored in lightblue [Prototype design] as [TASK1] lasts 22 days [TASK1] is colored in Lavender/LightBlue [Prototype completed] happens at [TASK1]'s end @endgantt
16-11-01-1 Changing-scale-Daily
@startgantt saturday are closed sunday are closed Project starts the 1st of january 2021 [Prototype design end] as [TASK1] lasts 19 days [TASK1] is colored in Lavender/LightBlue [Testing] lasts 14 days [TASK1]->[Testing] 2021-01-18 to 2021-01-22 are named [End's committee] 2021-01-18 to 2021-01-22 are colored in salmon @endgantt
16-11-02-1 Changing-scale-Weekly
@startgantt printscale weekly saturday are closed sunday are closed Project starts the 1st of january 2021 [Prototype design end] as [TASK1] lasts 19 days [TASK1] is colored in Lavender/LightBlue [Testing] lasts 14 days [TASK1]->[Testing] 2021-01-18 to 2021-01-22 are named [End's committee] 2021-01-18 to 2021-01-22 are colored in salmon @endgantt
16-11-02-2 Changing-scale-Weekly
@startgantt printscale weekly Project starts the 20th of september 2020 [Prototype design] as [TASK1] lasts 130 days [TASK1] is colored in Lavender/LightBlue [Testing] lasts 20 days [TASK1]->[Testing] 2021-01-18 to 2021-01-22 are named [End's committee] 2021-01-18 to 2021-01-22 are colored in salmon @endgantt
16-11-03-1 Changing-scale-Monthly
@startgantt projectscale monthly Project starts the 20th of september 2020 [Prototype design] as [TASK1] lasts 130 days [TASK1] is colored in Lavender/LightBlue [Testing] lasts 20 days [TASK1]->[Testing] 2021-01-18 to 2021-01-22 are named [End's committee] 2021-01-18 to 2021-01-22 are colored in salmon @endgantt
16-12-1 Close-day
@startgantt project starts the 2018/04/09 saturday are closed sunday are closed 2018/05/01 is closed 2018/04/17 to 2018/04/19 is closed [Prototype design] lasts 14 days [Test prototype] lasts 4 days [Test prototype] starts at [Prototype design]'s end [Prototype design] is colored in Fuchsia/FireBrick [Test prototype] is colored in GreenYellow/Green @endgantt
16-12-2 Close-day
@startgantt 2020-07-07 to 2020-07-17 is closed 2020-07-13 is open Project starts the 2020-07-01 [Prototype design] lasts 10 days Then [Test prototype] lasts 10 days @endgantt
16-13-1 Simplified-task-succession
@startgantt [Prototype design] lasts 14 days then [Test prototype] lasts 4 days then [Deploy prototype] lasts 6 days @endgantt
16-13-2 Simplified-task-succession
@startgantt [Prototype design] lasts 14 days [Build prototype] lasts 4 days [Prepare test] lasts 6 days [Prototype design] -> [Build prototype] [Prototype design] -> [Prepare test] @endgantt
16-14-1 Separator
@startgantt [Task1] lasts 10 days then [Task2] lasts 4 days -- Phase Two -- then [Task3] lasts 5 days then [Task4] lasts 6 days @endgantt
16-15-1 Working-with-resources
@startgantt [Task1] on {Alice} lasts 10 days [Task2] on {Bob:50%} lasts 2 days then [Task3] on {Alice:25%} lasts 1 days @endgantt
16-15-2 Working-with-resources
@startgantt [Task1] on {Alice} {Bob} lasts 20 days @endgantt
16-15-3 Working-with-resources
@startgantt project starts on 2020-06-19 [Task1] on {Alice} lasts 10 days {Alice} is off on 2020-06-24 to 2020-06-26 @endgantt
16-16-1 Complex-example
@startgantt [Prototype design] lasts 13 days and is colored in Lavender/LightBlue [Test prototype] lasts 9 days and is colored in Coral/Green and starts 3 days after [Prototype design]'s end [Write tests] lasts 5 days and ends at [Prototype design]'s end [Hire tests writers] lasts 6 days and ends at [Write tests]'s start [Init and write tests report] is colored in Coral/Green [Init and write tests report] starts 1 day before [Test prototype]'s start and ends at [Test prototype]'s end @endgantt
16-17-1 Comments
@startgantt ' This is a comment [T1] lasts 3 days /' this comment is on several lines '/ [T2] starts at [T1]'s end and lasts 1 day @endgantt
16-18-01-1 Without-style
@startgantt [Task1] lasts 20 days note bottom memo1 ... memo2 ... explanations1 ... explanations2 ... end note [Task2] lasts 4 days [Task1] -> [Task2] -- Separator title -- [M1] happens on 5 days after [Task1]'s end -- end -- @endgantt
16-18-02-1 With-style
@startgantt <style> ganttDiagram { task { FontName Helvetica FontColor red FontSize 18 PlantUML Language Reference Guide (1.2021.2) 268 / 415 16.18 Using style 16 GANTT DIAGRAM FontStyle bold BackGroundColor GreenYellow LineColor blue } milestone { FontColor blue FontSize 25 FontStyle italic BackGroundColor yellow LineColor red } note { FontColor DarkGreen FontSize 10 LineColor OrangeRed } arrow { FontName Helvetica FontColor red FontSize 18 FontStyle bold BackGroundColor GreenYellow LineColor blue } separator { LineColor red BackGroundColor green FontSize 16 FontStyle bold FontColor purple } } </style> [Task1] lasts 20 days note bottom memo1 ... memo2 ... explanations1 ... explanations2 ... end note [Task2] lasts 4 days [Task1] -> [Task2] -- Separator title -- [M1] happens on 5 days after [Task1]'s end -- end -- @endgantt
16-19-1 Add-notes
@startgantt [task01] lasts 15 days note bottom memo1 ... memo2 ... explanations1 ... explanations2 ... end note [task01] -> [task02] @endgantt
16-19-2 Add-notes
@startgantt [task01] lasts 15 days note bottom memo1 ... memo2 ... explanations1 ... explanations2 ... end note [task01] -> [task02] [task03] lasts 5 days @endgantt
16-19-3 Add-notes
@startgantt -- test01 -- [task01] lasts 4 days note bottom 'note left memo1 ... memo2 ... explanations1 ... explanations2 ... end note [task02] lasts 8 days [task01] -> [task02] note bottom 'note left memo1 ... memo2 ... explanations1 ... explanations2 ... end note -- test02 -- [task03] as [t3] lasts 7 days [t3] -> [t4] @endgantt
16-19-4 Add-notes
@startgantt Project starts 2020-09-01 [taskA] starts 2020-09-01 and lasts 3 days [taskB] starts 2020-09-10 and lasts 3 days [taskB] displays on same row as [taskA] [task01] starts 2020-09-05 and lasts 4 days then [task02] lasts 8 days note bottom note for task02 more notes end note then [task03] lasts 7 days note bottom note for task03 more notes end note -- separator -- [taskC] starts 2020-09-02 and lasts 5 days [taskD] starts 2020-09-09 and lasts 5 days [taskD] displays on same row as [taskC] [task 10] starts 2020-09-05 and lasts 5 days then [task 11] lasts 5 days note bottom note for task11 more notes end note @endgantt
16-20-1 Pause-tasks
@startgantt Project starts the 5th of december 2018 saturday are closed sunday are closed 2018/12/29 is opened [Prototype design] lasts 17 days [Prototype design] pauses on 2018/12/13 [Prototype design] pauses on 2018/12/14 [Prototype design] pauses on monday [Test prototype] starts at [Prototype design]'s end and lasts 2 weeks @endgantt
16-21-1 Change-link-colors
@startgantt [T1] lasts 4 days [T2] lasts 4 days and starts 3 days after [T1]'s end with blue dotted link [T3] lasts 4 days and starts 3 days after [T2]'s end with green bold link [T4] lasts 4 days and starts 3 days after [T3]'s end with green dashed link @endgantt
16-21-2 Change-link-colors
@startgantt <style> ganttDiagram { arrow { LineColor blue } } </style> [Prototype design] lasts 7 days [Build prototype] lasts 4 days [Prepare test] lasts 6 days [Prototype design] -[#FF00FF]-> [Build prototype] [Prototype design] -[dotted]-> [Prepare test] Then [Run test] lasts 4 days @endgantt
16-22-1 Tasks-or-Milestones-on-the-same-line
@startgantt [Prototype design] lasts 13 days [Test prototype] lasts 4 days and 1 week [Test prototype] starts 1 week and 2 days after [Prototype design]'s end [Test prototype] displays on same row as [Prototype design] [r1] happens on 5 days after [Prototype design]'s end [r2] happens on 5 days after [r1]'s end [r3] happens on 5 days after [r2]'s end [r2] displays on same row as [r1] [r3] displays on same row as [r1] @endgantt
16-23-1 Highlight-today
@startgantt Project starts the 20th of september 2018 sunday are close 2018/09/21 to 2018/09/23 are colored in salmon 2018/09/21 to 2018/09/30 are named [Vacation in the Bahamas] today is 30 days after start and is colored in #AAF [Foo] happens 40 days after start [Dummy] lasts 10 days and starts 10 days after start @endgantt
16-24-1 Task-between-two-milestones
@startgantt project starts on 2020-07-01 [P_start] happens 2020-07-03 [P_end] happens 2020-07-13 [Prototype design] occurs from [P_start] to [P_end] @endgantt
16-26-1 Add-title-header-footer-caption-or-legend-on-gantt-diagram
@startgantt header some header footer some footer title My title [Prototype design] lasts 13 days legend The legend end legend caption This is caption @endgantt
16-27-1 Removing-Foot-Boxes
@startgantt hide footbox title Foot Box removed [Prototype design] lasts 15 days [Test prototype] lasts 10 days @endgantt
16-27-2 Removing-Foot-Boxes
@startgantt Project starts the 20th of september 2017 [Prototype design] as [TASK1] lasts 13 days [TASK1] is colored in Lavender/LightBlue hide footbox @endgantt
16-27-3 Removing-Foot-Boxes
@startgantt hide footbox printscale weekly saturday are closed sunday are closed Project starts the 1st of january 2021 [Prototype design end] as [TASK1] lasts 19 days [TASK1] is colored in Lavender/LightBlue [Testing] lasts 14 days [TASK1]->[Testing] 2021-01-18 to 2021-01-22 are named [End's committee] 2021-01-18 to 2021-01-22 are colored in salmon @endgantt
16-27-4 Removing-Foot-Boxes
@startgantt hide footbox projectscale monthly Project starts the 20th of september 2020 [Prototype design] as [TASK1] lasts 130 days [TASK1] is colored in Lavender/LightBlue [Testing] lasts 20 days [TASK1]->[Testing] 2021-01-18 to 2021-01-22 are named [End's committee] 2021-01-18 to 2021-01-22 are colored in salmon @endgantt
17-01-1 OrgMode-syntax
@startmindmap * Debian ** Ubuntu *** Linux Mint *** Kubuntu *** Lubuntu *** KDE Neon ** LMDE ** SolydXK ** SteamOS ** Raspbian with a very long name *** <s>Raspmbc</s> => OSMC *** <s>Raspyfi</s> => Volumio @endmindmap
17-02-1 Markdown-syntax
@startmindmap * root node * some first level node * second level node * another second level node * another first level node @endmindmap
17-03-1 Arithmetic-notation
@startmindmap + OS ++ Ubuntu +++ Linux Mint +++ Kubuntu +++ Lubuntu +++ KDE Neon ++ LMDE ++ SolydXK ++ SteamOS ++ Raspbian -- Windows 95 -- Windows 98 -- Windows NT --- Windows 8 --- Windows 10 @endmindmap
17-04-1 Multilines
@startmindmap * Class Templates **:Example 1 <code> template <typename T> class cname{ void f1()<U+003B> ... } </code> ; **:Example 2 <code> other template <typename T> class cname{ ... </code> ; @endmindmap
17-05-01-1 With-inline-color
@startmindmap *[#Orange] Colors **[#lightgreen] Green **[#FFBBCC] Rose **[#lightblue] Blue @endmindmap
17-05-01-2 With-inline-color
@startmindmap +[#Orange] Colors ++[#lightgreen] Green ++[#FFBBCC] Rose --[#lightblue] Blue @endmindmap
17-05-01-3 With-inline-color
@startmindmap *[#Orange] root node *[#lightgreen] some first level node *[#FFBBCC] second level node *[#lightblue] another second level node *[#lightgreen] another first level node @endmindmap
17-05-02-1 With-style-color
@startmindmap <style> mindmapDiagram { .green { BackgroundColor lightgreen } .rose { BackgroundColor #FFBBCC } .your_style_name { BackgroundColor lightblue } } </style> * Colors ** Green <<green>> ** Rose <<rose>> ** Blue <<your_style_name>> @endmindmap
17-05-02-2 With-style-color
@startmindmap <style> mindmapDiagram { .green { BackgroundColor lightgreen } .rose { BackgroundColor #FFBBCC } .your_style_name { BackgroundColor lightblue } } </style> + Colors ++ Green <<green>> ++ Rose <<rose>> -- Blue <<your_style_name>> @endmindmap
17-05-02-3 With-style-color
@startmindmap <style> mindmapDiagram { .green { BackgroundColor lightgreen } .rose { BackgroundColor #FFBBCC } .your_style_name { BackgroundColor lightblue } } </style> * root node * some first level node <<green>> * second level node <<rose>> * another second level node <<your_style_name>> * another first level node <<green>> @endmindmap
17-06-1 Removing-box
@startmindmap * root node ** some first level node ***_ second level node ***_ another second level node ***_ foo ***_ bar ***_ foobar ** another first level node @endmindmap
17-06-2 Removing-box
@startmindmap *_ root node **_ some first level node ***_ second level node ***_ another second level node ***_ foo ***_ bar ***_ foobar **_ another first level node @endmindmap
17-06-3 Removing-box
@startmindmap + root node ++ some first level node +++_ second level node +++_ another second level node +++_ foo +++_ bar +++_ foobar ++_ another first level node -- some first right level node --_ another first right level node @endmindmap
17-07-1 Changing-diagram-direction
@startmindmap * count ** 100 *** 101 *** 102 ** 200 left side ** A *** AA *** AB ** B @endmindmap
17-08-1 Complete-example
@startmindmap caption figure 1 title My super title * <&flag>Debian ** <&globe>Ubuntu *** Linux Mint *** Kubuntu *** Lubuntu *** KDE Neon ** <&graph>LMDE ** <&pulse>SolydXK ** <&people>SteamOS ** <&star>Raspbian with a very long name *** <s>Raspmbc</s> => OSMC *** <s>Raspyfi</s> => Volumio header My super header endheader center footer My super footer legend right Short legend endlegend @endmindmap
17-09-01-1 Changing-style-node-depth
@startmindmap <style> mindmapDiagram { node { BackgroundColor lightGreen } :depth(1) { BackGroundColor white } } </style> * Linux ** NixOS ** Debian *** Ubuntu **** Linux Mint **** Kubuntu **** Lubuntu **** KDE Neon @endmindmap
17-09-02-1 Changing-style-boxless
@startmindmap <style> mindmapDiagram { node { BackgroundColor lightGreen } boxless { FontColor darkgreen } } </style> * Linux ** NixOS ** Debian ***_ Ubuntu **** Linux Mint **** Kubuntu **** Lubuntu **** KDE Neon @endmindmap
17-10-1 Word-Wrap
@startmindmap <style> node { Padding 12 Margin 3 HorizontalAlignment center LineColor blue LineThickness 3.0 BackgroundColor gold RoundCorner 40 MaximumWidth 100 } rootNode { LineStyle 8.0;3.0 LineColor red BackgroundColor white LineThickness 1.0 RoundCorner 0 Shadowing 0.0 } leafNode { LineColor gold RoundCorner 0 Padding 3 } arrow { LineStyle 4 LineThickness 0.5 LineColor green } </style> * Hi =) ** sometimes i have node in wich i want to write a long text *** this results in really huge diagram **** of course, i can explicit split with a\nnew line **** but it could be cool if PlantUML was able to split long lines, maybe with an option @endmindmap
18-01-1 OrgMode-syntax
@startwbs * Business Process Modelling WBS ** Launch the project *** Complete Stakeholder Research *** Initial Implementation Plan ** Design phase *** Model of AsIs Processes Completed **** Model of AsIs Processes Completed1 **** Model of AsIs Processes Completed2 *** Measure AsIs performance metrics *** Identify Quick Wins ** Complete innovate phase @endwbs
18-02-1 Change-direction
@startwbs * Business Process Modelling WBS ** Launch the project *** Complete Stakeholder Research *** Initial Implementation Plan ** Design phase *** Model of AsIs Processes Completed ****< Model of AsIs Processes Completed1 ****> Model of AsIs Processes Completed2 ***< Measure AsIs performance metrics ***< Identify Quick Wins @endwbs
18-03-1 Arithmetic-notation
@startwbs + New Job ++ Decide on Job Requirements +++ Identity gaps +++ Review JDs ++++ Sign-Up for courses ++++ Volunteer ++++ Reading ++- Checklist +++- Responsibilities +++- Location ++ CV Upload Done +++ CV Updated ++++ Spelling & Grammar ++++ Check dates ---- Skills +++ Recruitment sites chosen @endwbs
18-04-02-1 Several-boxless-node
@startwbs + Project + Part One + Task 1.1 - LeftTask 1.2 + Task 1.3 + Part Two + Task 2.1 + Task 2.2 -_ Task 2.2.1 To the left boxless -_ Task 2.2.2 To the Left boxless +_ Task 2.2.3 To the right boxless @endwbs
18-04-03-1 All-boxless-node
@startwbs +_ Project +_ Part One +_ Task 1.1 -_ LeftTask 1.2 +_ Task 1.3 +_ Part Two +_ Task 2.1 +_ Task 2.2 -_ Task 2.2.1 To the left boxless -_ Task 2.2.2 To the Left boxless +_ Task 2.2.3 To the right boxless @endwbs
18-04-05-1 Several-boxless-node
@startwbs * World ** America ***_ Canada ***_ Mexico ***_ USA ** Europe ***_ England ***_ Germany ***_ Spain @endwbs
18-04-06-1 All-boxless-node
@startwbs *_ World **_ America ***_ Canada ***_ Mexico ***_ USA **_ Europe ***_ England ***_ Germany ***_ Spain @endwbs
18-05-1 Colors
@startwbs *[#SkyBlue] this is the partner workpackage **[#pink] this is my workpackage ** this is another workpackage @endwbs
18-05-2 Colors
@startwbs +[#SkyBlue] this is the partner workpackage ++[#pink] this is my workpackage ++ this is another workpackage @endwbs
18-05-3 Colors
@startwbs <style> wbsDiagram { .pink { BackgroundColor pink } .your_style_name { BackgroundColor SkyBlue } } </style> * this is the partner workpackage <<your_style_name>> ** this is my workpackage <<pink>> ** this is another workpackage @endwbs
18-05-4 Colors
@startwbs <style> wbsDiagram { .pink { BackgroundColor pink } .your_style_name { BackgroundColor SkyBlue } } </style> + this is the partner workpackage <<your_style_name>> ++ this is my workpackage <<pink>> ++ this is another workpackage @endws
18-06-1 Using-style
@startwbs <style> wbsDiagram { // all lines (meaning connector and borders, there are no other lines in WBS) are black by default Linecolor black arrow { // note that connector are actually "arrow" even if they don't look like as arrow // This is to be consistent with other UML diagrams. Not 100% sure that it's a good idea // So now connector are green LineColor green } :depth(0) { // will target root node BackgroundColor White RoundCorner 10 LineColor red // Because we are targetting depth(0) for everything, border and connector for level 0 will be red } arrow { :depth(2) { // Targetting only connector between Mexico-Chihuahua and USA-Texas LineColor blue LineStyle 4 LineThickness .5 } } node { :depth(2) { LineStyle 2 LineThickness 2.5 } } boxless { // will target boxless node with '_' FontColor darkgreen } } </style> * World ** America *** Canada *** Mexico **** Chihuahua *** USA **** Texas ***< New York ** Europe ***_ England ***_ Germany ***_ Spain @endwbs
18-07-1 Word-Wrap
@startwbs <style> node { Padding 12 Margin 3 HorizontalAlignment center LineColor blue LineThickness 3.0 BackgroundColor gold RoundCorner 40 MaximumWidth 100 } rootNode { LineStyle 8.0;3.0 LineColor red BackgroundColor white LineThickness 1.0 RoundCorner 0 Shadowing 0.0 } leafNode { LineColor gold RoundCorner 0 Padding 3 } arrow { LineStyle 4 LineThickness 0.5 LineColor green } </style> * Hi =) ** sometimes i have node in wich i want to write a long text *** this results in really huge diagram **** of course, i can explicit split with a\nnew line **** but it could be cool if PlantUML was able to split long lines, maybe with an option who specify the maximum width of a node @endwbs
19-01-1 Standalone-diagram
@startmath f(t)=(a_0)/2 + sum_(n=1)^ooa_ncos((npit)/L)+sum_(n=1)^oo b_n\ sin((npit)/L) @endmath
19-01-2 Standalone-diagram
@startlatex \sum_{i=0}^{n-1} (a_i + b_i^2) @endlatex
19-1 Maths
@startuml :<math>int_0^1f(x)dx</math>; :<math>x^2+y_1+z_12^34</math>; note right Try also <math>d/dxf(x)=lim_(h->0)(f(x+h)-f(x))/h</math> <latex>P(y|\mathbf{x}) \mbox{ or } f(\mathbf{x})+\epsilon</latex> end note @enduml
19-2 Maths
@startuml Bob -> Alice : Can you solve: <math>ax^2+bx+c=0</math> Alice --> Bob: <math>x = (-b+-sqrt(b^2-4ac))/(2a)</math> @enduml
20-01-1 Information-Engineering-Relations
@startuml Entity01 }|..|| Entity02 Entity03 }o..o| Entity04 Entity05 ||--o{ Entity06 Entity07 |o--|| Entity08 @enduml
20-02-1 Entities
@startuml entity Entity01 { * identifying_attribute -- * mandatory_attribute optional_attribute } @enduml
20-02-2 Entities
@startuml entity Entity01 { optional attribute **optional bold attribute** * **mandatory bold attribute** } @enduml
20-03-1 Complete-Example
@startuml ' hide the spot hide circle ' avoid problems with angled crows feet skinparam linetype ortho entity "Entity01" as e01 { *e1_id : number <<generated>> -- *name : text description : text } entity "Entity02" as e02 { *e2_id : number <<generated>> -- *e1_id : number <<FK>> other_details : text } entity "Entity03" as e03 { *e3_id : number <<generated>> -- e1_id : number <<FK>> other_details : text } e01 ||..o{ e02 e01 |o..o{ e03 @enduml
21-02-1 Zoom
@startuml scale 180*90 Bob->Alice : hello @enduml
21-03-1 Title
@startuml skinparam titleBorderRoundCorner 15 skinparam titleBorderThickness 2 skinparam titleBorderColor red skinparam titleBackgroundColor Aqua-CadetBlue title Simple communication\nexample Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response @enduml
21-03-2 Title
@startuml title <u>Simple</u> communication example on <i>several</i> lines and using <back:cadetblue>creole tags</back> end title Alice -> Bob: Authentication Request Bob -> Alice: Authentication Response @enduml
21-04-1 Caption
@startuml caption figure 1 Alice -> Bob: Hello @enduml
21-05-1 Footer-and-header
@startuml Alice -> Bob: Authentication Request header <font color=red>Warning:</font> Do not use in production. endheader center footer Generated for demonstration @enduml
21-06-1 Legend-the-diagram
@startuml Alice -> Bob : Hello legend right Short legend endlegend @enduml
21-06-2 Legend-the-diagram
@startuml Alice -> Bob : Hello legend top left Short legend endlegend @enduml
22-01-1 Emphasized-text
@startuml Alice -> Bob : hello --there-- here ... Some ~~long delay~~ ... Bob -> Alice : ok note left This is **bold** This is //italics// This is ""monospaced"" This is --stricken-out-- This is __underlined__ This is ~~wave-underlined~~ end note @enduml
22-02-1 Lists
@startuml object demo { * Bullet list * Second item } note left * Bullet list * Second item ** Sub item end note legend # Numbered list # Second item ## Sub item ## Another sub item * Can't quite mix * Numbers and bullets # Third item end legend @enduml
22-03-1 Escape-character
@startuml object demo { This is not ~___underscored__. This is not ~""monospaced"". } @enduml
22-04-1 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
22-05-1 Headingsuml
@startuml usecase UC1 as " = Extra-large heading Some text == Large heading Other text === Medium heading Information .... ==== Small heading" @enduml
22-06-1 Legacy-HTML
@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> ---- * Use image : <img:http://plantuml.com/logo3.png> ; @enduml
22-07-1 Code
@startuml Alice -> Bob : hello note right <code> main() { printf("Hello world"); } </code> end note @enduml
22-07-2 Code
@startuml Alice -> Bob : hello note left <code> This is **bold** This is //italics// This is ""monospaced"" This is --stricken-out-- This is __underlined__ This is ~~wave-underlined~~ --test Unicode and icons-- This is <U+221E> long This is a <&code> icon </code> end note note right This is **bold** This is //italics// This is ""monospaced"" This is --stricken-out-- This is __underlined__ This is ~~wave-underlined~~ --test Unicode and icons-- This is <U+221E> long This is a <&code> icon end note @enduml
22-08-01-1 Create-a-table
@startuml skinparam titleFontSize 14 title Example of simple table |= |= table |= header | | a | table | row | | b | table | row | end title [*] --> State1 @enduml
22-08-02-1 Add-color-on-rows-or-cells
@startuml start :Here is the result |= |= table |= header | | a | table | row | |<#FF8080> red |<#80FF80> green |<#8080FF> blue | <#yellow>| b | table | row |; @enduml
22-08-03-1 Add-color-on-border-and-text
@startuml title <#lightblue,#red>|= Step |= Date |= Name |= Status |= Link | <#lightgreen>| 1.1 | TBD | plantuml news |<#Navy><color:OrangeRed><b> Unknown | [[https://plantuml.com/news plantuml news]] | end title @enduml
22-08-04-1 No-border-or-same-color-as-the-background
@startuml node n note right of n <#FBFB77,#FBFB77>|= Husky / Yorkie |= Foo | | SourceTree1 | foo1 | | ST2 | foo2 | end note @enduml
22-08-05-1 Bold-header-or-not
@startuml note as deepCSS0 |<#white> Husky / Yorkie | |=<#gainsboro> SourceTree0 | endnote note as deepCSS1 |= <#white> Husky / Yorkie |= Foo | |<#gainsboro><r> SourceTree1 | foo1 | endnote note as deepCSS2 |= Husky / Yorkie | |<#gainsboro> SourceTree2 | endnote note as deepCSS3 <#white>|= Husky / Yorkie |= Foo | |<#gainsboro> SourceTree1 | foo1 | endnote @enduml
22-09-1 Tree
@startuml skinparam titleFontSize 14 title Example of Tree |_ First line |_ **Bom (Model)** |_ prop1 |_ prop2 |_ prop3 |_ Last line end title [*] --> State1 @enduml
22-09-2 Tree
@startuml class Foo { **Bar (Model)** |_ prop |_ **Bom (Model)** |_ prop2 |_ prop3 |_ prop3.1 |_ prop4 :( -- } @enduml
22-09-3 Tree
@startuml [A] as A rectangle "Box B" { component B [ Level 1 |_ Level 2a |_ Level 3a |_ Level 3b |_ Level 3c |_ Level 4a |_ Level 3d |_ Level 2b |_ Level 3e ] } A -> B @enduml
22-10-1 Special-characters
@startuml usecase direct as "this is ∞ long" usecase ampHash as "this is also ∞ long" usecase angleBrackets as "this is also <U+221E> long" @enduml
22-11-1 OpenIconic
@startuml title: <size:20><&heart>Use of OpenIconic<&heart></size> class Wifi note left Click on <&wifi> end note @enduml
22-11-2 OpenIconic
@startuml listopeniconic @enduml
22-12-01-1 Activity
@startuml start :**test list 1** * Bullet list * Second item ** Sub item *** Sub sub item * Third item ---- **test list 2** # Numbered list # Second item ## Sub item ## Another sub item # Third item; stop @enduml
22-12-02-1 Class
@startuml class a { **test list 1** * Bullet list * Second item ** Sub item *** Sub sub item * Third item ---- **test list 2** # Numbered list # Second item ## Sub item ## Another sub item # Third item } a -- b @enduml
22-12-03-1 Component-Deployment-Use-Case
@startuml node n [ **test list 1** * Bullet list * Second item ** Sub item *** Sub sub item * Third item ---- **test list 2** # Numbered list # Second item ## Sub item ## Another sub item # Third item ] file f as " **test list 1** * Bullet list * Second item ** Sub item *** Sub sub item * Third item ---- **test list 2** # Numbered list # Second item ## Sub item ## Another sub item # Third item " @enduml
22-12-05-1 Object
@startuml object user { **test list 1** * Bullet list * Second item ** Sub item *** Sub sub item * Third item ---- **test list 2** # Numbered list # Second item ## Sub item ## Another sub item # Third item } @enduml
22-12-06-1 MindMap
@startmindmap * root ** d1 **:**test list 1** * Bullet list * Second item ** Sub item *** Sub sub item * Third item ---- **test list 2** # Numbered list # Second item ## Sub item ## Another sub item # Third item; @endmindmap
22-12-08-1 Note
@startuml note as n **test list 1** * Bullet list * Second item ** Sub item *** Sub sub item * Third item ---- **test list 2** # Numbered list # Second item ## Sub item ## Another sub item # Third item end note @enduml
22-13-01-1 Activity
@startuml start :You can have horizontal line ---- Or double line ==== Or strong line ____ Or dotted line ..My title.. Or dotted title //and title... // ==Title== Or double-line title --Another title-- Or single-line title Enjoy!; stop @enduml
22-13-02-1 Class
@startuml class a { You can have horizontal line ---- Or double line ==== Or strong line ____ Or dotted line ..My title.. Or dotted title //and title... // ==Title== Or double-line title --Another title-- Or single-line title Enjoy! } a -- b @enduml
22-13-03-1 Component-Deployment-Use-Case
@startuml node n [ You can have horizontal line ---- Or double line ==== Or strong line ____ Or dotted line ..My title.. //and title... // ==Title== --Another title-- Enjoy! ] file f as " You can have horizontal line ---- Or double line ==== Or strong line ____ Or dotted line ..My title.. //and title... // ==Title== --Another title-- Enjoy! " person p [ You can have horizontal line ---- Or double line ==== Or strong line ____ Or dotted line ..My title.. //and title... // ==Title== --Another title-- Enjoy! ] @enduml
22-13-05-1 Object
@startuml object user { You can have horizontal line ---- Or double line ==== Or strong line ____ Or dotted line ..My title.. //and title... // ==Title== --Another title-- Enjoy! } @enduml
22-13-06-1 MindMap
@startmindmap * root ** d1 **:You can have horizontal line ---- Or double line ==== Or strong line ____ Or dotted line ..My title.. //and title... // ==Title== --Another title-- Enjoy!; @endmindmap
22-13-08-1 Note
@startuml note as n You can have horizontal line ---- Or double line ==== Or strong line ____ Or dotted line ..My title.. //and title... // ==Title== --Another title-- Enjoy! end note @enduml
22-14-1 Style-equivalent-between-Creole-and-HTML
@startmindmap * Style equivalent\n(between Creole and HTML) **:**Creole** ---- <#silver>|= code|= output| | \n This is ""~**bold**""\n | \n This is **bold** | | \n This is ""~//italics//""\n | \n This is //italics// | | \n This is ""~""monospaced~"" ""\n | \n This is ""monospaced"" | | \n This is ""~--stroked--""\n | \n This is --stroked-- | | \n This is ""~__underlined__""\n | \n This is __underlined__ | | \n This is ""<U+007E><U+007E>waved<U+007E><U+007E>""\n | \n This is ~~waved~~ |; **:<b>Legacy HTML like ---- <#silver>|= code|= output| | \n This is ""~<b>bold</b>""\n | \n This is <b>bold</b> | | \n This is ""~<i>italics</i>""\n | \n This is <i>italics</i> | | \n This is ""~<font:monospaced>monospaced</font>""\n | \n This is <font:monospaced>monospaced</font> | | \n This is ""~<s>stroked</s>""\n | \n This is <s>stroked</s> | | \n This is ""~<u>underlined</u>""\n | \n This is <u>underlined</u> | | \n This is ""~<w>waved</w>""\n | \n This is <w>waved</w> | And color as a bonus... <#silver>|= code|= output| | \n This is ""~<s:""<color:green>""green""</color>"">stroked</s>""\n | \n This is <s:green>stroked</s> | | \n This is ""~<u:""<color:red>""red""</color>"">underlined</u>""\n | \n This is <u:red>underlined</u> | | \n This is ""~<w:""<color:#0000FF>""#0000FF""</color>"">waved</w>""\n | \n This is <w:#0000FF>waved</w> |; @endmindmap
23-01-1 Changing-colors
@startuml sprite $foo1 { FFFFFFFFFFFFFFF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF FFFFFFFFFFFFFFF } Alice -> Bob : Testing <$foo1,scale=3.4,color=orange> @enduml
23-04-1 Examples
@startuml sprite $printer [15x15/8z] NOtH3W0W208HxFz_kMAhj7lHWpa1XC716sz0Pq4MVPEWfBHIuxP3L6kbTcizR8tAhzaqFvXwvFfPEqm0 start :click on <$printer> to print the page; @enduml
23-04-2 Examples
@startuml sprite $bug [15x15/16z] PKzR2i0m2BFMi15p__FEjQEqB1z27aeqCqixa8S4OT7C53cKpsHpaYPDJY_12MHM-BLRyywPhrrlw3qumqNThmXgd1TOterAZmOW8sgiJafogofWRwtV3nCF sprite $printer [15x15/8z] NOtH3W0W208HxFz_kMAhj7lHWpa1XC716sz0Pq4MVPEWfBHIuxP3L6kbTcizR8tAhzaqFvXwvFfPEqm0 sprite $disk { 444445566677881 436000000009991 43600000000ACA1 53700000001A7A1 53700000012B8A1 53800000123B8A1 63800001233C9A1 634999AABBC99B1 744566778899AB1 7456AAAAA99AAB1 8566AFC228AABB1 8567AC8118BBBB1 867BD4433BBBBB1 39AAAAABBBBBBC1 } 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
23-06-1 Listing-Sprites
@startuml !define osaPuml https://raw.githubusercontent.com/Crashedmind/PlantUML-opensecurityarchitecture2-icons/master !include osaPuml/Common.puml !include osaPuml/User/all.puml listsprites @enduml
23-1 Defining-and-using-sprites
@startuml sprite $foo1 { FFFFFFFFFFFFFFF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF FFFFFFFFFFFFFFF } Alice -> Bob : Testing <$foo1> @enduml
23-2 Defining-and-using-sprites
@startuml sprite $foo1 { FFFFFFFFFFFFFFF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF F0123456789ABCF FFFFFFFFFFFFFFF } Alice -> Bob : Testing <$foo1{scale=3}> @enduml
24-03-1 Black-and-White
@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
24-04-1 Shadowing
@startuml left to right direction skinparam shadowing<<no_shadow>> false skinparam shadowing<<with_shadow>> true actor User (Glowing use case) <<with_shadow>> as guc (Flat use case) <<no_shadow>> as fuc User -- guc User -- fuc @enduml
24-05-1 Reverse-colors
@startuml skinparam monochrome reverse 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
24-06-1 Colors
@startuml colors @enduml
24-08-1 Text-Alignment
@startuml skinparam sequenceMessageAlign center Alice -> Bob : Hi Bob -> Alice : This is very long @enduml
24-08-2 Text-Alignment
@startuml skinparam sequenceMessageAlign right Alice -> Bob : Hi Bob -> Alice : This is very long @enduml
24-08-3 Text-Alignment
@startuml skinparam sequenceMessageAlign direction Alice -> Bob : Hi Bob -> Alice: Hi @enduml
24-09-1 Examples
@startuml skinparam backgroundColor #EEEBDC skinparam handwritten true skinparam sequence { ArrowColor DeepSkyBlue ActorBorderColor DeepSkyBlue LifeLineBorderColor blue LifeLineBackgroundColor #A9DCDF ParticipantBorderColor DeepSkyBlue ParticipantBackgroundColor DodgerBlue ParticipantFontName Impact ParticipantFontSize 17 ParticipantFontColor #A9DCDF ActorBackgroundColor aqua ActorFontColor DeepSkyBlue ActorFontSize 17 ActorFontName Aapex } actor User participant "First Class" as A participant "Second Class" as B participant "Last Class" as C User -> A: DoWork activate A A -> B: Create Request activate B B -> C: DoWork activate C C --> B: WorkDone destroy C B --> A: Request Created deactivate B A --> User: Done deactivate A @enduml
24-09-2 Examples
@startuml skinparam handwritten true skinparam actor { BorderColor black FontName Courier BackgroundColor<< Human >> Gold } skinparam usecase { BackgroundColor DarkSeaGreen BorderColor DarkSlateGray BackgroundColor<< Main >> YellowGreen BorderColor<< Main >> YellowGreen ArrowColor Olive } User << Human >> :Main Database: as MySql << Application >> (Start) << One Shot >> (Use the application) as (Use) << Main >> User -> (Start) User --> (Use) MySql --> (Use) @enduml
24-09-3 Examples
@startuml skinparam roundcorner 20 skinparam class { BackgroundColor PaleGreen ArrowColor SeaGreen BorderColor SpringGreen } skinparam stereotypeCBackgroundColor YellowGreen Class01 "1" *-- "many" Class02 : contains Class03 o-- Class04 : aggregation @enduml
24-09-4 Examples
@startuml skinparam interface { backgroundColor RosyBrown borderColor orange } skinparam component { FontSize 13 BackgroundColor<<Apache>> LightCoral BorderColor<<Apache>> #FF6655 FontName Courier BorderColor black BackgroundColor gold ArrowFontName Impact ArrowColor #FF6655 ArrowFontColor #777777 } () "Data Access" as DA [Web Server] << Apache >> DA - [First Component] [First Component] ..> () HTTP : use HTTP - [Web Server] @enduml
24-09-5 Examples
@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
24-10-1 List-of-all-skinparam-parameters
@startuml skinparameters @enduml
25-02-1 Variable-definition
@startuml !$ab = "foo1" !$cd = "foo2" !$ef = $ab + $cd Alice -> Bob : $ab Alice -> Bob : $cd Alice -> Bob : $ef @enduml
25-04-1 Conditions
@startuml !$a = 10 !$ijk = "foo" Alice -> Bob : A !if ($ijk == "foo") && ($a+10>=4) Alice -> Bob : yes !else Alice -> Bob : This should not appear !endif Alice -> Bob : B @enduml
25-05-1 While-loop
@startuml !procedure $foo($arg) :procedure start; !while $arg!=0 !$i=3 #palegreen:arg=$arg; !while $i!=0 :arg=$arg and i=$i; !$i = $i - 1 !endwhile !$arg = $arg - 1 !endwhile :procedure end; !endprocedure start $foo(2) end @enduml
25-05-2 While-loop
@startmindmap !procedure $foo($arg) !while $arg!=0 !$i=3 **[#palegreen] arg = $arg !while $i!=0 *** i = $i !$i = $i - 1 !endwhile !$arg = $arg - 1 !endwhile !endprocedure *:While Loop; $foo(2) @endmindmap
25-06-1 Procedure
@startuml !procedure $msg($source, $destination) $source --> $destination !endprocedure !procedure $init_class($name) class $name { $addCommonMethod() } !endprocedure !procedure $addCommonMethod() toString() hashCode() !endprocedure $init_class("foo1") $init_class("foo2") $msg("foo1", "foo2") @enduml
25-07-1 Return-function
@startuml !function $double($a) !return $a + $a !endfunction Alice -> Bob : The double of 3 is $double(3) @enduml
25-07-2 Return-function
@startuml !function $double($a) !return $a + $a Alice -> Bob : The double of 3 is $double(3) Alice -> Bob : $double("This work also for strings.") @enduml
25-07-3 Return-function
@startuml !function $dummy() !local $ijk = "local" !return "Alice -> Bob : " + $ijk !endfunction !global $ijk = "foo" Alice -> Bob : $ijk $dummy() Alice -> Bob : $ijk @enduml
25-08-1 Default-argument-value
@startuml !function $inc($value, $step=1) !return $value + $step !endfunction Alice -> Bob : Just one more $inc(3) Alice -> Bob : Add two to three : $inc(3, 2) @enduml
25-08-2 Default-argument-value
@startuml !procedure defaulttest($x, $y="DefaultY", $z="DefaultZ") note over Alice x = $x y = $y z = $z end note !endprocedure defaulttest(1, 2, 3) defaulttest(1, 2) defaulttest(1) @enduml
25-09-1 Unquoted-procedure-or-function
@startuml !unquoted function id($text1, $text2="FOO") !return $text1 + $text2 alice -> bob : id(aa) alice -> bob : id(ab,cd) @enduml
25-10-1 Keywords-arguments
@startuml !unquoted procedure $element($alias, $description="", $label="", $technology="", $size=12, $colour="green") rectangle $alias as " <color:$colour><<$alias>></color> ==$label== //<size:$size>[$technology]</size>// $description" !endprocedure $element(myalias, "This description is %newline()on several lines", $size=10, $technology="Java") @enduml
25-11-1 Including-files-or-URL
@startuml interface List List : int size() List : void clear() List <|.. ArrayList @enduml
25-14-1 Logging
@startuml !function bold($text) !$result = "<b>"+ $text +"</b>" !log Calling bold function with $text. The result is $result !return $result !endfunction Alice -> Bob : This is bold("bold") Alice -> Bob : This is bold("a second call") @enduml
25-15-1 Memory-dump
@startuml !function $inc($string) !$val = %intval($string) !log value is $val !dump_memory !return $val+1 !endfunction Alice -> Bob : 4 $inc("3") !unused = "foo" !dump_memory EOF @enduml
25-16-1 Assertion
@startuml Alice -> Bob : Hello !assert %strpos("abcdef", "cd")==3 : "This always fails" @enduml
25-19-1 Argument-concatenation
@startuml !unquoted procedure COMP_TEXTGENCOMP(name) [name] << Comp >> interface Ifc << IfcType >> AS name##Ifc name##Ifc - [name] !endprocedure COMP_TEXTGENCOMP(dummy) @enduml
25-20-1 Dynamic-invocation
@startuml !procedure $go() Bob -> Alice : hello !endprocedure !$wrapper = "$go" %invoke_procedure($wrapper) @enduml
25-20-2 Dynamic-invocation
@startuml !procedure $go($txt) Bob -> Alice : $txt !endprocedure %invoke_procedure("$go", "hello from Bob...") @enduml
25-20-3 Dynamic-invocation
@startuml !function bold($text) !return "<b>"+ $text +"</b>" !endfunction Alice -> Bob : %call_user_func("bold", "Hello") there @enduml
25-21-1 Evaluation-of-addition-depending-of-data-types
@startuml title <#LightBlue>|= |= $a |= $b |= <U+0025>string($a + $b)| <#LightGray>| type | str | str | str (concatenation) | | example |= "a" |= "b" |= %string("a" + "b") | <#LightGray>| type | str | int | str (concatenation) | | ex.|= "a" |= 2 |= %string("a" + 2) | <#LightGray>| type | str | int | str (concatenation) | | ex.|= 1 |= "b" |= %string(1 + "b") | <#LightGray>| type | bool | str | str (concatenation) | | ex.|= <U+0025>true() |= "b" |= %string(%true() + "b") | <#LightGray>| type | str | bool | str (concatenation) | | ex.|= "a" |= <U+0025>false() |= %string("a" + %false()) | <#LightGray>| type | int | int | int (addition of int) | | ex.|= 1 |= 2 |= %string(1 + 2) | <#LightGray>| type | bool | int | int (addition) | | ex.|= <U+0025>true() |= 2 |= %string(%true() + 2) | <#LightGray>| type | int | bool | int (addition) | | ex.|= 1 |= <U+0025>false() |= %string(1 + %false()) | <#LightGray>| type | int | int | int (addition) | | ex.|= 1 |= <U+0025>intval("2") |= %string(1 + %intval("2")) | end title @enduml
26-01-1 Examples
@startuml skinparam handwritten true 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
26-01-2 Examples
@startuml (*) --> "膩平台" --> === S1 === --> 鞠躬向公眾 --> === S2 === --> 這傢伙波武器 --> (*) skinparam backgroundColor #AAFFFF skinparam activityStartColor red skinparam activityBarColor SaddleBrown skinparam activityEndColor Silver skinparam activityBackgroundColor Peru skinparam activityBorderColor Peru @enduml
26-01-3 Examples
@startuml skinparam usecaseBackgroundColor DarkSeaGreen skinparam usecaseArrowColor Olive skinparam actorBorderColor black skinparam usecaseBorderColor DarkSlateGray 使用者 << 人類 >> "主數據庫" as 數據庫 << 應用程式 >> (草創) << 一桿 >> "主数据燕" as (贏余) << 基本的 >> 使用者 -> (草創) 使用者 --> (贏余) 數據庫 --> (贏余) @enduml
26-01-4 Examples
@startuml () "Σωκράτης\nείναι ψεύτης" as Σωκράτης Σωκράτης - [Πτηνά πολεμοχαρής] [Πτηνά πολεμοχαρής] ..> () Αθήνα : Αυτές οι φράσεις\nδεν σημαίνουν τίποτα @enduml
27-01-1 List-of-Standard-Library
@startuml stdlib @enduml
27-02-1 ArchiMate
@startuml !include <archimate/Archimate> title Archimate Sample - Internet Browser ' Elements Business_Object(businessObject, "A Business Object") Business_Process(someBusinessProcess,"Some Business Process") Business_Service(itSupportService, "IT Support for Business (Application Service)") Application_DataObject(dataObject, "Web Page Data \n 'on the fly'") Application_Function(webpageBehaviour, "Web page behaviour") Application_Component(ActivePartWebPage, "Active Part of the web page \n 'on the fly'") Technology_Artifact(inMemoryItem,"in memory / 'on the fly' html/javascript") Technology_Service(internetBrowser, "Internet Browser Generic & Plugin") Technology_Service(internetBrowserPlugin, "Some Internet Browser Plugin") Technology_Service(webServer, "Some web server") 'Relationships Rel_Flow_Left(someBusinessProcess, businessObject, "") Rel_Serving_Up(itSupportService, someBusinessProcess, "") Rel_Specialization_Up(webpageBehaviour, itSupportService, "") Rel_Flow_Right(dataObject, webpageBehaviour, "") Rel_Specialization_Up(dataObject, businessObject, "") Rel_Assignment_Left(ActivePartWebPage, webpageBehaviour, "") Rel_Specialization_Up(inMemoryItem, dataObject, "") Rel_Realization_Up(inMemoryItem, ActivePartWebPage, "") Rel_Specialization_Right(inMemoryItem,internetBrowser, "") Rel_Serving_Up(internetBrowser, webpageBehaviour, "") Rel_Serving_Up(internetBrowserPlugin, webpageBehaviour, "") Rel_Aggregation_Right(internetBrowser, internetBrowserPlugin, "") Rel_Access_Up(webServer, inMemoryItem, "") Rel_Serving_Up(webServer, internetBrowser, "") @enduml
27-03-1 AWS-library
@startuml !include <aws/common> !include <aws/Storage/AmazonS3/AmazonS3> AMAZONS3(s3_internal) AMAZONS3(s3_partner,"Vendor's S3") s3_internal <- s3_partner @enduml
27-03-2 AWS-library
@startuml !include <aws/common> !include <aws/Storage/AmazonS3/AmazonS3> !include <aws/Storage/AmazonS3/AmazonS3_LARGE> skinparam nodeBackgroundColor White skinparam storage<<**AmazonS3**>> { backgroundColor #F9DFDC } AMAZONS3(s3_internal,"Default S3") AMAZONS3(s3_internal2,"S3 as node",node) AMAZONS3_LARGE(s3_partner,"Large S3") s3_internal2 <-r- s3_partner s3_internal <-l- s3_partner @enduml
27-04-1 Amazon-Labs-AWS-Library
@startuml !include <awslib/AWSCommon> !include <awslib/InternetOfThings/IoTRule> !include <awslib/Analytics/KinesisDataStreams> !include <awslib/ApplicationIntegration/SimpleQueueService> left to right direction agent "Published Event" as event #fff IoTRule(iotRule, "Action Error Rule", "error if Kinesis fails") KinesisDataStreams(eventStream, "IoT Events", "2 shards") SimpleQueueService(errorQueue, "Rule Error Queue", "failed Rule actions") event --> iotRule : JSON message iotRule --> eventStream : messages iotRule --> errorQueue : Failed action message @enduml
27-05-1 Azure-library
@startuml !include <azure/AzureCommon> !include <azure/Analytics/AzureEventHub> !include <azure/Analytics/AzureStreamAnalyticsJob> !include <azure/Databases/AzureCosmosDb> left to right direction agent "Device Simulator" as devices #fff AzureEventHub(fareDataEventHub, "Fare Data", "PK: Medallion HackLicense VendorId; 3 TUs") AzureEventHub(tripDataEventHub, "Trip Data", "PK: Medallion HackLicense VendorId; 3 TUs") AzureStreamAnalyticsJob(streamAnalytics, "Stream Processing", "6 SUs") AzureCosmosDb(outputCosmosDb, "Output Database", "1,000 RUs") devices --> fareDataEventHub devices --> tripDataEventHub fareDataEventHub --> streamAnalytics tripDataEventHub --> streamAnalytics streamAnalytics --> outputCosmosDb @enduml
27-06-1 C4-library
@startuml !include <C4/C4_Container> Person(personAlias, "Label", "Optional Description") Container(containerAlias, "Label", "Technology", "Optional Description") System(systemAlias, "Label", "Optional Description") Rel(personAlias, containerAlias, "Label", "Optional Technology") @enduml
27-07-1 Cloud-Insight
@startuml !include <cloudinsight/tomcat> !include <cloudinsight/kafka> !include <cloudinsight/java> !include <cloudinsight/cassandra> title Cloudinsight sprites example skinparam monochrome true rectangle "<$tomcat>\nwebapp" as webapp queue "<$kafka>" as kafka rectangle "<$java>\ndaemon" as daemon database "<$cassandra>" as cassandra webapp -> kafka kafka -> daemon daemon --> cassandra @enduml
27-08-1 Cloudogu
@startuml !include <cloudogu/common> !include <cloudogu/dogus/jenkins> !include <cloudogu/dogus/cloudogu> !include <cloudogu/dogus/scm> !include <cloudogu/dogus/smeagol> !include <cloudogu/dogus/nexus> !include <cloudogu/tools/k8s> node "Cloudogu Ecosystem" <<$cloudogu>> { DOGU_JENKINS(jenkins, Jenkins) #ffffff DOGU_SCM(scm, SCM-Manager) #ffffff DOGU_SMEAGOL(smeagol, Smeagol) #ffffff DOGU_NEXUS(nexus,Nexus) #ffffff } TOOL_K8S(k8s, Kubernetes) #ffffff actor developer developer --> smeagol : "Edit Slides" smeagol -> scm : Push scm -> jenkins : Trigger jenkins -> nexus : Deploy jenkins --> k8s : Deploy @enduml
27-09-1 Elastic-library
@startuml !include <elastic/common> !include <elastic/elasticsearch/elasticsearch> !include <elastic/logstash/logstash> !include <elastic/kibana/kibana> ELASTICSEARCH(ElasticSearch, "Search and Analyze",database) LOGSTASH(Logstash, "Parse and Transform",node) KIBANA(Kibana, "Visualize",agent) Logstash -right-> ElasticSearch: Transformed Data ElasticSearch -right-> Kibana: Data to View @enduml
27-09-2 Elastic-library
@startuml 'Adapted from https://github.com/Crashedmind/PlantUML-Elastic-icons/blob/master/All.puml 'Elastic stuff here '================================ !include <elastic/common> !include <elastic/apm/apm> !include <elastic/app_search/app_search> !include <elastic/beats/beats> !include <elastic/cloud/cloud> !include <elastic/cloud_in_kubernetes/cloud_in_kubernetes> !include <elastic/code_search/code_search> !include <elastic/ece/ece> !include <elastic/eck/eck> ' Beware of the difference between Crashedmind and plantuml-stdlib version: with '_' usage! !include <elastic/elasticsearch/elasticsearch> !include <elastic/endpoint/endpoint> !include <elastic/enterprise_search/enterprise_search> !include <elastic/kibana/kibana> !include <elastic/logging/logging> !include <elastic/logstash/logstash> !include <elastic/maps/maps> !include <elastic/metrics/metrics> !include <elastic/siem/siem> !include <elastic/site_search/site_search> !include <elastic/stack/stack> !include <elastic/uptime/uptime> skinparam agentBackgroundColor White APM(apm) APP_SEARCH(app_search) BEATS(beats) CLOUD(cloud) CLOUD_IN_KUBERNETES(cloud_in_kubernetes) CODE_SEARCH(code_search) ECE(ece) ECK(eck) ELASTICSEARCH(elastic_search) ENDPOINT(endpoint) ENTERPRISE_SEARCH(enterprise_search) KIBANA(kibana) LOGGING(logging) LOGSTASH(logstash) MAPS(maps) METRICS(metrics) SIEM(siem) SITE_SEARCH(site_search) STACK(stack) UPTIME(uptime) @enduml
27-10-1 Google-Material-Icons
@startuml !include <material/common> ' To import the sprite file you DON'T need to place a prefix! !include <material/folder_move> MA_FOLDER_MOVE(Red, 1, dir, rectangle, "A label") @enduml
27-10-2 Google-Material-Icons
@startuml !include <material/common> ' To import the sprite file you DON'T need to place a prefix! !include <material/folder_move> MA_FOLDER_MOVE(Red, 1, dir, rectangle, "A label") { } class foo { bar } @enduml
27-11-1 Kubernetes
@startuml !include <kubernetes/k8s-sprites-unlabeled-25pct> package "Infrastructure" { component "<$master>\nmaster" as master component "<$etcd>\netcd" as etcd component "<$node>\nnode" as node } @enduml
27-12-1 Logos
@startuml !include <logos/flask> !include <logos/kafka> !include <logos/kotlin> !include <logos/cassandra> title Gil Barbara's logos example skinparam monochrome true rectangle "<$flask>\nwebapp" as webapp queue "<$kafka>" as kafka rectangle "<$kotlin>\ndaemon" as daemon database "<$cassandra>" as cassandra webapp -> kafka kafka -> daemon daemon --> cassandra @enduml
27-12-2 Logos
@startuml scale 0.7 !include <logos/apple-pay> !include <logos/dinersclub> !include <logos/discover> !include <logos/google-pay> !include <logos/jcb> !include <logos/maestro> !include <logos/mastercard> !include <logos/paypal> !include <logos/unionpay> !include <logos/visaelectron> !include <logos/visa> ' ... title Gil Barbara's logos example - **Payment Scheme** actor customer rectangle "<$apple-pay>" as ap rectangle "<$dinersclub>" as dc rectangle "<$discover>" as d rectangle "<$google-pay>" as gp rectangle "<$jcb>" as j rectangle "<$maestro>" as ma rectangle "<$mastercard>" as m rectangle "<$paypal>" as p rectangle "<$unionpay>" as up rectangle "<$visa>" as v rectangle "<$visaelectron>" as ve rectangle "..." as etc customer --> ap customer ---> dc customer --> d customer ---> gp customer --> j customer ---> ma customer --> m customer ---> p customer --> up customer ---> v customer --> ve customer ---> etc @enduml
27-13-1 Office
@startuml !include <tupadr3/common> !include <office/Servers/database_server> !include <office/Servers/application_server> !include <office/Concepts/firewall_orange> !include <office/Clouds/cloud_disaster_red> title Office Icons Example package "Sprites" { OFF_DATABASE_SERVER(db,DB) OFF_APPLICATION_SERVER(app,App-Server) OFF_FIREWALL_ORANGE(fw,Firewall) OFF_CLOUD_DISASTER_RED(cloud,Cloud) db <-> app app <--> fw fw <.left.> cloud } @enduml
27-13-2 Office
@startuml !include <tupadr3/common> !include <office/servers/database_server> !include <office/servers/application_server> !include <office/Concepts/firewall_orange> !include <office/Clouds/cloud_disaster_red> ' Used to center the label under the images skinparam defaultTextAlignment center title Extended Office Icons Example package "Use sprite directly" { [Some <$cloud_disaster_red> object] } package "Different macro usages" { OFF_CLOUD_DISASTER_RED(cloud1) OFF_CLOUD_DISASTER_RED(cloud2,Default with text) OFF_CLOUD_DISASTER_RED(cloud3,Other shape,Folder) OFF_CLOUD_DISASTER_RED(cloud4,Even another shape,Database) OFF_CLOUD_DISASTER_RED(cloud5,Colored,Rectangle, red) OFF_CLOUD_DISASTER_RED(cloud6,Colored background) #red } @enduml
27-14-1 Open-Security-Architecture
@startuml 'Adapted from https://github.com/Crashedmind/PlantUML-opensecurityarchitecture-icons/blob/master/all scale .5 !include <osa/arrow/green/left/left> !include <osa/arrow/yellow/right/right> !include <osa/awareness/awareness> !include <osa/contract/contract> !include <osa/database/database> !include <osa/desktop/desktop> !include <osa/desktop/imac/imac> !include <osa/device_music/device_music> !include <osa/device_scanner/device_scanner> !include <osa/device_usb/device_usb> !include <osa/device_wireless_router/device_wireless_router> !include <osa/disposal/disposal> !include <osa/drive_optical/drive_optical> !include <osa/firewall/firewall> !include <osa/hub/hub> !include <osa/ics/drive/drive> !include <osa/ics/plc/plc> !include <osa/ics/thermometer/thermometer> !include <osa/id/card/card> !include <osa/laptop/laptop> !include <osa/lifecycle/lifecycle> !include <osa/lightning/lightning> !include <osa/media_flash/media_flash> !include <osa/media_optical/media_optical> !include <osa/media_tape/media_tape> !include <osa/mobile/pda/pda> !include <osa/padlock/padlock> !include <osa/printer/printer> !include <osa/site_branch/site_branch> !include <osa/site_factory/site_factory> !include <osa/vpn/vpn> !include <osa/wireless/network/network> rectangle "OSA" { rectangle "Left:\n <$left>" rectangle "Right:\n <$right>" rectangle "Awareness:\n <$awareness>" rectangle "Contract:\n <$contract>" rectangle "Database:\n <$database>" rectangle "Desktop:\n <$desktop>" rectangle "Imac:\n <$imac>" rectangle "Device_music:\n <$device_music>" rectangle "Device_scanner:\n <$device_scanner>" rectangle "Device_usb:\n <$device_usb>" rectangle "Device_wireless_router:\n <$device_wireless_router>" rectangle "Disposal:\n <$disposal>" rectangle "Drive_optical:\n <$drive_optical>" rectangle "Firewall:\n <$firewall>" rectangle "Hub:\n <$hub>" rectangle "Drive:\n <$drive>" rectangle "Plc:\n <$plc>" rectangle "Thermometer:\n <$thermometer>" rectangle "Card:\n <$card>" rectangle "Laptop:\n <$laptop>" rectangle "Lifecycle:\n <$lifecycle>" rectangle "Lightning:\n <$lightning>" rectangle "Media_flash:\n <$media_flash>" rectangle "Media_optical:\n <$media_optical>" rectangle "Media_tape:\n <$media_tape>" rectangle "Pda:\n <$pda>" rectangle "Padlock:\n <$padlock>" rectangle "Printer:\n <$printer>" rectangle "Site_branch:\n <$site_branch>" rectangle "Site_factory:\n <$site_factory>" rectangle "Vpn:\n <$vpn>" rectangle "Network:\n <$network>" } @enduml
27-15-1 Tupadr3-library
@startuml !include <tupadr3/common> !include <tupadr3/font-awesome/server> !include <tupadr3/font-awesome/database> title Styling example FA_SERVER(web1,web1) #Green FA_SERVER(web2,web2) #Yellow FA_SERVER(web3,web3) #Blue FA_SERVER(web4,web4) #YellowGreen FA_DATABASE(db1,LIVE,database,white) #RoyalBlue FA_DATABASE(db2,SPARE,database) #Red db1 <--> db2 web1 <--> db1 web2 <--> db1 web3 <--> db1 web4 <--> db1 @enduml
27-15-2 Tupadr3-library
@startuml !include <tupadr3/common> !include <tupadr3/devicons/mysql> DEV_MYSQL(db1) DEV_MYSQL(db2,label of db2) DEV_MYSQL(db3,label of db3,database) DEV_MYSQL(db4,label of db4,database,red) #DeepSkyBlue @enduml
sequence-autonumber
@startuml autonumber 10 10 B -> A: Hello A -> B: Yes? B -> A: Fresh foo! @enduml
sequence
@startuml == Initialize == Alice->Bob : hello note left: this is a first note Bob->Alice : ok note right: this is another note Bob->Bob : I am thinking note left a note can also be defined on several lines end note == Repeat == Alice -> Bob: message 1 Bob --> Alice: ok ||| Alice -> Bob: message 2 Bob --> Alice: ok ||45|| Alice -> Bob: message 3 Bob --> Alice: ok == Get Funky == Bob -->x Alice Bob -->> Alice Bob --\ Alice Bob \\-- Alice Bob -->o Alice Bob <-->o Alice Bob <--> Alice note right: These are\nthe Funky arrows,\nYes,... @enduml