Simple Activity

新的语法是 : 节点 ; 结束

@startuml
title act_new_1
:步骤一;
:此处简单的Mark语法 **加粗字体**;
@enduml

plantuml画复杂架构图_plantuml画复杂架构图

Start/Stop 开始和结束

@startuml
title act_new_2
start
:步骤一;
:mark 语法 **加粗字体**;

stop
@enduml

plantuml画复杂架构图_ci_02

Conditional 条件语句

控制语句的使用,注意内容 () 的使用

@startuml
title act_new_3
start
if(是否已下载文件?) then (是)
    :执行 diagrame\n\\n可实现换行;
else (否)
    :需要下载文件\t可实现空格ab后才能执行;
endif
stop
@enduml

plantuml画复杂架构图_前端_03

Repeat loop 循环处理(控制语句)

使用关键字 repeat, repeat while () 来实现

@startuml
title act_new_4
start
repeat
    :读取文件;
    :编译;
repeat while (更多,执行下一个?)

stop
@enduml

plantuml画复杂架构图_plantuml画复杂架构图_04

While loop 循环控制

使用 while endwhile 循环控制

@startuml
title act_new_5
start
while (执行条件允许文件存在?)
    :读取文件;
    :编译;
endwhile
stop
@enduml

plantuml画复杂架构图_plantuml画复杂架构图_05


可以追加标签

@startuml
title act_new_5
start
:打开文件;
while (检查文件大小?) is (有内容)
    :读取文件;
    :编译;
endwhile (空)
:关闭文件;
end
@enduml

plantuml画复杂架构图_学习_06

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

plantuml画复杂架构图_ci_07

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

plantuml画复杂架构图_plantuml画复杂架构图_08

color颜色

在冒号前可以追加 #十六进制 的颜色编号或者名称

@startuml
title act_new_9
start
:进程开始;
#red:试着读取文件
文件必须有可写权限!;
#AAAAAA:结束进程;
stop
@enduml

plantuml画复杂架构图_学习_09

流程图

流程图语法在开始位置必须为 节点 --> 节点, 使用 (*) 来标识开始和结束。
内部则可以 使用 --> 节点 。

节点是具有唯一性的,当流程中出现节点名称相同的时候会产生混乱, 所以在写 uml 的时候注意保证节点的唯一性

开始与结束

@startuml
title act_1

(*) --> "文档 内容"
-->(*)
@enduml

plantuml画复杂架构图_ci_10

进程节点

在箭头后追加 [标签内容] 可以放置标签。
在 --> 中间可以通过 up,down,left,right 来人为控制箭头的方向

@startuml
title act_2
(*) -->"开始"
--> "节点名称"
-->[箭头的注释] "节点名称0"
-up-> "节点名称1"
-down->  "节点名称2"
-left->  "节点名称3"
-right->  "节点名称4"
-->(*)
@enduml

plantuml画复杂架构图_plantuml画复杂架构图_11

条件语句(控制流程)

使用 if 条件 then \n else 和 endif 写控制语句

@startuml

title act_3

(*)->1
if  "介绍" then
    -->[true] "真"
else
    -->[false] "真"
endif
->(*)
@enduml

plantuml画复杂架构图_前端_12

注释

单行注释

note right:  右侧的内容
note left:  右侧的内容

多行注释

note right:
多行内容
endnote

分区

@startuml

title act_4

(*) --> 开始
partition "分区名称" {
    --> "基本节点"
}
--> (*)

@enduml

plantuml画复杂架构图_chrome_13

Parallel processing 并行处理

Parallel processing 并行处理
使用 ===标记===, 来处理, 重新从某位置开始的时候使用 ===标记=== --> 节点 重新开始
@startuml
title act_5

(*) -->内容

--> ===B1===
--> "Parallel Activity 1"
--> ===B2===

===B1=== --> "Parallel Activity 2"
--> ===B2===

--> (*)

@enduml

plantuml画复杂架构图_ci_14

综合案例

@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

plantuml画复杂架构图_chrome_15

Sequence Diagram 时序图

基本语法

使用 节点 -> 节点: 描述 -> 为实线
如果使用虚线则 用 -->
箭头的方向可以是双向的 节点 <-- 节点

@startuml

title seq_1

用户 -> 平台: 发送登录请求
平台 --> 用户: 验证通过
用户 -> 平台: 另一个请求
用户 <-- 平台: 返回验证消息
@enduml

plantuml画复杂架构图_前端_16

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

plantuml画复杂架构图_chrome_17


追加色彩

@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

plantuml画复杂架构图_ci_18

Use non-letters in participants 非字符处理