时序图 plantuml教程

时序图和plantuml什么?

通过支付宝充话费说明,大概过程如下

  1. 向支付宝发起冲100元话费
  2. 支付宝向电信运营商转发向电话xxxx冲100元
  3. 电信运营商向支付宝返回接收到请求
  4. 支付宝向用户默认中国银行发起扣款100元
  5. 中国银行向支付宝返回接收到请求
  6. 中国银行向用户发送扣款短信
  7. 支付宝向用户返回充值成功
  8. 电信运营商向用户发送充值成功短信提示

对应序列图(这张图是我使用plantuml语言生成的,效果是不是很好)
时序图 plantuml教程_第1张图片
这里演示一下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

时序图 plantuml教程_第2张图片

声明参与者

关键字 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

时序图 plantuml教程_第3张图片

对消息序列编号

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

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

时序图 plantuml教程_第4张图片

组合消息

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

  • 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

时序图 plantuml教程_第5张图片

给消息添加注释

我们可以通过在消息后面添加 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

时序图 plantuml教程_第6张图片

and so on

其他细节请参考中文官网教程:http://plantuml.com/zh/sequence-diagram

你可能感兴趣的:(uml教程)