UML作业第六次:分析系统,绘制顺序图

简单示例

可以用->来绘制参与者之间传递的消息, 而不必显式地声明参与者。也可以使用 --> 绘制一个虚线箭头。还能用 <- 和 <--,这不影响绘图,但可以提高可读性。(注意:仅适用于时序图,对于其它示意图,规则是不同的)

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第1张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第2张
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第3张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第4张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第5张

声明参与者

关键字 participant 用于改变参与者的先后顺序

也可以使用其它关键字来声明参与者:

  • actor
  • boundary
  • control
  • entity
  • database
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第6张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第7张
@startuml
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
collections Foo6
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
Foo1 -> Foo6 : To collections

@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第8张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第9张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第10张

关键字 as 用于重命名参与者

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第11张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第12张
@startuml
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant "I have a really\nlong name" as L #99FF99
/' You can also declare:
   participant L as "I have a really\nlong name"  #99FF99
  '/

Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第13张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第14张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第15张

可以使用关键字 order自定义顺序来打印参与者

@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第16张

在参与者中使用非字母符号

可以使用引号定义参与者,还可以用关键字 as 给参与者定义别名

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第17张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第18张
@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "This is very\nlong" as Long
' You can also declare:
' "Bob()" -> Long as "This is very\nlong"
Long --> "Bob()" : ok
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第19张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第20张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第21张

给自己发消息

参与者可以给自己发信息,消息文字可以用\n来换行

@startuml
Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第22张

修改箭头样式

