使用
(*)
作为活动图的开始点和结束点。
有时,你可能想用
(*top)
强制开始点位于图示的顶端。
使用
-->
绘制箭头。
🎉 Copied!
|
@startuml
(*) --> "First Activity"
"First Activity" --> (*)
@enduml
|
默认情况下,箭头开始于最接近的活动。
可以用
[
和
]
放在箭头定义的后面来添加标签。
🎉 Copied!
|
@startuml
(*) --> "First Activity"
-->[You can put also labels] "Second Activity"
--> (*)
@enduml
|
你可以使用
->
定义水平方向箭头,还可以使用下列语法强制指定箭头的方向:
-down->
(default arrow)
-right->
or ->
-left->
-up->
🎉 Copied!
|
@startuml
(*) -up-> "First Activity"
-right-> "Second Activity"
--> "Third Activity"
-left-> (*)
@enduml
|
你可以使用关键字
if/then/else
创建分支。
🎉 Copied!
|
@startuml
(*) --> "Initialization"
if "Some Test" then
-->[true] "Some Activity"
--> "Another activity"
-right-> (*)
else
->[false] "Something else"
-->[Ending process] (*)
endif
@enduml
|
不过,有时你可能需要重复定义同一个活动:
🎉 Copied!
|
@startuml
(*) --> "check input"
If "input is verbose" then
--> [Yes] "turn on verbosity"
--> "run command"
else
--> "run command"
Endif
-->(*)
@enduml
|
默认情况下,一个分支连接上一个最新的活动,但是也可以使用
if
关键字进行连接。
还可以嵌套定义分支。
🎉 Copied!
|
@startuml
(*) --> if "Some Test" then
-->[true] "action 1"
if "" then
-> "action 3" as a3
else
if "Other test" then
-left-> "action 5"
else
--> "action 6"
endif
endif
else
->[false] "action 2"
endif
a3 --> if "last test" then
--> "action 7"
else
-> "action 8"
endif
@enduml
|
你可以使用
=== code ===
来显示同步条。
🎉 Copied!
|
@startuml
(*) --> ===B1===
--> "Parallel Activity 1"
--> ===B2===
===B1=== --> "Parallel Activity 2"
--> ===B2===
--> (*)
@enduml
|
定义活动时可以用
\n
来定义跨越多行的描述。
还可以用
as
关键字给活动起一个短的别名。
这个别名可以在接下来的图示定义中使用。
🎉 Copied!
|
@startuml
(*) -left-> "this <size:20>activity</size>
is <b>very</b> <color:red>long2</color>
and defined on several lines
that contains many <i>text</i>" as A1
-up-> "Another activity\n on several lines"
A1 --> "Short activity <img:sourceforge.jpg>"
@enduml
|
你可以在活动定义之后用
note left
,
note right
,
note top
or
note bottom
,
命令给活动添加注释。
如果想给开始点添加注释,只需把注释的定义放在活动图最开始的地方即可。
也可以用关键字
endnote
定义多行注释。
🎉 Copied!
|
@startuml
(*) --> "Some Activity"
note right: This activity has to be defined
"Some Activity" --> (*)
note left
This note is on
several lines
end note
@enduml
|
用关键字
partition
定义分区,还可以设置背景色(用颜色名或者颜色值)。
定义活动的时候,它自动被放置到最新的分区中。
用
}
结束分区的定义。
🎉 Copied!
|
@startuml
partition Conductor {
(*) --> "Climbs on Platform"
--> === S1 ===
--> Bows
}
partition Audience #LightSkyBlue {
=== S1 === --> Applauds
}
partition Conductor {
Bows --> === S2 ===
--> WavesArmes
Applauds --> === S2 ===
}
partition Orchestra #CCCCEE {
WavesArmes --> Introduction
--> "Play music"
}
@enduml
|
用
skinparam
命令修改字体和颜色。
如下场景可用:
- 在图示定义中
- 在引入的文件中
- 在命令行或ANT任务提供的配置文件中。
还可以为构造类型指定特殊颜色和字体。
🎉 Copied!
|
@startuml
skinparam backgroundColor #AAFFFF
skinparam activity {
StartColor red
BarColor SaddleBrown
EndColor Silver
BackgroundColor Peru
BackgroundColor<< Begin >> Olive
BorderColor Peru
FontName Impact
}
(*) --> "Climbs on Platform" << Begin >>
--> === S1 ===
--> Bows
--> === S2 ===
--> WavesArmes
--> (*)
@enduml
|
可用用
skinparam activityShape octagon
命令将活动的外形改为八边形。
🎉 Copied!
|
@startuml
'Default is skinparam activityShape roundBox
skinparam activityShape octagon
(*) --> "First Activity"
"First Activity" --> (*)
@enduml
|
🎉 Copied!
|
@startuml
title Servlet Container
(*) --> "ClickServlet.handleRequest()"
--> "new Page"
if "Page.onSecurityCheck" then
->[true] "Page.onInit()"
if "isForward?" then
->[no] "Process controls"
if "continue processing?" then
-->[yes] ===RENDERING===
else
-->[no] ===REDIRECT_CHECK===
endif
else
-->[yes] ===RENDERING===
endif
if "is Post?" then
-->[yes] "Page.onPost()"
--> "Page.onRender()" as render
--> ===REDIRECT_CHECK===
else
-->[no] "Page.onGet()"
--> render
endif
else
-->[false] ===REDIRECT_CHECK===
endif
if "Do redirect?" then
->[yes] "redirect request"
--> ==BEFORE_DESTROY===
else
if "Do Forward?" then
-left->[yes] "Forward request"
--> ==BEFORE_DESTROY===
else
-right->[no] "Render page template"
--> ==BEFORE_DESTROY===
endif
endif
--> "Page.onDestroy()"
-->(*)
@enduml
|