顺序图
一、概览
1.PlantUML顺序图语法学习小结,图例及用法
2.《工厂采购》系统对象交互顺序
3.绘制《工厂采购》系统的对象交互的脚本程序
4.绘制的顺序图
二、语法学习小结
1.简单顺序图的绘制
我们可以用->
来绘制参与者之间传递的消息, 而不必显式地声明参与者,也可以使用 -->
绘制一个虚线箭头。
示例:
@startuml Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response Alice -> Bob: Another authentication Request Alice <-- Bob: another authentication Response @enduml
2.声名参与者
使用关键字 participant
用于改变参与者的先后顺序
示例:
@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
3.重命名参与者
使用as关键字对参与者进行重命名
示例:
@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
4.参与者中使用非字母符号
可以使用引号定义参与者,还可以用关键字 as
给参与者定义别名
示例:
@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
5.修改箭头的样式
修改箭头样式的方式有以下几种:
- 表示一条丢失的消息:末尾加
x
- 让箭头只有上半部分或者下半部分:将
<
和>
替换成\
或者/
- 细箭头:将箭头标记写两次 (如
>>
或//
) - 虚线箭头:用
--
替代-
- 箭头末尾加圈:
->o
- 双向箭头:
<->
示例:
@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 [foo]
6.消息序列编号
使用关键字 autonumber
用于自动对消息编号
示例:
@startuml autonumber Bob -> Alice : Authentication Request Bob <- Alice : Authentication Response @enduml
7.分割示意图
使用关键字 newpage
用于把一张图分割成多张
示例:
@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
8.添加注释
可以通过在消息后面添加 note left
或者 note right
关键词来给消息添加注释,也可以通过使用 end note
来添加多行注释
示例:
@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
9.改变备注框形状
使用 hnote
和 rnote
这两个关键字来修改备注框的形状
示例:
@startuml caller -> server : conReq hnote over caller : idle caller <- server : conConf rnote over server "r" as rectangle "h" as hexagon endrnote @enduml
10.分隔符
可以通过使用 ==
关键词来将你的图表分割多个步骤
示例:
@startuml == Initialization == Alice -> Bob: Authentication Request Bob --> Alice: Authentication Response == Repetition == Alice -> Bob: Another authentication Request Alice <-- Bob: another authentication Response @enduml
11.引用
可以在图中通过使用ref over
关键词来实现引用
示例:
@startuml participant Alice actor Bob ref over Alice, Bob : init Alice -> Bob : hello ref over Bob This can be on several lines end ref @enduml
12.延迟的表示
可以使用...
来表示延迟,并且还可以给延迟添加注释
示例:
@startuml Alice -> Bob: Authentication Request ... Bob --> Alice: Authentication Response ...5 minutes latter... Bob --> Alice: Bye ! @enduml
13.增加空间
可以使用|||
来增加空间,还可以使用数字指定增加的像素的数量
示例:
@startuml Alice -> Bob: message 1 Bob --> Alice: ok ||| Alice -> Bob: message 2 Bob --> Alice: ok ||45|| Alice -> Bob: message 3 Bob --> Alice: ok @enduml
14.如何创建参与者
把关键字create
放在第一次接收到消息之前,以强调本次消息实际上是在创建新的对象
示例:
@startuml Bob -> Alice : hello create Other Alice -> Other : new create control String Alice -> String note right : You can also put notes! Alice --> Bob : ok @enduml
15.构造类型和圈点
可以使用<<
和>>
给参与者添加构造类型,构造类型中,你可以使用(X,color)
格式的语法添加一个圆圈圈起来的字符
示例:
@startuml participant "Famous Bob" as Bob << Generated >> participant Alice << (C,#ADD1B2) Testable >> Bob->Alice: First message @enduml
16.包裹参与者
可以使用box
和end box
画一个盒子将参与者包裹起来,还可以在box
关键字之后添加标题或者背景颜色
示例:
@startuml box "Internal Service" #LightBlue participant Bob participant Alice end box participant Other Bob -> Alice : hello Alice -> Other : hello @enduml
三、《工厂采购》系统对象交互顺序
1.采购员根据客户信息,选择订货的商品
2.订货界面,接受到客户的信息,接收货物的信息,显示货品信息
3.订货管理器,创建客户到达客户区
4.订货管理器,取货品信息到达货品区
5.订货管理器,创建订单到达订单去
6.结束
四、《工厂采购》系统对象交互脚本程序
@startuml
skinparam backgroundColor #33FFCC
actor 王同乐
participant "订货界面" as 1
participant "订货管理器" as 2
participant "客户" as 3
participant "货品" as 4
participant "订单" as 5
王同乐 --> 1: 客户信息()
activate 1
王同乐 --> 1: 选择采购货品()
activate 1
1 --> 2:接收客户信息()
activate 2
1 --> 2:接收货品信息()
activate 2
2 --> 1: 显示货品信息()
deactivate 2
2 --> 3: 创建客户()<<create>>
activate 3
2 --> 4: 客户取货品信息()
activate 4
4 --> 2: 货品信息()
activate 4
2 --> 5: 创建订单()<<create>>
activate 5
@enduml
五、顺序图