Построение диаграмм UML с использованием PlantUML Справочное руководство по языку (27 Февраль 2015 г. 14:48) PlantUML - это проект с открытым кодом, позволяющий быстро создавать: • Диаграммы последовательности (Sequence diagram), • Диаграммы прецедентов (Usecase diagram), • Диаграммы классов (Class diagram), • Диаграммы активности (Activity diagram), • Диаграммы компонентов (Component diagram), • Диаграммы состояний (State diagram), • Диаграммы объектов (Object diagram). Для создания диаграмм применяется простой и интуитивно понятный язык. 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1. Диаграммы последовательности 1.1. Основные примеры Последовательность "->" используется чтобы нарисовать сообщение между двумя участниками. Участники не должны быть явно объявлены. Для того, чтобы получить a dotted arrow, используйте "-->". Также возможно использовать "<-" и "<--". Это не изменит изображения, но можуте улучшить читабельность. @startuml Alice −> Bob: Authentication Request Bob −−> Alice : Authentication Response Alice −> Bob: Another authentication Request Alice <−− Bob: another authentication Response @enduml 1.2. Комментарии Все, что начинается с одинарной кавычки ' является комментарием. Вы также можете поместить многострочный комментарий, используя /' для открытия и '/ для закрытия комментария. 1.3. Объявление участников Возможно изменить порядок участников, используя ключевое слово participant. Так же возможно использование других ключевых слов, для объявления participant'а: • actor • boundary • control • entity • database @startuml actor Foo1 boundary Foo2 control Foo3 entity Foo4 database Foo5 Foo1 −> Foo2 : Foo1 −> Foo3 : Foo1 −> Foo4 : Foo1 −> Foo5 : To To To To boundary control entity database @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 1 of 108 1.4 Use non-letters in participants 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ Можно переименовать участника используя ключевое слово as Также возможно изменить цвет фона actor-а или участника, используя имя цвета или его html-код @startuml actor Bob #red ' The only difference between actor 'and participant i s the drawing participant Alice participant " I have a r e a l l y \ nlong name" as L #99FF99 / ' You can also declare : participant L as " I have a r e a l l y \ nlong name" #99FF99 '/ Alice−>Bob: Authentication Request Bob−>Alice : Authentication Response Bob−>L: Log transaction @enduml 1.4. Use non-letters in participants Вы можете использовать кавычки для задания участника. Также Вы можете использовать ключевые слова для присвоения псевдонимов к этим участникам. @startuml Alice −> "Bob( ) " : Hello "Bob( ) " −> " This i s very \ nlong" as Long ' You can also declare : ' "Bob( ) " −> Long as " This i s very \ nlong" Long −−> "Bob( ) " : ok @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 2 of 108 1.5 Сообщения к самому себе 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1.5. Сообщения к самому себе Участник может посылать сообщения сам себе. Также возможно создание многострочных используя \n. @startuml Alice−>Alice : This i s a signal to s e l f . \ nIt also demonstrates \ nmultiline \ ntext @enduml 1.6. Изменить стиль стрелок Вы можете изменить стиль стрелок следующими способами: • add a final x to denote a lost message • используя \ или / вместо < или > для создания только верхней или нижней части стрелки. • повторите окончание стрелки (например, >> or //) head to для тонкой отрисовки. • используйте -- вместо - для создания пунктирной стрелки • add a final "o" at arrow head • use bidirectional arrow @startuml Bob −>x Alice Bob −> Alice Bob −>> Alice Bob −\ Alice Bob \\ − Alice Bob //−− Alice Bob −>o Alice Bob o\\−− Alice Bob <−> Alice Bob <−>o Alice @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 3 of 108 1.7 Изменить цвет стрелок 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1.7. Изменить цвет стрелок Вы можете изменить цвет отдельных стрелок, используя следующие правила: @startuml Bob −[#red]> Alice : hello Alice −[#0000FF]−>Bob : ok @enduml 1.8. Нумерация сообщений в последовательностях Ключевое слово autonumber используется для автоматической нумерации сообщений. @startuml autonumber Bob −> Alice : Authentication Request Bob <− Alice : Authentication Response @enduml Вы можете обозначить число с которого начнется отсчет autonumber 'start' , и число которое будет использоваться в качестве инкремента autonumber 'start' 'increment'. @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 PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 4 of 108 1.9 Заголовок 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ Bob −> Alice : Yet another authentication Request Bob <− Alice : Yet another authentication Response @enduml Можно задавать формат чисел, указав его в двойных кавычках. Форматирование выполнено с использованием класса Java DecimalFormat ('0' means digit, '#' означает цифру или нуль, если не указан код символа ). При форматировании также можно использовать теги html. @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 1.9. Заголовок Ключевое слово title используется для задания заголовка. @startuml t i t l e Simple communication example PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 5 of 108 1.10 Legend the diagram 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ Alice −> Bob: Authentication Request Bob −−> Alice : Authentication Response @enduml 1.10. Legend the diagram The legend and end legend are keywords is used to put a legend. You can optionally specify to have left, right or center alignment for the legend. @startuml Alice −> Bob : Hello legend right Short legend endlegend @enduml 1.11. Разбиение диаграм Ключевое слово newpage используется для разбиения диаграм на несколько изображений. Вы можете указать название страницы сразу после ключевого слова newpage. Это очень полезно для печати длинных диаграмм на нескольких страницах. @startuml Alice −> Bob : message 1 Alice −> Bob : message 2 newpage Alice −> Bob : message 3 Alice −> Bob : message 4 newpage A t i t l e for the \ nlast page Alice −> Bob : message 5 Alice −> Bob : message 6 @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 6 of 108 1.12 Группировка сообщений 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1.12. Группировка сообщений Группировать сообщения возможно используя следующие ключевые слова: • alt/else • opt • loop • par • break • critical • group, соответствует тексту который должен быть отображен Имеется возможность добавить текст который должен быть отображен в заголовке. Ключевое слово end используется для завершения группы. Имейте ввиду что допускаются вложенные группы. The end keyword is used to close the group. Note that it is possible to nest groups. @startuml Alice −> Bob: Authentication Request a l t successful case Bob −> Alice : Authentication Accepted else some kind of f a i l u r e Bob −> Alice : Authentication Failure group My own label PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 7 of 108 1.13 Примечания в сообщениях 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ Alice −> Log : Log attack s t a r t loop 1000 times Alice −> Bob: DNS Attack end Alice −> Log : Log attack end end else Another type of f a i l u r e Bob −> Alice : Please repeat end @enduml 1.13. Примечания в сообщениях It is possible to put notes on message using the note left or note right keywords just after the message. You can have a multi-line note using the end note keywords. @startuml Alice−>Bob : hello note l e f t : t h i s i s a f i r s t note Bob−>Alice : ok note right : t h i s i s another note Bob−>Bob : I am thinking note l e f t a note can also be defined on several l i n e s end note @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 8 of 108 1.14 Some other notes 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1.14. Some other notes It is also possible to place notes relative to participant with note left of , note right of or note over keywords. It is possible to highlight a note by changing its background color. You can also have a multi-line note using the end note keywords. @startuml participant Alice participant Bob note l e f t of Alice #aqua This i s displayed l e f t of Alice . end note note right of Alice : This i s displayed right of Alice . note over Alice : This i s displayed over Alice . note over Alice , Bob #FFAAAA: This i s displayed \ n over Bob and Alice . note over Bob, Alice This i s yet another example of a long note . end note @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 9 of 108 1.15 Changing notes shape 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1.15. Changing notes shape You can use hnote and rnote keywords to change note shapes. @startuml c a l l e r −> server : conReq hnote over c a l l e r : i d l e c a l l e r <− server : conConf rnote over server " r " as rectangle "h" as hexagon endrnote @enduml 1.16. Creole and HTML It is also possible to use creole formatting: @startuml participant Alice participant "The **Famous** Bob" as Bob Alice −> Bob : hello −−there−− . . . Some ~~long delay~~ . . . Bob −> Alice : ok note l e f t This i s ** bold ** This i s / / i t a l i c s / / This i s ""monospaced"" This i s −−stroked−− This i s __underlined__ This i s ~~waved~~ end note Alice −> Bob : A / / well formatted / / message note right of Alice This i s <back : cadetblue><size:18>displayed </size ></back> _ _ l e f t of__ Alice . end note note l e f t of Bob <u : red>This</u> i s <color #118888>displayed </color> **<color purple>l e f t of </color> <s : red>Alice </strike> Bob* * . end note note over Alice , Bob <w:#FF33FF>This i s hosted</w> by <img sourceforge . jpg> end note @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 10 of 108 1.17 Divider 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1.17. Divider Вы можете использовать разделитель "==", чтобы разбить диаграмму на несколько этапов. @startuml == I n i t i a l i z a t i o n == Alice −> Bob: Authentication Request Bob −−> Alice : Authentication Response == Repetition == Alice −> Bob: Another authentication Request Alice <−− Bob: another authentication Response @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 11 of 108 1.18 Reference 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1.18. Reference You can use reference in a diagram, using the keyword ref over. @startuml participant Alice actor Bob ref over Alice , Bob : i n i t Alice −> Bob : hello ref over Bob This can be on several l i n e s end ref @enduml 1.19. Delay You can use ... to indicate a delay in the diagram. And it is also possible to put a message with this delay. @startuml Alice −> Bob: Authentication Request ... Bob −−> Alice : Authentication Response . . . 5 minutes l a t t e r . . . Bob −−> Alice : Bye ! @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 12 of 108 1.20 Space 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1.20. Space You can use ||| to indicate some spacing in the diagram. It is also possible to specify a number of pixel to be used. @startuml Alice −> Bob: message 1 Bob −−> Alice : ok ||| Alice −> Bob: message 2 Bob −−> Alice : ok ||45|| Alice −> Bob: message 3 Bob −−> Alice : ok @enduml 1.21. Строка активации и деактивации The activate and deactivate are used to denote participant activation. Once a participant is activated, its lifeline appears. The activate and deactivate apply on the previous message. The destroy denote the end of the lifeline of a participant. @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 PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 13 of 108 1.22 Participant creation 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ Можно использовать вложенные линии существования, и возможно добавлять цвет линии существования @startuml participant User User −> A: DoWork activate A #FFBBBB A −> A: Internal c a l l activate A #DarkSalmon A −> B: << createRequest >> activate B B −−> A: RequestCreated deactivate B deactivate A A −> User : Done deactivate A @enduml 1.22. Participant creation You can use the create keyword just before the first reception of a message to emphasize the fact that this message is actually creating this new object. @startuml Bob −> Alice : hello create Other Alice −> Other : new create control String Alice −> String PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 14 of 108 1.23 Incoming and outgoing messages 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ note right : You can also put notes ! Alice −−> Bob : ok @enduml 1.23. Incoming and outgoing messages You can use incoming or outgoing arrows if you want to focus on a part of the diagram. Используйте квадратные скобки для указания левой "[" или правой "]" стороны диаграммы @startuml [−> A: DoWork activate A A −> A: Internal c a l l activate A A −>] : << createRequest >> A<−−] : RequestCreated deactivate A [<− A: Done deactivate A @enduml You can also have the following syntax: @startuml [−> Bob [ o−> Bob [ o−>o Bob PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 15 of 108 1.24 Stereotypes and Spots 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ [ x−> Bob [<− Bob [ x<− Bob Bob Bob Bob Bob −>] −>o ] o−>o ] −>x ] Bob <−] Bob x<−] @enduml 1.24. Stereotypes and Spots It is possible to add stereotypes to participants using << and >>. In the stereotype, you can add a spotted character in a colored circle using the syntax (X,color). @startuml participant "Famous Bob" as Bob << Generated >> participant Alice << (C,#ADD1B2) Testable >> Bob−>Alice : First message @enduml @startuml participant Bob << (C,#ADD1B2) >> participant Alice << (C,#ADD1B2) >> Bob−>Alice : First message @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 16 of 108 1.25 More information on titles 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1.25. More information on titles You can use creole formatting in the title. @startuml t i t l e __Simple__ **communication** example Alice −> Bob: Authentication Request Bob −> Alice : Authentication Response @enduml C помощью последовательности символов \n вы можете добавить перевод строки в заголовок. @startuml t i t l e __Simple__ communication example \ non several l i n e s Alice −> Bob: Authentication Request Bob −> Alice : Authentication Response @enduml You can also define title on several lines using title and end title ключевые слова. @startuml title <u>Simple</u> communication example on <i>several </ i> l i n e s and using <font color=red>html</font> This i s hosted by <img : sourceforge . jpg> end t i t l e PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 17 of 108 1.26 Participants encompass 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ Alice −> Bob: Authentication Request Bob −> Alice : Authentication Response @enduml 1.26. Participants encompass Можно создать прямоугольник вокруг участников, используя комманды box и end box. Вы можете задать опциональный заголовок и цвет фона, после соммады the box. @startuml box " Internal Service " #LightBlue participant Bob participant Alice end box participant Other Bob −> Alice : hello Alice −> Other : hello @enduml 1.27. Удаление футера Вы можете использовать ключевое слово hide footbox для удаления футера из диаграммы. @startuml hide footbox t i t l e Footer removed Alice −> Bob: Authentication Request Bob −−> Alice : Authentication Response @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 18 of 108 1.28 Skinparam 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ 1.28. Skinparam You can use the skinparam command to change colors and fonts for the drawing. You can use this command: • In the diagram definition, like any other commands, • In an included file, • In a configuration file, provided in the command line or the ANT task. @startuml skinparam backgroundColor #EEEBDC 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 PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 19 of 108 1.28 Skinparam 1 ДИАГРАММЫ ПОСЛЕДОВАТЕЛЬНОСТИ PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 20 of 108 2 ДИАГРАММА ПРЕЦЕДЕНТОВ 2. Диаграмма прецедентов 2.1. Прецеденты Use cases are enclosed using between parentheses (because two parentheses выглядит как овал Вы можете использовать usecase для создания прецедента. также вы можете создать псевдоним, используя as keyword. Этот псвдоним будет использоваться позже во время определения связей @startuml ( First usecase ) ( Another usecase ) as (UC2) usecase UC3 usecase ( Last \ nusecase ) as UC4 @enduml 2.2. Актёры Актеры обозначаются задание значения между двумя двухточиями. Также Вы можете использовать ключевое слово actor для определения актёра. И вы можете создать псевдоним, используя ключевое слово as. Этот псевдоним будет использован позднеее, при определении отношений. Мы увидим, что определения Actor не обязательны. @startuml : First Actor : : Another \ nactor : as Men2 actor Men3 actor : Last actor : as Men4 @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 21 of 108 2.3 Usecases description 2 ДИАГРАММА ПРЕЦЕДЕНТОВ 2.3. Usecases description If you want to have description on several lines, you can use quotes. You can also use the following separators: -- .. == __. And you can put titles within the separators. @startuml usecase UC1 as "You can use several l i n e s to define your usecase . You can also use separators . −− Several separators are possible . == And you can add t i t l e s : . . Conclusion . . This allows large description . " @enduml 2.4. Основной пример Для соединения актеров и прецедентов, используется стрелка "-->". The more dashes "-" in the arrow, the longer the arrow. You can add a label on the arrow, by adding a ":" character in the arrow definition. In this example, you see that User has not been defined before, and is used as an actor. @startuml User −> ( Start ) User −−> (Use the application ) : A small label :Main Admin: −−−> (Use the application ) : This i s \ nyet another \ nlabel @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 22 of 108 2.5 Расширение 2 ДИАГРАММА ПРЕЦЕДЕНТОВ 2.5. Расширение If one actor/use case extends another one, you can use the symbol <|-- (which stands for ). @startuml :Main Admin: as Admin (Use the application ) as (Use) User <|−− Admin ( Start ) <|−− (Use) @enduml 2.6. Использование заметок You can use the note left of , note right of , note top of , note bottom of keywords to define notes related to a single object. A note can be also define alone with the note keywords, then linked to other objects using the .. symbol. @startuml :Main Admin: as Admin (Use the application ) as (Use) User −> ( Start ) User −−> (Use) Admin −−−> (Use) PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 23 of 108 2.7 Stereotypes 2 ДИАГРАММА ПРЕЦЕДЕНТОВ note right of Admin : This i s an example . note right of (Use) A note can also be on several l i n e s end note note " This note i s connected \ nto several objects . " as N2 ( Start ) . . N2 N2 . . (Use) @enduml 2.7. Stereotypes You can add stereotypes while defining actors and use cases using " << " and " >> ". @startuml User << Human >> :Main Database : as MySql << Application >> ( Start ) << One Shot >> (Use the application ) as (Use) << Main >> User −> ( Start ) User −−> (Use) MySql −−> (Use) @enduml 2.8. Changing arrows direction By default, links between classes have two dashes -- and are vertically oriented. It is possible to use horizontal link by putting a single dash (or dot) like this: PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 24 of 108 2.8 Changing arrows direction 2 ДИАГРАММА ПРЕЦЕДЕНТОВ @startuml : user : −−> (Use case 1) : user : −> (Use case 2) @enduml You can also change directions by reversing the link: @startuml (Use case 1) <.. : user : (Use case 2) <− : user : @enduml It is also possible to change arrow direction by adding left, right, up or down keywords inside the arrow: @startuml : user : −l e f t −> (dummyLeft) : user : −right−> (dummyRight) : user : −up−> (dummyUp) : user : −down−> (dummyDown) @enduml You can shorten the arrow by using only the first character of the direction Вы можете записать короче, используя только первый символ названия направления (например, -d- вместо -down-) или первые два символа (-do-). PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 25 of 108 2.9 Title the diagram 2 ДИАГРАММА ПРЕЦЕДЕНТОВ Пожалуйста, помните, что Вы не должны использовать эту функциональность без реальной необходимости: GraphViz обычно даёт хороший результат без дополнительных настроек. 2.9. Title the diagram The title keywords is used to put a title. You can use title and end title keywords for a longer title, as in sequence diagrams. @startuml t i t l e Simple <b>Usecase</b>\nwith one actor "Use the application " as (Use) User −> (Use) @enduml 2.10. Splitting diagrams The newpage keywords to split your diagram into several pages or images. @startuml : actor1 : −−> (Usecase1) newpage : actor2 : −−> (Usecase2) @enduml 2.11. Направление слева направо Общее поведение по умолчанию - построение диаграмм сверху вниз. PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 26 of 108 2.12 Skinparam 2 ДИАГРАММА ПРЕЦЕДЕНТОВ @startuml ' default top to bottom direction user1 −−> ( Usecase 1) user2 −−> ( Usecase 2) @enduml Вы можете изменить направление на слева напрво используя команду left to right direction. Часто результат с таким направлением выглядит лучше. @startuml l e f t to right direction user1 −−> ( Usecase 1) user2 −−> ( Usecase 2) @enduml 2.12. Skinparam Вы можете использовать команду skinparam для изменения шрифтов и цветов диаграммы Вы можете использовать данную команду : • In the diagram definition, like any other commands, • In an included file, • In a configuration file, provided in the command line or the ANT task. You can define specific color and fonts for stereotyped actors and usecases. @startuml skinparam usecase { BackgroundColor DarkSeaGreen BorderColor DarkSlateGray BackgroundColor<< Main >> YellowGreen BorderColor<< Main >> YellowGreen PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 27 of 108 2.13 Complete example 2 ДИАГРАММА ПРЕЦЕДЕНТОВ 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 2.13. Complete example @startuml l e f t to right direction skinparam packageStyle rect actor customer actor clerk rectangle checkout { customer −− ( checkout ) ( checkout ) .> (payment) : include ( help ) .> ( checkout ) : extends ( checkout ) −− clerk } @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 28 of 108 3 ДИАГРАММА КЛАССОВ 3. Диаграмма классов 3.1. Отношения между классами Отношения между классами определяются с помощью следующих символов: расширение <|-состав *-агрегирования o-Можно заменить " texttt -" на " начаться ..", чтобы иметь пунктирную line. Knowing thoses rules, it is possible to draw the following drawings: Knowing those rules, it is possible to draw the following drawings: @startuml scale 800 width Class01 <|−− Class02 Class03 *−− Class04 Class05 o−− Class06 Class07 . . Class08 Class09 −− Class10 Class11 <|.. Class12 Class13 −−> Class14 Class15 .. > Class16 Class17 ..| > Class18 Class19 <−−* Class20 @enduml 3.2. Метки на отношениях Для отношения можно добавить метку. Делается это с помощью указания символа ":", после которого указывается текст метки. Для указания количества элементов на каждой стороне отношения можно использовать двойные кавычки "". @startuml Class01 "1" *−− "many" Class02 : contains Class03 o−− Class04 : aggregation Class05 −−> "1" Class06 @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 29 of 108 3.2 Метки на отношениях 3 ДИАГРАММА КЛАССОВ You can add an extra arrow pointing at one object showing which object acts on the other object, using < or > at the begin or at the end of the label. @startuml class Car Driver − Car : drives > Car *− Wheel : have 4 > Car −− Person : < owns @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 30 of 108 3.3 Добавление методов 3 ДИАГРАММА КЛАССОВ 3.3. Добавление методов Для объявления полей и методов вы можете использовать символ ":", после которого указывается имя поля или метода. Для определения того, что вы указали, система ищет скобки. @startuml Object <|−− ArrayList Object : equals ( ) ArrayList : Object [ ] elementData ArrayList : size ( ) @enduml Также можно группировать все поля и методы между фигурными скобками {. Синтаксис порядка описания типа/имени довольно гибок. @startuml class Dummy { String data void methods ( ) } class Flight { flightNumber : Integer departureTime : Date } @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 31 of 108 3.4 Указание видимости 3 ДИАГРАММА КЛАССОВ 3.4. Указание видимости Когда вы определяете методы и поля, вы можете использовать символы для указания видимости. Символы приведены в таблице ниже: # ̃ + private protected package private public @startuml class Dummy { −f i e l d 1 #f i e l d 2 ~method1 ( ) +method2 ( ) } @enduml Можно выключить отображение значков с помощью команды skinparam classAttributeIconSize 0: @startuml skinparam classAttributeIconSize 0 class Dummy { −f i e l d 1 #f i e l d 2 ~method1 ( ) +method2 ( ) } @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 32 of 108 3.5 Abstract and Static 3 ДИАГРАММА КЛАССОВ 3.5. Abstract and Static You can define static or abstract methods or fields using the static or abstract modifier. These modifiers can be used at the start or at the end of the line. You can also use classifier instead of static. @startuml class Dummy { {s t a t i c} String id {abstract} void methods ( ) } @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 33 of 108 3.6 Advanced class body 3 ДИАГРАММА КЛАССОВ 3.6. Advanced class body By default, methods and fields are automatically regrouped by PlantUML. You can use separators to define your own way of ordering fields and methods. The following separators are possible : -- .. == __. You can also use titles within the separators: @startuml class Foo1 { You can use several l i n e s .. 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 __ i n t age −− encrypted −− String password } @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 34 of 108 3.7 Notes and stereotypes 3 ДИАГРАММА КЛАССОВ 3.7. Notes and stereotypes Stereotypes are defined with the class keyword, " << " and " >> ". You can also define notes using note left of , note right of , note top of , note bottom of keywords. You can also define a note on the last defined class using note left, note right, note top, note bottom. A note can be also define alone with the note keywords, then linked to other objects using the .. symbol. @startuml class Object << general >> Object <|−−− ArrayList note top of Object : In java , every class \ nextends t h i s one . note " This i s a f lo a ti n g note " as N1 note " This note i s connected \ nto several objects . " as N2 Object . . N2 N2 . . ArrayList class Foo note l e f t : On l a s t defined class @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 35 of 108 3.8 More on notes 3 ДИАГРАММА КЛАССОВ 3.8. More on notes Также допускается использование некоторых HTML-тегов, таких как: • <b> • <u> • <i> • <s>, <del>, <strike> • <font color="AAAAAA"> or <font color="colorName"> • <color:AAAAAA> or <color:colorName> • <size:nn> to change font size • <img src="file"> or <img:file> : the file must be accessible by the filesystem You can also have a note on several lines You can also define a note on the last defined class using note left, note right, note top, note bottom. @startuml class Foo note l e f t : On l a s t defined class note top of Object In java , <size:18>every</size> <u>class </u> <b>extends</b> <i>this </ i> one . end note note as N1 This note i s <u>also </u> <b><color : royalBlue>on several </color> <s>words</s> l i n e s And t h i s i s hosted by <img : sourceforge . jpg> end note @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 36 of 108 3.9 Note on links 3 ДИАГРАММА КЛАССОВ 3.9. Note on links It is possible to add a note on a link, just after the link definition, using note on link. You can also use note left on link, note right on link, note top on link, note bottom on link if you want to change the relative position of the note with the label. @startuml class Dummy Dummy −−> Foo : A l i n k note on l i n k #red : note that i s red Dummy −−> Foo2 : Another l i n k note right on l i n k #blue t h i s i s my note on right l i n k and in blue end note @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 37 of 108 3.10 Abstract class and interface 3 ДИАГРАММА КЛАССОВ 3.10. Abstract class and interface You can declare a class as abstract using "abstract" or "abstract class" keywords. The class will be printed in italic. You can use the interface, annotation and enum keywords too. @startuml abstract class AbstractList abstract AbstractCollection interface Li st interface Collection L ist <|−− AbstractList Collection <|−− AbstractCollection Collection <|− Lis t AbstractCollection <|− AbstractList AbstractList <|−− ArrayList class ArrayList { Object [ ] elementData size ( ) } enum TimeUnit { DAYS HOURS MINUTES } annotation SuppressWarnings @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 38 of 108 3.11 Using non-letters 3 ДИАГРАММА КЛАССОВ 3.11. Using non-letters If you want to use non-letters in the class (or enum...) display, you can either : • Use the as keyword in the class definition • Поставьте кавычки "" вокруг имени класса @startuml class " This i s my class " as class1 class class2 as " I t works t h i s way too " class2 *−− " foo /dummy" : use @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 39 of 108 3.12 Скрытие атрибутов, методов 3 ДИАГРАММА КЛАССОВ 3.12. Скрытие атрибутов, методов Вы можете управлять видимостью классов с помощью команды hide/show. Базовая команда это - hide empty members. Команда скроет атрибуты или методы, если они пусты. Вместо empty members, вы можете использовать: • empty fields или empty attributes для пустых полей, • empty methods для пустых методов, • fields или attributes, которые скроют поля, даже если они были описаны, • methods, которые скроют методы, даже если они были описаны, • members, которые скроют поля и методы, даже если они были описаны,, • circle для кружков (С) перед именем класса, • stereotype для стереотипа. Вы также можете указать ключевое слово, сразу за hide или show: • class для всех классов, • interface для всех интерфейсов, • enum для всех перечислений, • <<foo1>> для классов, к которым применен стереотип foo1, • имя существующего класса. Для определения большого набора, состоящего из правил и исключений, можно использовать несколько команд show/hide. @startuml class Dummy1 { +myMethods( ) } class Dummy2 { +hiddenMethod ( ) } class Dummy3 <<Serializable>> { String name } hide hide show show members <<Serializable>> c i r c l e Dummy1 methods <<Serializable>> f i e l d s @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 40 of 108 3.13 Hide classes 3 ДИАГРАММА КЛАССОВ 3.13. Hide classes You can also use the show/hide commands to hide classes. This may be useful if you define a large !included file, and if you want to hide come classes after file inclusion. @startuml class Foo1 class Foo2 Foo2 *−− Foo1 hide Foo2 @enduml 3.14. Use generics You can also use bracket < and > to define generics usage in a class. @startuml class Foo<? extends Element> { i n t size ( ) } Foo *− Element @enduml 3.15. Specific Spot Usually, a spotted character (C, I, E or A) is used for classes, interface, enum and abstract classes. But you can define your own spot for a class when you define the stereotype, adding a single character и цвет как в этом примере: But you can define your own spot for a class when you define the stereotype, adding a single character and a color, like in this example: @startuml class System << (S,#FF7700) Singleton >> class Date << (D, orchid ) >> @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 41 of 108 3.16 Packages 3 ДИАГРАММА КЛАССОВ 3.16. Packages Вы можете определить пакет используя кодовое слово package , и если хотите, определите цвет фона своего пакета (Используя код цвета html или его имя). Обратите внимание, что определения пакета могут быть вложенными. @startuml package " Classic Collections " #DDDDDD { Object <|−− ArrayList } package net . sourceforge . plantuml { Object <|−− Demo1 Demo1 *− Demo2 } @enduml 3.17. Packages style There are different styles available for packages. You can specify them either by setting a default style with the command : skinparam packageStyle, or by using a stereotype on the package: @startuml package foo1 <<Node>> { class Class1 } package foo2 <<Rect>> { class Class2 } package foo3 <<Folder>> { class Class3 } package foo4 <<Frame>> { class Class4 } package foo5 <<Cloud>> { class Class5 } package foo6 <<Database>> { class Class6 } @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 42 of 108 3.18 Namespaces 3 ДИАГРАММА КЛАССОВ You can also define links between packages, like in the following example: @startuml skinparam packageStyle rect package foo1 . foo2 { } package foo1 . foo2 . foo3 { class Object } foo1 . foo2 +−− foo1 . foo2 . foo3 @enduml 3.18. Namespaces В блоках, имя класса является уникальным идентификатором этого класса. Это значит что у вас не может быть двух одноименных классов в разных блоках. В этом случае, вам следует использовать пространства имен вместо пакетов. In that case, you should use namespaces instead of packages. You can refer to classes from other namespaces by fully qualify them. Classes from the default namespace are qualified with a starting dot. Обратите внимание, что вы не обязаны явно создавать пространство имен: полностью определенный класс автоматически попадает в правильное пространство имен. @startuml class BaseClass namespace net .dummy #DDDDDD { . BaseClass <|−− Person Meeting o−− Person . BaseClass <|− Meeting } PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 43 of 108 3.19 Automatic namespace creation 3 ДИАГРАММА КЛАССОВ namespace net . foo { net .dummy. Person <|− Person . BaseClass <|−− Person net .dummy. Meeting o−− Person } BaseClass <|−− net . unused . Person @enduml 3.19. Automatic namespace creation You can define another separator (other than the dot) using the command : set namespaceSeparator ???. @startuml set namespaceSeparator : : class X1 : : X2 : : foo { some info } @enduml You can disable automatic package creation using the command set namespaceSeparator none. PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 44 of 108 3.20 Lollipop интерфейс 3 ДИАГРАММА КЛАССОВ @startuml set namespaceSeparator none class X1.X2. foo { some info } @enduml 3.20. Lollipop интерфейс You can also define lollipops interface on classes, using the following syntax: • bar ()- foo • bar ()-- foo • foo -() bar @startuml class foo bar ()− foo @enduml 3.21. Изменение направления стрелок By default, links between classes have two dashes -- and are vertically oriented. It is possible to use horizontal link by putting a single dash (or dot) like this: @startuml Room o− Student Room *−− Chair @enduml You can also change directions by reversing the link: @startuml Student −o Room Chair −−* Room @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 45 of 108 3.22 Заголовок диаграммы 3 ДИАГРАММА КЛАССОВ Также возможно изменять направление стрелок, добавляя left, right, up or down keywords inside the arrow: @startuml foo −l e f t −> dummyLeft foo −right−> dummyRight foo −up−> dummyUp foo −down−> dummyDown @enduml You can shorten the arrow by using only the first character of the direction (for example, -d- instead of -down-) or the two first characters (-do-). Please note that you should not abuse this functionality : Graphviz gives usually good results without tweaking. 3.22. Заголовок диаграммы �������� ����� title используется для задания заголовков. You can use title and end title keywords for a longer title, as in sequence diagrams. You can use title and end title keywords for a longer title, as in sequence diagrams. @startuml t i t l e Simple <b>example</b>\nof t i t l e Object <|−− ArrayList @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 46 of 108 3.23 Legend the diagram 3 ДИАГРАММА КЛАССОВ 3.23. Legend the diagram The legend and end legend are keywords is used to put a legend. You can optionally specify to have left, right or center alignment for the legend. @startuml Object <|− ArrayList legend right <b>Object</b> and <b>ArrayList </b> are simple class endlegend @enduml 3.24. Ассоциация классов You can define association class after that a relation has been defined between two classes, like in this example: @startuml class Student { Name } Student " 0 . . * " − " 1 . . * " Course ( Student , Course ) . . Enrollment class Enrollment { drop ( ) cancel ( ) } @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 47 of 108 3.25 Skinparam 3 ДИАГРАММА КЛАССОВ You can define it in another direction: @startuml class Student { Name } Student " 0 . . * " −− " 1 . . * " Course ( Student , Course ) . Enrollment class Enrollment { drop ( ) cancel ( ) } @enduml 3.25. Skinparam Вы можете использовать команду skinparam чтобы изменить цвета и шрифты рисунка. Вы можете использовать следующую команду: You can use this command : • В определении диаграммы, как любая другая команда, • В подключаемом файле, • В конфигурационном файле, указываемом в командной строке или в задаче ANT. @startuml skinparam class { BackgroundColor PaleGreen ArrowColor SeaGreen PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 48 of 108 3.26 Skinned Stereotypes 3 ДИАГРАММА КЛАССОВ BorderColor SpringGreen } skinparam stereotypeCBackgroundColor YellowGreen Class01 "1" *−− "many" Class02 : contains Class03 o−− Class04 : aggregation @enduml 3.26. Skinned Stereotypes You can define specific color and fonts for stereotyped classes. @startuml skinparam class { BackgroundColor PaleGreen ArrowColor SeaGreen BorderColor SpringGreen BackgroundColor<<Foo>> Wheat BorderColor<<Foo>> Tomato } skinparam stereotypeCBackgroundColor YellowGreen skinparam stereotypeCBackgroundColor<< Foo >> DimGray Class01 << Foo >> Class01 "1" *−− "many" Class02 : contains Class03<<Foo>> o−− Class04 : aggregation @enduml 3.27. Color gradient It's possible to declare individual color for classes or note using the notation. You can use either standard color name or RGB code. You can also use color gradient in background, with the following syntax: two colors names separated either by: PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 49 of 108 3.28 Splitting large files • • • • 3 ДИАГРАММА КЛАССОВ |, /, \, or - depending the direction of the gradient. For example, you could have: @startuml skinparam backgroundcolor AntiqueWhite / Gold skinparam classBackgroundColor Wheat| CornflowerBlue class Foo #red−green note l e f t of Foo #blue\9932CC { t h i s i s my note on t h i s class } package example #GreenYellow / LightGoldenRodYellow { class Dummy } @enduml 3.28. Splitting large files Иногда могут получиться очень большие файлы изображений. Вы можете использовать команду "page (hpages)x(vpages)" чтобы разделить создаваемое изображение на несколько файлов (страниц) : You can use the "page (hpages)x(vpages)" command to split the generated image into several files : hpages is a number that indicated the number of horizontal pages, and vpages is a number that indicated the number of vertical pages. @startuml ' S p l i t into 4 pages page 2x2 class BaseClass namespace net .dummy #DDDDDD { . BaseClass <|−− Person Meeting o−− Person . BaseClass <|− Meeting } namespace net . foo { net .dummy. Person <|− Person . BaseClass <|−− Person net .dummy. Meeting o−− Person } BaseClass <|−− net . unused . Person @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 50 of 108 3.28 Splitting large files 3 ДИАГРАММА КЛАССОВ PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 51 of 108 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ 4. Диаграмма деятельности 4.1. Простая деятельность Вы можете использовать (*) для начальных и конечных точек диаграммы деятельности. In some occasion, you may want to use (*top) to force the starting point to be at the top of the diagram. Используйте --> для стрелок. @startuml ( * ) −−> " First A c t i v i t y " " First A c t i v i t y " −−> ( * ) @enduml 4.2. Метка на стрелках По умолчанию, стрелка начинается с последней использованной активности. Вы можете пометить стрелку при помощи скобок [ и ] сразу после определения стрелки. @startuml ( * ) −−> " First A c t i v i t y " −−>[You can put also labels ] "Second A c t i v i t y " −−> ( * ) @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 52 of 108 4.3 Изменение направления стрелки 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ 4.3. Изменение направления стрелки Вы можете использовать -> для горизонтальных стрелок. Если это возможно то для явного указания направления используйте следующий синтаксис: • • • • -down-> (default arrow) -right-> or -> -left-> -up-> @startuml ( * ) −up−> " First A c t i v i t y " −right−> "Second A c t i v i t y " −−> " Third A c t i v i t y " −l e f t −> ( * ) @enduml 4.4. Ветвления You can use if/then/else keywords to define branches. @startuml ( * ) −−> " I n i t i a l i z a t i o n " i f "Some Test " then −−>[true ] "Some A c t i v i t y " −−> "Another a c t i v i t y " −right−> ( * ) else −>[f a l s e ] "Something else " −−>[Ending process ] ( * ) endif @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 53 of 108 4.5 More on Branches 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ Unfortunately, you will have to sometimes repeat the same activity in the diagram text: @startuml ( * ) −−> "check input " I f " input i s verbose" then −−> [ Yes ] " turn on verbosity " −−> "run command" else −−> "run command" Endif −−>(*) @enduml 4.5. More on Branches By default, a branch is connected to the last defined activity, but it is possible to override this and to define a link with the if keywords. It is also possible to nest branches. @startuml ( * ) −−> i f "Some Test " then −−>[true ] " a c t i v i t y 1" i f "" then −> " a c t i v i t y 3" as a3 else i f "Other test " then −l e f t −> " a c t i v i t y 5" else −−> " a c t i v i t y 6" endif endif else −>[f a l s e ] " a c t i v i t y 2" endif a3 −−> i f " l a s t test " then PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 54 of 108 4.6 Синхронизация 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ −−> " a c t i v i t y 7" else −> " a c t i v i t y 8" endif @enduml 4.6. Синхронизация Вы можете использовать "=== code ===", чтобы отобразить барьеры синхронизации. @startuml ( * ) −−> ===B1=== −−> " P ar a ll el A c t i v i t y 1" −−> ===B2=== ===B1=== −−> " P ar a ll el A c t i v i t y 2" −−> ===B2=== −−> ( * ) @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 55 of 108 4.7 Long activity description 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ 4.7. Long activity description When you declare activities, you can span on several lines the description text. You can also add \n in the description. You can also give a short code to the activity with the as keyword. This code can be used latter in the diagram description. @startuml ( * ) −l e f t −> " t h i s <size:20>a c t i v i t y </size> i s <b>very</b> <color : red>long2</color> and defined on several l i n e s that contains many <i>text </ i >" as A1 −up−> "Another a c t i v i t y \ n on several l i n e s " A1 −−> " Short a c t i v i t y <img : sourceforge . jpg>" @enduml 4.8. Notes You can add notes on a activity using the commands note left, note right, note top or note bottom, just after the description of the activity you want to note. If you want to put a note on the starting point, define the note at the very beginning of the diagram description. You can also have a note on several lines, using the endnote keywords. @startuml ( * ) −−> "Some A c t i v i t y " note right : This a c t i v i t y has to be defined "Some A c t i v i t y " −−> ( * ) note l e f t This note i s on several l i n e s end note @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 56 of 108 4.9 Partition 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ 4.9. Partition You can define a partition using the partition keyword, and optionally declare a background color for your partition (Using a html color code or name) When you declare activities, they are automatically put in the last used partition. You can close the partition definition using a closing bracket }. @startuml par tition Conductor { ( * ) −−> "Climbs on Platform " −−> === S1 === −−> Bows } par tition Audience LightSkyBlue { === S1 === −−> Applauds } par tition Conductor { Bows −−> === S2 === −−> WavesArmes Applauds −−> === S2 === } par tition Orchestra #CCCCEE { WavesArmes −−> Introduction −−> " Play music" } @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 57 of 108 4.10 Заголовок диаграммы 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ 4.10. Заголовок диаграммы The title keywords is used to put a title. You can use title and end title keywords for a longer title, as in sequence diagrams. @startuml t i t l e Simple example \ nof t i t l e ( * ) −−> " First a c t i v i t y " −−> ( * ) @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 58 of 108 4.11 Skinparam 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ 4.11. Skinparam You can use the skinparam command to change colors and fonts for the drawing. You can use this command : • In the diagram definition, like any other commands, • In an included file, • In a configuration file, provided in the command line or the ANT task. You can define specific color and fonts for stereotyped activities. @startuml skinparam backgroundColor #AAFFFF skinparam a c t i v i t y { StartColor red BarColor SaddleBrown EndColor Silver BackgroundColor Peru BackgroundColor<< Begin >> Olive BorderColor Peru FontName Impact } (*) −−> −−> −−> −−> −−> −−> "Climbs on Platform " << Begin >> === S1 === Bows === S2 === WavesArmes (*) @enduml 4.12. Octagon You can change the shape of activities to octagon using the skinparam activityShape octagon command. @startuml ' Default i s skinparam activityShape roundBox PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 59 of 108 4.13 Complete example 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ skinparam activityShape octagon ( * ) −−> " First A c t i v i t y " " First A c t i v i t y " −−> ( * ) @enduml 4.13. Complete example @startuml t i t l e Servlet Container ( * ) −−> " ClickServlet . handleRequest ( ) " −−> "new Page" i f "Page . onSecurityCheck" then −>[true ] "Page . onInit ( ) " i f "isForward?" then −>[no] " Process controls " i f " continue processing ?" then −−>[yes ] ===RENDERING=== else −−>[no] ===REDIRECT_CHECK=== endif else −−>[yes ] ===RENDERING=== endif i f " i s Post ?" then −−>[yes ] "Page . onPost ( ) " −−> "Page . onRender ( ) " as render −−> ===REDIRECT_CHECK=== else −−>[no] "Page . onGet ( ) " −−> render endif else −−>[f a l s e ] ===REDIRECT_CHECK=== endif i f "Do redirect ?" then −>[yes ] " redirect request " −−> ==BEFORE_DESTROY=== else i f "Do Forward?" then −l e f t −>[yes ] "Forward request " −−> ==BEFORE_DESTROY=== else −right−>[no] "Render page template " −−> ==BEFORE_DESTROY=== endif endif −−> "Page . onDestroy ( ) " PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 60 of 108 4.13 Complete example 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ −−>(*) @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 61 of 108 4.13 Complete example 4 ДИАГРАММА ДЕЯТЕЛЬНОСТИ PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 62 of 108 5 ACTIVITY DIAGRAM (BETA) 5. Activity Diagram (beta) Current syntax for activity diagram has several limitations and drawbacks (for example, it's difficult to maintain). So a completely new syntax and implementation is proposed as beta version to users (starting with V7947), so that we could define a better format and syntax. Another advantage of this new implementation is that it's done without the need of having Graphviz installed (as for sequence diagrams). The new syntax will replace the old one. However, for compatibility reason, the old syntax will still be recognized, to ensure ascending compatibility. Users are simply encouraged to migrate to the new syntax. 5.1. Simple Activity Activities label starts with : and ends with ;. Text formatting can be done using creole wiki syntax. They are implicitly linked in their definition order. @startuml : Hello world ; : This i s on defined on several ** l i n e s * * ; @enduml 5.2. Start/Stop You can use start and stop keywords to denote the beginning and the end of a diagram. @startuml start : Hello world ; : This i s on defined on several ** l i n e s * * ; stop @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 63 of 108 5.3 Conditional 5 ACTIVITY DIAGRAM (BETA) 5.3. Conditional You can use if, then and else keywords to put tests if your diagram. Labels can be provided using parentheses. @startuml start i f ( Graphviz i n s t a l l e d ?) then ( yes ) : process a l l \ ndiagrams ; else (no) : process only __sequence__ and _ _ a c t i v i t y _ _ diagrams ; endif stop @enduml You can use the elseif keyword to have several tests : @startuml start i f ( condition A) then ( yes ) : Text 1; e l s e i f ( condition B) then ( yes ) : Text 2; stop e l s e i f ( condition C) then ( yes ) : Text 3; e l s e i f ( condition D) then ( yes ) : Text 4; else ( nothing ) : Text else ; endif stop @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 64 of 108 5.4 Repeat loop 5 ACTIVITY DIAGRAM (BETA) 5.4. Repeat loop You can use repeat and repeatwhile keywords to have repeat loops. @startuml start repeat : read data ; : generate diagrams ; repeat while (more data ?) stop @enduml 5.5. While loop You can use while and end while keywords to have repeat loops. @startuml start while ( data available ?) : read data ; : generate diagrams ; endwhile stop @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 65 of 108 5.6 Parallel processing 5 ACTIVITY DIAGRAM (BETA) It is possible to provide a label after the endwhile keyword, or using the is keyword. @startuml while ( check f i l e s i z e ?) i s ( not empty) : read f i l e ; endwhile (empty) : close f i l e ; @enduml 5.6. Parallel processing You can use fork, fork again and end fork keywords to denote parallel processing. @startuml start i f ( multiprocessor ?) then ( yes ) fork : Treatment 1; fork again : Treatment 2; end fork else (monoproc) : Treatment 1; : Treatment 2; endif @enduml 5.7. Notes Text formatting can be done using creole wiki syntax. @startuml start PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 66 of 108 5.8 Title Legend 5 ACTIVITY DIAGRAM (BETA) : foo1 ; note l e f t : This i s a note : foo2 ; note right This note i s on several / / l i n e s / / and can contain <b>HTML</b> ==== * Calling the method "" foo ( ) " " i s prohibited end note stop @enduml 5.8. Title Legend You can add title, header, footer, legend to a diagram: @startuml t i t l e t h i s i s my t i t l e i f ( condition ?) then ( yes ) : yes ; else (no) : no ; note right t h i s i s a note end note endif stop legend t h i s i s the legend endlegend footer dummy footer header this is a long __dummy__ header end header @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 67 of 108 5.9 Colors 5 ACTIVITY DIAGRAM (BETA) 5.9. Colors You can use specify a color for some activities. @startuml start : starting progress ; #HotPink : reading configuration f i l e s These f i l e s should edited at t h i s point ! ; #AAAAAA: ending of the process ; @enduml 5.10. Arrows Using the -> notation, you can add texts to arrow, and change their color. @startuml : foo1 ; −> You can put text on arrows ; i f ( test ) then −[#blue]−> : foo2 ; −[#green]−> The text can also be on several l i n e s and ** very ** long . . . ; : foo3 ; else −[#black]−> : foo4 ; endif −[#gray]−> : foo5 ; @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 68 of 108 5.11 Grouping 5 ACTIVITY DIAGRAM (BETA) 5.11. Grouping You can group activity together by defining partition: @startuml start par tition I n i t i a l i z a t i o n { : read config f i l e ; : i n i t internal variable ; } par tition Running { : wait for user interaction ; : print information ; } stop @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 69 of 108 5.12 Swimlanes 5 ACTIVITY DIAGRAM (BETA) 5.12. Swimlanes Using pipe |, you can define swimlanes. It's also possible to change swimlanes color. @startuml | Swimlane1 | start : foo1 ; |#AntiqueWhite | Swimlane2 | : foo2 ; : foo3 ; | Swimlane1 | : foo4 ; | Swimlane2 | : foo5 ; stop @enduml 5.13. Detach It's possible to remove an arrow using the detach keyword. @startuml : start ; fork : foo1 ; : foo2 ; fork again : foo3 ; detach endfork i f ( foo4 ) then : foo5 ; detach endif : foo6 ; detach : foo7 ; PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 70 of 108 5.14 SDL 5 ACTIVITY DIAGRAM (BETA) stop @enduml 5.14. SDL By changing the final ; separator, you can set different rendering for the activity: • • • • • • | < > / ] } @startuml : Ready ; : next ( o ) | : Receiving ; split : nak( i )< : ack ( o)> s p l i t again : ack ( i )< : next ( o ) on several l i n e | : i := i + 1] : ack ( o)> s p l i t again : err ( i )< : nak( o)> s p l i t again : foo / s p l i t again : i > 5} stop end s p l i t : finish ; @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 71 of 108 5.15 Complete example 5 ACTIVITY DIAGRAM (BETA) 5.15. Complete example @startuml start : ClickServlet . handleRequest ( ) ; :new page ; i f (Page . onSecurityCheck ) then ( true ) : Page . onInit ( ) ; i f ( isForward ?) then (no) : Process controls ; i f ( continue processing ?) then (no) stop endif i f ( isPost ?) then ( yes ) : Page . onPost ( ) ; else (no) : Page . onGet ( ) ; endif : Page . onRender ( ) ; endif else ( f a l s e ) endif i f (do redirect ?) then ( yes ) : redirect process ; else i f (do forward ?) then ( yes ) : Forward request ; else (no) : Render page template ; endif endif stop @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 72 of 108 5.15 Complete example 5 ACTIVITY DIAGRAM (BETA) PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 73 of 108 6 COMPONENT DIAGRAM 6. Component Diagram 6.1. Компоненты Components must be bracketed. You can also use the component keyword to defines a component. And you can define an alias, using the as keyword. This alias will be used latter, when defining relations. @startuml [ First component] [ Another component] as Comp2 component Comp3 component [ Last \ ncomponent] as Comp4 @enduml 6.2. Interfaces Interface can be defined using the () symbol (because this looks like a circle). You can also use the interface keyword to defines an interface. And you can define an alias, using the as keyword. This alias will be used latter, when defining relations. We will see latter that interface definition is optional. @startuml ( ) " First Interface " ( ) "Another interface " as Interf2 interface Interf3 interface " Last \ ninterface " as Interf4 @enduml 6.3. Basic example Links between elements are made using combinations of dotted line (..), straight line (--), and arrows (-->) symbols. PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 74 of 108 6.4 Using notes 6 COMPONENT DIAGRAM @startuml DataAccess − [ First Component] [ First Component] .. > HTTP : use @enduml 6.4. Using notes You can use the note left of , note right of , note top of , note bottom of keywords to define notes related to a single object. A note can be also define alone with the note keywords, then linked to other objects using the .. symbol. @startuml interface "Data Access" as DA DA − [ First Component] [ First Component] .. > HTTP : use note l e f t of HTTP : Web Service only note right of [ First Component] A note can also be on several l i n e s end note @enduml 6.5. Grouping Components Вы можете использовать ключевое слово package чтобы сгруппировать компоненты и интерфейсы вместе. • package • node • folder • frame • cloud PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 75 of 108 6.5 Grouping Components 6 COMPONENT DIAGRAM • database @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 i s my folder " { [ Folder 3] } frame "Foo" { [Frame 4] } } [ Another Component] −−> [Example 1] [Example 1] −−> [ Folder 3] [ Folder 3] −−> [Frame 4] @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 76 of 108 6.6 Изменение направления связи 6 COMPONENT DIAGRAM 6.6. Изменение направления связи By default, links between classes have two dashes -- and are vertically oriented. It is possible to use horizontal link by putting a single dash (or dot) like this: @startuml [Component] −−> Interface1 [Component] −> Interface2 @enduml You can also change directions by reversing the link: @startuml Interface1 <−− [Component] Interface2 <− [Component] @enduml It is also possible to change arrow direction by adding left, right, up or down keywords inside the arrow: @startuml [Component] [Component] [Component] [Component] @enduml −l e f t −> l e f t −right−> right −up−> up −down−> down You can shorten the arrow by using only the first character of the direction (for example, -d- instead of -down-) or the two first characters (-do-). Please note that you should not abuse this functionality : Graphviz gives usually good results without tweaking. PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 77 of 108 6.7 Title the diagram 6 COMPONENT DIAGRAM 6.7. Title the diagram The title keywords is used to put a title. You can use title and end title keywords for a longer title, as in sequence diagrams. @startuml t i t l e Very simple component \ ndiagram interface "Data Access" as DA DA − [ First Component] [ First Component] .. > HTTP : use @enduml 6.8. Use UML2 notation The skinparam componentStyle uml2 command is used to switch to UML2 notation. @startuml skinparam componentStyle uml2 interface "Data Access" as DA DA − [ First Component] [ First Component] .. > HTTP : use @enduml 6.9. Skinparam Чтобы изменить цвета и шрифт, используйте команду skinparam Также вы можете применить эту команду : You can use this command : • В определении диаграммы, как и любые другие команды, • В вспомогательном (include) файле, PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 78 of 108 6.9 Skinparam 6 COMPONENT DIAGRAM • В конфигурационном файле (указывается в командной строке или как параметр для задачи ANT). You can define specific color and fonts for stereotyped components and interfaces. @startuml skinparam component { FontSize 13 InterfaceBackgroundColor RosyBrown InterfaceBorderColor orange BackgroundColor<<Apache>> Red BorderColor<<Apache>> #FF6655 FontName Courier BorderColor black BackgroundColor gold ArrowFontName Impact ArrowColor #FF6655 ArrowFontColor #777777 } ( ) "Data Access" as DA DA − [ First Component] [ First Component] .. > ( ) HTTP : use HTTP − [Web Server ] << Apache >> @enduml @startuml [AA] <<s t a t i c l i b>> [BB] <<shared l i b>> [CC] <<s t a t i c l i b>> node node1 node node2 <<shared node>> database Production skinparam component { backgroundColor<<s t a t i c l i b>> DarkKhaki backgroundColor<<shared l i b>> Green } skinparam node { borderColor Green backgroundColor Yellow backgroundColor<<shared node>> Magenta } skinparam databaseBackgroundColor Aqua @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 79 of 108 6.9 Skinparam 6 COMPONENT DIAGRAM PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 80 of 108 7 ДИАГРАММА СОСТОЯНИЙ 7. Диаграмма состояний 7.1. Простое состояние Для изображения начального и конечного псевдосостояний используется [*]. Пишите --> для изображения переходов. @startuml [ * ] −−> State1 State1 −−> [ * ] State1 : t h i s i s a string State1 : t h i s i s another string State1 −> State2 State2 −−> [ * ] @enduml 7.2. Составное состояние Также можно изображать составные состояния. Для этого его следует объявить, используя конструкцию 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 PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 81 of 108 7.3 Длинные имена 7 ДИАГРАММА СОСТОЯНИЙ 7.3. Длинные имена Вы также можете использовать ключевое слово state для сокращения длинного имени состояния. @startuml scale 600 width [ * ] −> State1 State1 −−> State2 : Succeeded State1 −−> [ * ] : Aborted State2 −−> State3 : Succeeded State2 −−> [ * ] : Aborted state State3 { state "Accumulate Enough Data \nLong State Name" as long1 long1 : Just a test [ * ] −−> long1 long1 −−> long1 : New Data long1 −−> ProcessData : Enough Data } State3 −−> State3 : Failed State3 −−> [ * ] : Succeeded / Save Result State3 −−> [ * ] : Aborted @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 82 of 108 7.4 Параллельные состояния 7 ДИАГРАММА СОСТОЯНИЙ 7.4. Параллельные состояния Используя оператор "--", вы можете объявлять параллельные подсостояния внутри составного состояния. @startuml scale 800 width [ * ] −−> Active state Active { [ * ] −> NumLockOff NumLockOff −−> NumLockOn : EvNumLockPressed NumLockOn −−> NumLockOff : EvNumLockPressed −− [ * ] −> CapsLockOff CapsLockOff −−> CapsLockOn : EvCapsLockPressed CapsLockOn −−> CapsLockOff : EvCapsLockPressed −− [ * ] −> ScrollLockOff ScrollLockOff −−> ScrollLockOn : EvCapsLockPressed ScrollLockOn −−> ScrollLockOff : EvCapsLockPressed } @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 83 of 108 7.5 Направления стрелок 7 ДИАГРАММА СОСТОЯНИЙ 7.5. Направления стрелок Для изображения стрелок перехода горизонтально используется оператор ->. Следующий синтаксис позволяет задать другое направление. • -down-> (default arrow) • -right-> or -> • -left-> • -up-> @startuml [ * ] −up−> First First −right−> Second Second −−> Third Third −l e f t −> Last @enduml Вы также можете сокращать слова в описании стрелок (например, -d-> или -do-> вместо -down->). Не следует злоупотреблять этой функциональностью: GraphViz в большинстве случаев дает хороший результат без лишних манипуляций. 7.6. Заметки К состоянию можно добавлять заметки, используя специальные ключевые слова: note left of, note right of, note top of, note bottom of keywords. . Заметки можно определять в несколько строк. PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 84 of 108 7.7 Еще о заметках 7 ДИАГРАММА СОСТОЯНИЙ @startuml [ * ] −−> Active Active −−> Inactive note l e f t of Active : t h i s i s a short \ nnote note right of Inactive A note can also be defined on several l i n e s end note @enduml You can also have floating notes. @startuml state foo note " This i s a f lo a ti n g note " as N1 @enduml 7.7. Еще о заметках Также заметки можно прикреплять к составным состояниям. @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 i s a note on a composite state @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 85 of 108 7.8 Skinparam 7 ДИАГРАММА СОСТОЯНИЙ 7.8. Skinparam You can use the skinparam command to change colors and fonts for the drawing. You can use this command : • In the diagram definition, like any other commands, • In an included file, • In a configuration file, provided in the command line or the ANT task. You can define specific color and fonts for stereotyped states. @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 PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 86 of 108 7.8 Skinparam 7 ДИАГРАММА СОСТОЯНИЙ PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 87 of 108 8 ДИАГРАММА ОБЪЕКТОВ 8. Диаграмма объектов 8.1. Определение объектов Вы можете определить экземпляр объекта используя ключевое слово object. @startuml object firstObject object "My Second Object " as o2 @enduml 8.2. Отношения между объектами Отношения между объектами определяются с использованием следующий символов : Extension <|-Composition *-Aggregation o-It is possible to replace -- by .. to have a dotted line. Knowing those rules, it is possible to draw the following drawings. It is possible a add a label on the relation, using " : ", followed by the text of the label. For cardinality, you can use double-quotes "" on each side of the relation. @startuml object Object01 object Object02 object Object03 object Object04 object Object05 object Object06 object Object07 object Object08 Object01 Object03 Object05 Object07 @enduml <|−− Object02 *−− Object04 o−− "4" Object06 . . Object08 : some labels 8.3. Добавление полей Для определения свойств (полей) объекта, задайте префикс ":", указав вслед за ним именя свойства. PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 88 of 108 8.4 Common features with class diagrams 8 ДИАГРАММА ОБЪЕКТОВ @startuml object user user : name = "Dummy" user : id = 123 @enduml It is also possible to ground between brackets { all fields. @startuml object user { name = "Dummy" id = 123 } @enduml 8.4. Common features with class diagrams • Visibility • Defines notes • Use packages • Title the diagram • Skin the output • Split the image PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 89 of 108 9 ОБЩИЕ КОМАНДЫ 9. Общие команды 9.1. Заголовок и подвал Для определения заголовка и подвала созданной диаграммы используйте команды header и footer соответственно. Для выравнивания текста заголовка/подвала используйте префиксы center, left или right footer/header. Заголовок и подвал могут содержать несколько строк. В этом случае их определение завершайте командами endheader и endfooter соответственно. Заголовок и подвал могут поддерживают использование HTML разметки. @startuml Alice −> Bob: Authentication Request header <font color=red>Warning: </ font> Do not use in production . endheader center footer Generated for demonstration @enduml 9.2. Масштаб You can use the scale command to zoom the generated image. You can use either a number or a fraction to define the scale factor. You can also specify either width or height (in pixel). And you can also give both width and height : the image is scaled to fit inside the specified dimension. • scale 1.5 • scale 2/3 • scale 200 width • scale 200 height • scale 200*100 @startuml scale 180*90 Bob−>Alice : hello @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 90 of 108 10 ИЗМЕНИТЬ ШРИФТЫ И ЦВЕТА 10. Изменить шрифты и цвета 10.1. Использование You can change colors and font of the drawing using the skinparam command. Пример: skinparam backgroundColor yellow Вы можете использовать команду : • In the diagram definition, like any other commands, • В подключаемом файле (см. Preprocessing), • In a configuration file, provided in the command line or the ANT task. 10.2. Вложенный Чтобы избежать повторений, возможно создавать вложенные определения. Так, как в следующем определении: skinparam skinparam skinparam skinparam xxxxParam1 xxxxParam2 xxxxParam3 xxxxParam4 value1 value2 value3 value4 строго эквивалент: skinparam xxxx { Param1 value1 Param2 value2 Param3 value3 Param4 value4 } PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 91 of 108 10.3 Color 10 ИЗМЕНИТЬ ШРИФТЫ И ЦВЕТА 10.3. Color You can use either standard color name or RGB code. Parameter name backgroundColor activityArrowColor activityBackgroundColor activityBorderColor activityStartColor activityEndColor activityBarColor usecaseArrowColor usecaseActorBackgroundColor usecaseActorBorderColor usecaseBackgroundColor usecaseBorderColor classArrowColor classBackgroundColor classBorderColor packageBackgroundColor packageBorderColor stereotypeCBackgroundColor stereotypeABackgroundColor stereotypeIBackgroundColor stereotypeEBackgroundColor componentArrowColor componentBackgroundColor componentBorderColor componentInterfaceBackgroundColor componentInterfaceBorderColor noteBackgroundColor noteBorderColor stateBackgroundColor stateBorderColor stateArrowColor stateStartColor stateEndColor sequenceArrowColor sequenceActorBackgroundColor sequenceActorBorderColor sequenceGroupBackgroundColor sequenceLifeLineBackgroundColor sequenceLifeLineBorderColor sequenceParticipantBackgroundColor sequenceParticipantBorderColor Default Value white Color Comment Background of the page #A80036 Color of arrows in activity diagrams #FEFECE Background of activities #A80036 Color of activity borders black Starting circle in activity diagrams black Ending circle in activity diagrams black Synchronization bar in activity diagrams #A80036 Color of arrows in usecase diagrams #FEFECE Head's color of actor in usecase diagrams #A80036 Color of actor borders in usecase diagrams #FEFECE Background of usecases #A80036 Color of usecase borders in usecase diagrams #A80036 Color of arrows in class diagrams #FEFECE Цвет фона классов/интерфейсов/перечислений в #A80036 Цвет рамки классов/интерфейсов/перечислений #FEFECE Background of packages in class diagrams #A80036 Границы пакетов в диаграмме классов #ADD1B2 Фон типа класса в диаграмме классов #A9DCDF Фон индикаторов абстрактных классов в диаграм #B4A7E5 Background of interface spots in class diagrams #EB937F Background of enum spots in class diagrams #A80036 Color of arrows in component diagrams #FEFECE Background of components #A80036 Borders of components #FEFECE Background of interface in component diagrams #A80036 Border of interface in component diagrams #FBFB77 Фон заметок #A80036 Граница заметок #FEFECE Background of states in state diagrams #A80036 Граница состояний в диаграмме состояний #A80036 Цвета стрелок в диаграмме состоянийColors of a black Starting circle in state diagrams black Ending circle in state diagrams #A80036 Color of arrows in sequence diagrams #FEFECE Head's color of actor in sequence diagrams #A80036 Border of actor in sequence diagrams #EEEEEE Header color of alt/opt/loop in sequence diagrams white Background of life line in sequence diagrams #A80036 Border of life line in sequence diagrams #FEFECE Background of participant in sequence diagrams #A80036 Border of participant in sequence diagrams PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 92 of 108 10.4 Имя, цвет и размер шрифта 10 ИЗМЕНИТЬ ШРИФТЫ И ЦВЕТА 10.4. Имя, цвет и размер шрифта Вы можете изменить шрифт изображения, используя параметры xxxFontColor, xxxFontSize и xxxFontName. Пример: skinparam classFontColor red skinparam classFontSize 10 skinparam classFontName Aapex Любой шрифт можно задать в качестве шрифта по-умолчанию, используя skinparam defaultFontName. Пример: skinparam defaultFontName Aapex Please note the fontname is highly system dependent, so do not over use it, if you look for portability. Parameter Name activityFontColor activityFontSize activityFontStyle activityFontName activityArrowFontColor activityArrowFontSize activityArrowFontStyle activityArrowFontName circledCharacterFontColor circledCharacterFontSize circledCharacterFontStyle circledCharacterFontName circledCharacterRadius classArrowFontColor classArrowFontSize classArrowFontStyle classArrowFontName classAttributeFontColor classAttributeFontSize classAttributeIconSize classAttributeFontStyle classAttributeFontName classFontColor classFontSize classFontStyle classFontName classStereotypeFontColor classStereotypeFontSize classStereotypeFontStyle classStereotypeFontName componentFontColor componentFontSize componentFontStyle componentFontName componentStereotypeFontColor componentStereotypeFontSize componentStereotypeFontStyle componentStereotypeFontName Default Value black 14 plain black 13 plain black 17 bold Courier 11 black 10 plain black 10 10 plain black 12 plain black 12 italic black 14 plain black 14 italic Comment Used for activity box Used for text on arrows in activity diagrams Used for text in circle for class, enum and others Используется для подписей стрелок в диаграмме клас Class attributes and methods Used for classes name Used for stereotype in classes Used for components name Used for stereotype in components PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 93 of 108 10.4 Имя, цвет и размер шрифта componentArrowFontColor componentArrowFontSize componentArrowFontStyle componentArrowFontName noteFontColor noteFontSize noteFontStyle noteFontName packageFontColor packageFontSize packageFontStyle packageFontName sequenceActorFontColor sequenceActorFontSize sequenceActorFontStyle sequenceActorFontName sequenceDividerFontColor sequenceDividerFontSize sequenceDividerFontStyle sequenceDividerFontName sequenceArrowFontColor sequenceArrowFontSize sequenceArrowFontStyle sequenceArrowFontName sequenceGroupingFontColor sequenceGroupingFontSize sequenceGroupingFontStyle sequenceGroupingFontName sequenceGroupingHeaderFontColor sequenceGroupingHeaderFontSize sequenceGroupingHeaderFontStyle sequenceGroupingHeaderFontName sequenceParticipantFontColor sequenceParticipantFontSize sequenceParticipantFontStyle sequenceParticipantFontName sequenceTitleFontColor sequenceTitleFontSize sequenceTitleFontStyle sequenceTitleFontName titleFontColor titleFontSize titleFontStyle titleFontName stateFontColor stateFontSize stateFontStyle stateFontName stateArrowFontColor stateArrowFontSize stateArrowFontStyle stateArrowFontName stateAttributeFontColor stateAttributeFontSize stateAttributeFontStyle stateAttributeFontName black 13 plain black 13 plain black 14 plain black 13 plain black 13 bold black 13 plain black 11 plain black 13 plain black 13 plain black 13 plain black 18 plain black 14 plain black 13 plain black 12 plain 10 ИЗМЕНИТЬ ШРИФТЫ И ЦВЕТА Used for text on arrows in component diagrams Used for notes in all diagrams but sequence diagrams Used for package and partition names Used for actor in sequence diagrams Used for text on dividers in sequence diagrams Used for text on arrows in sequence diagrams Used for text for "else" in sequence diagrams Used for text for "alt/opt/loop" headers in sequence diagr Used for text on participant in sequence diagrams Used for titles in sequence diagrams Used for titles in all diagrams but sequence diagrams Used for states in state diagrams Используется для задания текста на стрелках в диагра Used for states description in state diagrams PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 94 of 108 10.4 Имя, цвет и размер шрифта usecaseFontColor usecaseFontSize usecaseFontStyle usecaseFontName usecaseStereotypeFontColor usecaseStereotypeFontSize usecaseStereotypeFontStyle usecaseStereotypeFontName usecaseActorFontColor usecaseActorFontSize usecaseActorFontStyle usecaseActorFontName usecaseActorStereotypeFontColor usecaseActorStereotypeFontSize usecaseActorStereotypeFontStyle usecaseActorStereotypeFontName usecaseArrowFontColor usecaseArrowFontSize usecaseArrowFontStyle usecaseArrowFontName footerFontColor footerFontSize footerFontStyle footerFontName headerFontColor headerFontSize headerFontStyle headerFontName black 14 plain black 14 italic black 14 plain black 14 italic black 13 plain 10 ИЗМЕНИТЬ ШРИФТЫ И ЦВЕТА Используется для меток usecase'ов на usecase диаграм Used for stereotype in usecase Used for actor labels in usecase diagrams Used for stereotype for actor Used for text on arrows in usecase diagrams black 10 plain black 10 plain Используется для заголовков PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 95 of 108 10.5 Черно-белый вывод 10 ИЗМЕНИТЬ ШРИФТЫ И ЦВЕТА 10.5. Черно-белый вывод Вы можете принудительно задать использование черно-белого вывода используя skinparam monochrome true команду. @startuml skinparam monochrome true actor User participant " First Class " as A participant "Second Class " as B participant " Last Class " as C User −> A: DoWork activate A A −> B: Create Request activate B B −> C: DoWork activate C C −−> B: WorkDone destroy C B −−> A: Request Created deactivate B A −−> User : Done deactivate A @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 96 of 108 11 ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА 11. Предварительная обработка Some minor preprocessing capabilities are included in PlantUML, and available for all diagrams. Эта функциональность очень схожа с препроцессором языка C, за исключением того что символ решетки"#" заменяется на символ восклицания "!". Those functionnalities are very similar to the C language preprocessor, except that the special character (#) has been changed to the exclamation mark (!). 11.1. Включение файлов Вы можете использоваться директиву !include для включения файлов в ваши диаграммы.Пред Imagine you have the very same class that appears in many diagrams. Instead of duplicating the description of this class, you can define a file that contains the description. @startuml ! include L is t . iuml L ist <|.. ArrayList @enduml File List.iuml: interface List List : int size() List : void clear() Файл List.iuml может быть включен в несколько диаграмм, любые изменения в этом файле будут применятся ко всем диаграммам которые его включают. You can also put several @startuml/@enduml text block in an included file and then specify which block you want to include adding !0 where 0 is the block number. For example, if you use !include foo.txt!1, the second @startuml/@enduml block within foo.txt will be included. 11.2. Including URL Use the !includeurl directive to include file from Internet/Intranet in your diagram. You can also use !includeurl http://someurl.com/mypath!0 to specify which @startuml/@enduml block from http://someurl.com/mypath you want to include. The !0 notation denotes the first diagram. 11.3. Константы Вы можете определить константу используя директиву !define. Как в C language, a constant name can only use alphanumeric and underscore characters, and cannot start with a digit. PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 97 of 108 11.4 Macro definition 11 ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА @startuml ! define SEQUENCE (S,#AAAAAA) Database Sequence ! define TABLE (T,#FFAAAA) Database Table class USER << TABLE >> class ACCOUNT << TABLE >> class UID << SEQUENCE >> USER "1" −− "*" ACCOUNT USER −> UID @enduml Of course, you can use the !include directive to define all your constants in a single file that you include in your diagram. Constant can be undefined with the !undef XXX directive. You can also specify constants within the command line, with the -D flags. java −j a r plantuml . j a r −DTITLE="My t i t l e " atest1 . t x t Note that the -D flag must be put after the "-jar plantuml.jar" section. 11.4. Macro definition You can also define macro with arguments. @startuml ! define module( x ) component x <<module>> module(ABC) module(XYZ) @enduml Macro can have several arguments. @startuml ! define send ( a , b , c ) a−>b : c send ( Alice , Bob, Hello ) send (Bob, Alice , ok ) @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 98 of 108 11.5 Macro on several lines 11 ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА 11.5. Macro on several lines You can also define macro on several lines using !definelong and !enddefinelong. @startuml ! define DOUBLE( x ) x x ! definelong AUTHEN( x , y ) x −> y : DOUBLE( hello ) y −> x : ok ! enddefinelong AUTHEN(Bob, Alice ) @enduml 11.6. Conditions You can use !ifdef XXX and !endif directives to have conditionnal drawings. The lines between those two directives will be included only if the constant after the !ifdef directive has been defined before. You can also provide a !else part which will be included if the константа не определена. The lines between those two directives will be included only if the constant after the !ifdef directive has been defined before. You can also provide a !else part which will be included if the constant has not been defined. @startuml ! include ArrayList . iuml @enduml File ArrayList.iuml: class ArrayList ! i f d e f SHOW_METHODS ArrayList : i n t size ( ) ArrayList : void clear ( ) ! endif You can then use the !define directive to activate the conditionnal part of the diagram. @startuml ! define SHOW_METHODS ! include ArrayList . iuml @enduml PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 99 of 108 11.7 Search path 11 ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА You can also use the !ifndef directive that includes lines if the provided constant has NOT been defined. 11.7. Search path You can specify the java property "plantuml.include.path" in the command line. For example: java −Dplantuml . include . path="c : / mydir" −j a r plantuml . j a r atest1 . t x t Note the this -D option has to put before the -jar option. -D options after the -jar option will be used to define constants within plantuml preprocessor. 11.8. Advanced features It is possible to append text to a macro argument using the ## syntax. @startuml ! definelong COMP_TEXTGENCOMP(name) [name] << Comp >> interface I f c << IfcType >> AS name##I f c name##I f c − [name] ! enddefinelong COMP_TEXTGENCOMP(dummy) @enduml A macro can be defined by another macro. @startuml ! define DOUBLE( x ) x x ! definelong AUTHEN( x , y ) x −> y : DOUBLE( hello ) y −> x : ok ! enddefinelong AUTHEN(Bob, Alice ) @enduml A macro can be polymorphic with argument count. PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 100 of 108 11.8 Advanced features 11 ПРЕДВАРИТЕЛЬНАЯ ОБРАБОТКА @startuml ! define module( x ) component x <<module>> ! define module( x , y ) component x as y <<module>> module( foo ) module( bar , barcode ) @enduml You can use system environment variable or constant definition when using include: ! include %windir%/test1 . t x t ! define PLANTUML_HOME /home/ foo ! include PLANTUML_HOME/ test1 . t x t PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 101 of 108 12 ИНТЕРНАЦИОНАЛИЗАЦИЯ 12. Интернационализация The PlantUML language use letters to define actor, usecase and so on. But letters are not only A-Z latin characters, it could be any kind of letter from any language. @startuml skinparam backgroundColor #EEEBDC actor 使 用 者 participant " 頭 等 艙 " as A participant " 第 二 類 " as B participant " 最 後 一 堂 課 " as 別 的 東 西 使 用 者 −> A: 完 成 這 項 工 作 activate A A −> B: 創 建 請 求 activate B B −> 別 的 東 西 : 創 建 請 求 activate 別 的 東 西 別 的 東 西 −−> B: 這 項 工 作 完 成 destroy 別 的 東 西 B −−> A: 請 求 創 建 deactivate B A −−> 使 用 者 : 做 完 deactivate A @enduml 12.1. Кодировка The default charset used when reading the text files containing the UML text description is system dependent. Normally, it should just be fine, but in some case, you may want to the use another charset. For example, with the command line: java −j a r plantuml . j a r −charset UTF−8 f i l e s . t x t PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 102 of 108 12.1 Кодировка 12 ИНТЕРНАЦИОНАЛИЗАЦИЯ Or, with the ant task: <target name="main"> <plantuml dir ="./ src " charset="UTF−8" /> </target> Depending of your Java installation, the following charset should be available: ISO-8859-1, UTF-8, UTF-16BE, UTF-16LE, UTF-16. PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 103 of 108 13 ЦВЕТНЫЕ ИМЕНА 13. Цветные имена Here is the list of colors recognized by PlantUML. Note that color names are case insensitive. AliceBlue AntiqueWhite Aquamarine Aqua Azure Beige Bisque Black BlanchedAlmond BlueViolet Blue Brown BurlyWood CadetBlue Chartreuse Chocolate Coral CornflowerBlue Cornsilk Crimson Cyan DarkBlue DarkCyan DarkGoldenRod DarkGray DarkGreen DarkKhaki DarkMagenta DarkOliveGreen DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkTurquoise DarkViolet Darkorange DeepPink DeepSkyBlue DimGray DodgerBlue FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite GoldenRod Gold Gray GreenYellow Green HoneyDew HotPink IndianRed Indigo Ivory Khaki LavenderBlush Lavender LawnGreen LemonChiffon LightBlue LightCoral LightCyan LightGoldenRodYellow LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSteelBlue LightYellow LimeGreen Lime Linen Magenta Maroon MediumAquaMarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed MidnightBlue MintCream MistyRose Moccasin PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) NavajoWhite Navy OldLace OliveDrab Olive OrangeRed Orange Orchid PaleGoldenRod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip PeachPuff Peru Pink Plum PowderBlue Purple Red RosyBrown RoyalBlue SaddleBrown Salmon SandyBrown SeaGreen SeaShell Sienna Silver SkyBlue SlateBlue SlateGray Snow SpringGreen SteelBlue Tan Teal Thistle Tomato Turquoise Violet Wheat WhiteSmoke White YellowGreen Yellow 104 of 108 СОДЕРЖАНИЕ СОДЕРЖАНИЕ Содержание 1 Диаграммы последовательности 1 1.1 Основные примеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Комментарии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 Объявление участников . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.4 Use non-letters in participants . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.5 Сообщения к самому себе . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.6 Изменить стиль стрелок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.7 Изменить цвет стрелок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.8 Нумерация сообщений в последовательностях . . . . . . . . . . . . . . . 4 1.9 Заголовок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.10Legend the diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.11Разбиение диаграм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.12Группировка сообщений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.13Примечания в сообщениях . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.14Some other notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.15Changing notes shape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.16Creole and HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.17Divider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.18Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.19Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.20Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.21Строка активации и деактивации . . . . . . . . . . . . . . . . . . . . . . . 13 1.22Participant creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.23Incoming and outgoing messages . . . . . . . . . . . . . . . . . . . . . . . . 15 1.24Stereotypes and Spots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.25More information on titles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.26Participants encompass . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.27Удаление футера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.28Skinparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2 Диаграмма прецедентов 21 2.1 Прецеденты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2 Актёры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3 Usecases description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4 Основной пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5 Расширение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.6 Использование заметок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.7 Stereotypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.8 Changing arrows direction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.9 Title the diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.10Splitting diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.11Направление слева направо . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.12Skinparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.13Complete example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 105 of 108 СОДЕРЖАНИЕ СОДЕРЖАНИЕ 3 Диаграмма классов 29 3.1 Отношения между классами . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.2 Метки на отношениях . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.3 Добавление методов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.4 Указание видимости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 3.5 Abstract and Static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.6 Advanced class body . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 3.7 Notes and stereotypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.8 More on notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3.9 Note on links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.10Abstract class and interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.11Using non-letters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.12Скрытие атрибутов, методов . . . . . . . . . . . . . . . . . . . . . . . . . . 40 3.13Hide classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.14Use generics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.15Specific Spot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.16Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.17Packages style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3.18Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.19Automatic namespace creation . . . . . . . . . . . . . . . . . . . . . . . . . . 44 3.20Lollipop интерфейс . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.21Изменение направления стрелок . . . . . . . . . . . . . . . . . . . . . . . 45 3.22Заголовок диаграммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.23Legend the diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.24Ассоциация классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.25Skinparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.26Skinned Stereotypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.27Color gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.28Splitting large files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 4 Диаграмма деятельности 52 4.1 Простая деятельность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.2 Метка на стрелках . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.3 Изменение направления стрелки . . . . . . . . . . . . . . . . . . . . . . . 53 4.4 Ветвления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.5 More on Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4.6 Синхронизация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 4.7 Long activity description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.8 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.9 Partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 4.10Заголовок диаграммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.11Skinparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.12Octagon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.13Complete example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 106 of 108 СОДЕРЖАНИЕ СОДЕРЖАНИЕ 5 Activity Diagram (beta) 5.1 Simple Activity 63 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.3 Conditional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 5.4 Repeat loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.5 While loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 5.6 Parallel processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.7 Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 5.8 Title Legend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.9 Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.10Arrows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 5.11Grouping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 5.12Swimlanes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.13Detach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 5.14SDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 5.15Complete example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 5.2 Start/Stop 6 Component Diagram 74 6.1 Компоненты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.2 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.3 Basic example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 6.4 Using notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.5 Grouping Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.6 Изменение направления связи . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.7 Title the diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.8 Use UML2 notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.9 Skinparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 7 Диаграмма состояний 81 7.1 Простое состояние . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 7.2 Составное состояние . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 7.3 Длинные имена . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 7.4 Параллельные состояния . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 7.5 Направления стрелок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 7.6 Заметки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 7.7 Еще о заметках . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.8 Skinparam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 8 Диаграмма объектов 88 8.1 Определение объектов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.2 Отношения между объектами . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.3 Добавление полей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 8.4 Common features with class diagrams . . . . . . . . . . . . . . . . . . . . . 89 PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 107 of 108 СОДЕРЖАНИЕ СОДЕРЖАНИЕ 9 Общие команды 90 9.1 Заголовок и подвал . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 9.2 Масштаб . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 10 Изменить шрифты и цвета 91 10.1Использование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 10.2Вложенный . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 10.3Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 10.4Имя, цвет и размер шрифта . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 10.5Черно-белый вывод . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 11 Предварительная обработка 97 11.1Включение файлов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 11.2Including URL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 11.3Константы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 11.4Macro definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 11.5Macro on several lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 11.6Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 11.7Search path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 11.8Advanced features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 12 Интернационализация 102 12.1Кодировка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 13 Цветные имена PlantUML : Справочное руководство по языку (27 Февраль 2015 г.) 104 108 of 108
© Copyright 2024