Simple Activity
新的语法是 : 节点 ; 结束
@startuml
title act_new_1
:步骤一;
:此处简单的Mark语法 **加粗字体**;
@enduml
Start/Stop 开始和结束
@startuml
title act_new_2
start
:步骤一;
:mark 语法 **加粗字体**;
stop
@enduml
Conditional 条件语句
控制语句的使用,注意内容 () 的使用
@startuml
title act_new_3
start
if(是否已下载文件?) then (是)
:执行 diagrame\n\\n可实现换行;
else (否)
:需要下载文件\t可实现空格ab后才能执行;
endif
stop
@enduml
Repeat loop 循环处理(控制语句)
使用关键字 repeat, repeat while () 来实现
@startuml
title act_new_4
start
repeat
:读取文件;
:编译;
repeat while (更多,执行下一个?)
stop
@enduml
While loop 循环控制
使用 while endwhile 循环控制
@startuml
title act_new_5
start
while (执行条件允许文件存在?)
:读取文件;
:编译;
endwhile
stop
@enduml
可以追加标签
@startuml
title act_new_5
start
:打开文件;
while (检查文件大小?) is (有内容)
:读取文件;
:编译;
endwhile (空)
:关闭文件;
end
@enduml
Parallel processing 并行处理
使用 fork 关键字创建并行处理
@startuml
title act_new_7
start
if (multiprocessor?) then (yes)
fork
:Treatment 1;
fork again
:Treatment 2;
end fork
else (monoproc)
:Treatment 1;
:Treatment 1;
endif
@enduml
Notes 注释
和旧版基本相同,单行注释使用 note right|left 内容,注意后面没有分号。而多行注释依旧使用 note right|left 换行 内容 换行 end note的方式处理
@startuml
title act_new_8
start
: 步骤1;
note left: This is a __NOTE__
: 步骤2;
note right
支持 mark 编辑语法
This note is on several
//lines// and can
contain <b>HTML</b>
====
* Calling the method ""foo()"" is prohibited
end note
stop
@enduml
color颜色
在冒号前可以追加 #十六进制 的颜色编号或者名称
@startuml
title act_new_9
start
:进程开始;
#red:试着读取文件
文件必须有可写权限!;
#AAAAAA:结束进程;
stop
@enduml
流程图
流程图语法在开始位置必须为 节点 --> 节点, 使用 (*) 来标识开始和结束。
内部则可以 使用 --> 节点 。
节点是具有唯一性的,当流程中出现节点名称相同的时候会产生混乱, 所以在写 uml 的时候注意保证节点的唯一性
开始与结束
@startuml
title act_1
(*) --> "文档 内容"
-->(*)
@enduml
进程节点
在箭头后追加 [标签内容] 可以放置标签。
在 --> 中间可以通过 up,down,left,right 来人为控制箭头的方向
@startuml
title act_2
(*) -->"开始"
--> "节点名称"
-->[箭头的注释] "节点名称0"
-up-> "节点名称1"
-down-> "节点名称2"
-left-> "节点名称3"
-right-> "节点名称4"
-->(*)
@enduml
条件语句(控制流程)
使用 if 条件 then \n else 和 endif 写控制语句
@startuml
title act_3
(*)->1
if "介绍" then
-->[true] "真"
else
-->[false] "真"
endif
->(*)
@enduml
注释
单行注释
note right: 右侧的内容
note left: 右侧的内容
多行注释
note right:
多行内容
endnote
分区
@startuml
title act_4
(*) --> 开始
partition "分区名称" {
--> "基本节点"
}
--> (*)
@enduml
Parallel processing 并行处理
Parallel processing 并行处理
使用 ===标记===, 来处理, 重新从某位置开始的时候使用 ===标记=== --> 节点 重新开始
@startuml
title act_5
(*) -->内容
--> ===B1===
--> "Parallel Activity 1"
--> ===B2===
===B1=== --> "Parallel Activity 2"
--> ===B2===
--> (*)
@enduml
综合案例
@startuml
title act_6
(*) --> "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
Sequence Diagram 时序图
基本语法
使用 节点 -> 节点: 描述 -> 为实线
如果使用虚线则 用 -->
箭头的方向可以是双向的 节点 <-- 节点
@startuml
title seq_1
用户 -> 平台: 发送登录请求
平台 --> 用户: 验证通过
用户 -> 平台: 另一个请求
用户 <-- 平台: 返回验证消息
@enduml
Comments 注释
内部注释使用 ’ 单引号来开始 单行注释, 多行注释则使用 /’ 和 '/ 包括
Declaring participant (角色)
提供了的声明参加者(角色),来丰富图形, 默认情况下在箭头两边的已经隐式声明了(participant),也可以使用 participant 节点 来显示声明角色,这种状况主要是为了声明角色的顺序
@startuml
title seq_2
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
@enduml
追加色彩
@startuml
title seq_3
actor 客户 #red
' 声明角色的时候在后面可以追加颜色
' 注释内容并不会显示
' The only difference between actor
' and participant is the drawing
participant 服务端
participant "I have a really\nlong name" as L #99FF99
/' 这里使用 `as` 关键字声明了 L 来作为别名
你也可以这样写:
participant L as "I have a really\nlong name" #99FF99
'/
服务端->客户: 请求认证
客户->服务端: Authentication Response
客户->L: Log transaction
@enduml
Use non-letters in participants 非字符处理