时序图和plantuml什么?
通过支付宝充话费说明,大概过程如下
- 向支付宝发起冲100元话费
- 支付宝向电信运营商转发向电话xxxx冲100元
- 电信运营商向支付宝返回接收到请求
- 支付宝向用户默认中国银行发起扣款100元
- 中国银行向支付宝返回接收到请求
- 中国银行向用户发送扣款短信
- 支付宝向用户返回充值成功
- 电信运营商向用户发送充值成功短信提示
对应序列图
(这张图是我使用plantuml
语言生成的,效果是不是很好)
这里演示一下plantuml用法,请注意这是一张GIF动图
plantuml插件安装
我是在eclipse中安装的插件,其他编辑器自行搜索,这里给出一个安装地址:
https://waylau.com/use-plantuml-in-eclipse/
plantuml教程
这里讲解一下快速入门需要用到的东西
简单示例
你可以用->来绘制参与者之间传递的消息, 而不必显式地声明参与者。
你也可以使用 --> 绘制一个虚线箭头。
另外,你还能用 <- 和 <–,这不影响绘图,但可以提高可读性。 注意:仅适用于时序图,对于其它示意图,规则是不同的。
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
声明参与者
关键字 participant
用于改变参与者的先后顺序。
你也可以使用其它关键字来声明参与者:
- actor
- boundary
- control
- entity
- database
@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
对消息序列编号
关键字 autonumber
用于自动对消息编号。
@startuml
autonumber
Bob -> Alice : Authentication Request
Bob <- Alice : Authentication Response
@enduml
组合消息
我们可以通过以下关键词将组合消息:
- alt/else
- opt
- loop
- par
- break
- critical
- group, 后面紧跟着消息内容
可以在标头(header
)添加需要显示的文字(group
除外)。
关键词 end
用来结束分组。
注意,分组可以嵌套使用。
@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
给消息添加注释
我们可以通过在消息后面添加 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
and so on
其他细节请参考中文官网教程:http://plantuml.com/zh/sequence-diagram