修改箭头样式的方式有以下几种:

  • 表示一条丢失的消息:末尾加 x
  • 让箭头只有上半部分或者下半部分:将<>替换成\或者 /
  • 细箭头:将箭头标记写两次 (如 >> 或 //)
  • 虚线箭头:用 -- 替代 -
  • 箭头末尾加圈:->o
  • 双向箭头:<->
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第23张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第24张
@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
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第25张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第26张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第27张

修改箭头颜色

@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第28张

对消息序列编号

关键字 autonumber 用于自动对消息编号

@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第29张

语句 autonumber start 用于指定编号的初始值,而 autonumber startincrement 可以同时指定编号的初始值和每次增加的值

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第30张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第31张
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response

autonumber 15
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response

autonumber 40 10
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response

@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第32张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第33张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第34张

可以在双引号内指定编号的格式(0 表示数字;# 也表示数字,但默认为0)

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第35张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第36张
@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
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第37张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第38张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第39张

还可以用语句 autonumber stop 和 autonumber resume incrementformat 来表示暂停或继续使用自动编号

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第40张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第41张
@startuml
autonumber 10 10 "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response

autonumber stop
Bob -> Alice : dummy

autonumber resume "<font color=red><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response

autonumber stop
Bob -> Alice : dummy

autonumber resume 1 "<font color=blue><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第42张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第43张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第44张

分割示意图

关键字 newpage 用于把一张图分割成多张,在 newpage 之后添加文字,作为新的示意图的标题。

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第45张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第46张
@startuml

Alice -> Bob : message 1
Alice -> Bob : message 2

newpage

Alice -> Bob : message 3
Alice -> Bob : message 4

newpage A title for the\nlast page

Alice -> Bob : message 5
Alice -> Bob : message 6
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第47张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第48张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第49张

组合消息

可以通过以下关键词将组合消息:

  • all/else
  • opt
  • loop
  • par
  • break
  • critical
  • group,后面紧跟消息内容

可以在标头(header)添加需要显示的文字(group除外),关键词 end 用来结束分组。

 

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第50张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第51张
@startuml
Alice -> Bob: Authentication Request

alt successful case

    Bob -> Alice: Authentication Accepted
    
else some kind of failure

    Bob -> Alice: Authentication Failure
    group My own label
        Alice -> Log : Log attack start
        loop 1000 times
            Alice -> Bob: DNS Attack
        end
        Alice -> Log : Log attack end
    end
    
else Another type of failure

   Bob -> Alice: Please repeat
   
end
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第52张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第53张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第54张

注释

可以通过在消息后面添加 note left 或者 note right 关键词来给消息添加注释

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第55张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第56张
@startuml
Alice->Bob : hello
note left: this is a first note

Bob->Alice : ok
note right: this is another note

Bob->Bob : I am thinking
note left
    a note
    can also be defined
    on several lines
end note
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第57张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第58张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第59张

更改备注框的情况

可以使用 hnote 和 rnote 这两个关键字来修改备注框的形状

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第60张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第61张
@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
 "r" as rectangle
 "h" as hexagon
endrnote
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第62张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第63张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第64张

分隔符

可以通过使用 == 关键词来将你的图表分割多个步骤

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第65张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第66张
@startuml

== Initialization ==

Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

== Repetition ==

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response

@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第67张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第68张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第69张

延迟

可以使用...来表示延迟,并且还可以给延迟添加注释

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第70张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第71张
@startuml

Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes latter...
Bob --> Alice: Bye !

@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第72张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第73张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第74张

生命线的激活与撤销

关键字activatedeactivate用来表示参与者的生命活动,一旦参与者被激活,它的生命线就会显示出来,activatedeactivate适用于以上情形,destroy表示一个参与者的生命线的终结。

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第75张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第76张
@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
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第77张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第78张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第79张

进入和发出消息

如果只想关注部分图示,可以使用进入和发出箭头,使用方括号[]表示图示的左、右两侧。

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第80张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第81张
@startuml
[-> A: DoWork

activate A

A -> A: Internal call
activate A

A ->] : << createRequest >>

A<--] : RequestCreated
deactivate A
[<- A: Done
deactivate A
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第82张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第83张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第84张

包裹参与者

可以使用boxend box画一个盒子将参与者包裹起来,还可以在box关键字之后添加标题或者背景颜色。

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第85张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第86张
@startuml

box "Internal Service" #LightBlue
    participant Bob
    participant Alice
end box
participant Other

Bob -> Alice : hello
Alice -> Other : hello

@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第87张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第88张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第89张

填充区设置

可以设定填充区的参数配置

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第90张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第91张
@startuml
skinparam ParticipantPadding 20
skinparam BoxPadding 10

box "Foo1"
participant Alice1
participant Alice2
end box
box "Foo2"
participant Bob1
participant Bob2
end box
Alice1 -> Bob1 : hello
Alice1 -> Out : out
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第92张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第93张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第94张

二、《工厂采购》系统

  • 采购员选择采购货品
  • 到订货界面,接收客户信息,接收货品信息,显示货品信息
  • 到订货管理器,创建客户,取货品信息,创建订单
  • 创建客户到客户区,取货品信息到货品区,创建订单到订单区
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第95张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第96张
@startuml
skinparam sequenceArrowThickness 2
  skinparam roundcorner 20
  skinparam maxmessagesize 60

  actor 采购员
  participant "订货界面" as A
  participant "订货管理器" as B
  participant "客户" as C
  participant "货品" as D
  participant "订单" as E
 
 采购员 -> A: 客户信息()
 activate A
 采购员 -> A: 选择订货货品()
 activate A
 
 A -> B:接收客户信息()
 activate B
 A -> B:接收货品信息()
 activate B
 B --> A: 显示货品信息()
 deactivate B
 
 B -> C: 创建客户()<<create>>
 activate C
 B -> D: 取货品信息()
 activate D
 D --> B: 货品信息()
 activate D
 B -> E: 创建订单()<<create>>
 activate E
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第97张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第98张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第99张

,

简单示例

可以用->来绘制参与者之间传递的消息, 而不必显式地声明参与者。也可以使用 --> 绘制一个虚线箭头。还能用 <- 和 <--,这不影响绘图,但可以提高可读性。(注意:仅适用于时序图,对于其它示意图,规则是不同的)

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第100张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第101张
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第102张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第103张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第104张

声明参与者

关键字 participant 用于改变参与者的先后顺序

也可以使用其它关键字来声明参与者:

  • actor
  • boundary
  • control
  • entity
  • database
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第105张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第106张
@startuml
actor Foo1
boundary Foo2
control Foo3
entity Foo4
database Foo5
collections Foo6
Foo1 -> Foo2 : To boundary
Foo1 -> Foo3 : To control
Foo1 -> Foo4 : To entity
Foo1 -> Foo5 : To database
Foo1 -> Foo6 : To collections

@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第107张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第108张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第109张

关键字 as 用于重命名参与者

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第110张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第111张
@startuml
actor Bob #red
' The only difference between actor
'and participant is the drawing
participant Alice
participant "I have a really\nlong name" as L #99FF99
/' You can also declare:
   participant L as "I have a really\nlong name"  #99FF99
  '/

Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第112张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第113张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第114张

可以使用关键字 order自定义顺序来打印参与者

@startuml
participant Last order 30
participant Middle order 20
participant First order 10
@enduml

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第115张

在参与者中使用非字母符号

可以使用引号定义参与者,还可以用关键字 as 给参与者定义别名

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第116张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第117张
@startuml
Alice -> "Bob()" : Hello
"Bob()" -> "This is very\nlong" as Long
' You can also declare:
' "Bob()" -> Long as "This is very\nlong"
Long --> "Bob()" : ok
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第118张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第119张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第120张

给自己发消息

参与者可以给自己发信息,消息文字可以用\n来换行

@startuml
Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
@enduml

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第121张

修改箭头样式

修改箭头样式的方式有以下几种:

  • 表示一条丢失的消息:末尾加 x
  • 让箭头只有上半部分或者下半部分:将<>替换成\或者 /
  • 细箭头:将箭头标记写两次 (如 >> 或 //)
  • 虚线箭头:用 -- 替代 -
  • 箭头末尾加圈:->o
  • 双向箭头:<->
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第122张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第123张
@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
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第124张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第125张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第126张

修改箭头颜色

@startuml
Bob -[#red]> Alice : hello
Alice -[#0000FF]->Bob : ok
@enduml

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第127张

对消息序列编号

关键字 autonumber 用于自动对消息编号

@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第128张

语句 autonumber start 用于指定编号的初始值,而 autonumber startincrement 可以同时指定编号的初始值和每次增加的值

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第129张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第130张
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response

autonumber 15
Bob -> Alice : Another authentication Request
Bob <- Alice : Another authentication Response

autonumber 40 10
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response

@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第131张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第132张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第133张

可以在双引号内指定编号的格式(0 表示数字;# 也表示数字,但默认为0)

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第134张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第135张
@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
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第136张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第137张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第138张

还可以用语句 autonumber stop 和 autonumber resume incrementformat 来表示暂停或继续使用自动编号

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第139张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第140张
@startuml
autonumber 10 10 "<b>[000]"
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response

autonumber stop
Bob -> Alice : dummy

autonumber resume "<font color=red><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response

autonumber stop
Bob -> Alice : dummy

autonumber resume 1 "<font color=blue><b>Message 0  "
Bob -> Alice : Yet another authentication Request
Bob <- Alice : Yet another authentication Response
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第141张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第142张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第143张

分割示意图

关键字 newpage 用于把一张图分割成多张,在 newpage 之后添加文字,作为新的示意图的标题。

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第144张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第145张
@startuml

Alice -> Bob : message 1
Alice -> Bob : message 2

newpage

Alice -> Bob : message 3
Alice -> Bob : message 4

newpage A title for the\nlast page

Alice -> Bob : message 5
Alice -> Bob : message 6
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第146张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第147张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第148张

组合消息

可以通过以下关键词将组合消息:

  • all/else
  • opt
  • loop
  • par
  • break
  • critical
  • group,后面紧跟消息内容

可以在标头(header)添加需要显示的文字(group除外),关键词 end 用来结束分组。

 

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第149张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第150张
@startuml
Alice -> Bob: Authentication Request

alt successful case

    Bob -> Alice: Authentication Accepted
    
else some kind of failure

    Bob -> Alice: Authentication Failure
    group My own label
        Alice -> Log : Log attack start
        loop 1000 times
            Alice -> Bob: DNS Attack
        end
        Alice -> Log : Log attack end
    end
    
else Another type of failure

   Bob -> Alice: Please repeat
   
end
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第151张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第152张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第153张

注释

可以通过在消息后面添加 note left 或者 note right 关键词来给消息添加注释

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第154张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第155张
@startuml
Alice->Bob : hello
note left: this is a first note

Bob->Alice : ok
note right: this is another note

Bob->Bob : I am thinking
note left
    a note
    can also be defined
    on several lines
end note
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第156张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第157张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第158张

更改备注框的情况

可以使用 hnote 和 rnote 这两个关键字来修改备注框的形状

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第159张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第160张
@startuml
caller -> server : conReq
hnote over caller : idle
caller <- server : conConf
rnote over server
 "r" as rectangle
 "h" as hexagon
endrnote
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第161张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第162张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第163张

分隔符

可以通过使用 == 关键词来将你的图表分割多个步骤

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第164张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第165张
@startuml

== Initialization ==

Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

== Repetition ==

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response

@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第166张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第167张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第168张

延迟

可以使用...来表示延迟,并且还可以给延迟添加注释

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第169张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第170张
@startuml

Alice -> Bob: Authentication Request
...
Bob --> Alice: Authentication Response
...5 minutes latter...
Bob --> Alice: Bye !

@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第171张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第172张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第173张

生命线的激活与撤销

关键字activatedeactivate用来表示参与者的生命活动,一旦参与者被激活,它的生命线就会显示出来,activatedeactivate适用于以上情形,destroy表示一个参与者的生命线的终结。

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第174张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第175张
@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
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第176张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第177张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第178张

进入和发出消息

如果只想关注部分图示,可以使用进入和发出箭头,使用方括号[]表示图示的左、右两侧。

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第179张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第180张
@startuml
[-> A: DoWork

activate A

A -> A: Internal call
activate A

A ->] : << createRequest >>

A<--] : RequestCreated
deactivate A
[<- A: Done
deactivate A
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第181张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第182张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第183张

包裹参与者

可以使用boxend box画一个盒子将参与者包裹起来,还可以在box关键字之后添加标题或者背景颜色。

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第184张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第185张
@startuml

box "Internal Service" #LightBlue
    participant Bob
    participant Alice
end box
participant Other

Bob -> Alice : hello
Alice -> Other : hello

@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第186张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第187张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第188张

填充区设置

可以设定填充区的参数配置

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第189张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第190张
@startuml
skinparam ParticipantPadding 20
skinparam BoxPadding 10

box "Foo1"
participant Alice1
participant Alice2
end box
box "Foo2"
participant Bob1
participant Bob2
end box
Alice1 -> Bob1 : hello
Alice1 -> Out : out
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第191张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第192张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第193张

二、《工厂采购》系统

  • 采购员选择采购货品
  • 到订货界面,接收客户信息,接收货品信息,显示货品信息
  • 到订货管理器,创建客户,取货品信息,创建订单
  • 创建客户到客户区,取货品信息到货品区,创建订单到订单区
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第194张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第195张
@startuml
skinparam sequenceArrowThickness 2
  skinparam roundcorner 20
  skinparam maxmessagesize 60

  actor 采购员
  participant "订货界面" as A
  participant "订货管理器" as B
  participant "客户" as C
  participant "货品" as D
  participant "订单" as E
 
 采购员 -> A: 客户信息()
 activate A
 采购员 -> A: 选择订货货品()
 activate A
 
 A -> B:接收客户信息()
 activate B
 A -> B:接收货品信息()
 activate B
 B --> A: 显示货品信息()
 deactivate B
 
 B -> C: 创建客户()<<create>>
 activate C
 B -> D: 取货品信息()
 activate D
 D --> B: 货品信息()
 activate D
 B -> E: 创建订单()<<create>>
 activate E
@enduml
UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第196张 UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第197张

UML作业第六次,UML作业第六次:分析系统,绘制顺序图 随笔 第198张

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