使用Markdown绘制UML图

UML图是一种交互图,它显示了进程如何相互操作以及以什么顺序运行,更多详情

UML示例

爱丽丝 约翰 爱丽丝给约翰打电话. 约翰,最近怎样? 约翰,你能听到我的声音吗? 嗨,爱丽丝,我能听到你的声音! 我感觉很不错! 明天要去看比赛吗? 可以,明天见. 爱丽丝 约翰

消息类型

消息可以是两个实线或虚线显示。

格式:[参与者][消息类型][参与则]:Message text

目前支持六种类型的箭头:

类型描述
->不带箭头的实线
–>不带箭头的虚线
->>带箭头的实线
–>>带箭头的虚线
-x末端带有十字的实线
–x末端带有十字的虚线
-)末端带有开放箭头的实线(异步)
–)末端带有开放箭头的虚线(异步)

代码

sequenceDiagram
	participant  A
	participant  B
	actor C
	actor  D
	participant  F
	A->B:不带箭头的实线
	B-->A:不带箭头的虚线
	A->>C:带箭头的实线
	C-->>A:带箭头的虚线
	A-xD:末端带有十字的实线
	D--xA:末端带有十字的虚线
	A-)F:末端带有开放箭头的实线
	F--)A:末端带有开放箭头的虚线

示例

A B C D F 不带箭头的实线 不带箭头的虚线 带箭头的实线 带箭头的虚线 末端带有十字的实线 末端带有十字的虚线 末端带有开放箭头的实线 末端带有开放箭头的虚线 A B C D F

语法

关键字描述
sequenceDiagram用于声明生成序列图
%%用于注解代码片段
participant用于定义参与者(长方形)
actor用于定义参与者(人物模型)
as用于起别名
activate用于激活片段
Note用于注释事件
loop声明循环片段
alt声明事件的代替方案
par声明事件为并发事件
critical声明为重要事件
break声明跳出事件
rect声明区域颜色,进行高亮
link为参与者添加超级链接

sequenceDiagram

sequenceDiagram关键字用于声明当前生成图表类型为UML图

%%

使用%%来在代码片段是写注解

代码

sequenceDiagram
    participant 客户端
    participant 服务端
    %% 这是一个注解
    服务端->>客户端: 听到请回复
    客户端->>服务端: 收到!

示例

客户端 服务端 听到请回复 收到! 客户端 服务端

participant

participant关键字用来定义参与者,如果在不使用participant关键字来声明参与者,参与者将会以代码中逻辑顺序呈现,如果使用participant关键字来声明参与者,会按照participant声明的顺序来声明。
代码

sequenceDiagram
    participant 客户端
    participant 服务端
    服务端->>客户端: 听到请回复
    客户端->>服务端: 收到!

示例

客户端 服务端 听到请回复 收到! 客户端 服务端

actor

如果想用人形状而不是使用长方形形状来显示参与者,使用Actors关键字来声明参与者
代码

sequenceDiagram
    actor 客户端
    actor 服务端
    服务端->>客户端: 听到请回复
    客户端->>服务端: 收到!

示例

客户端 服务端 听到请回复 收到! 客户端 服务端

as

使用as关键字可以对参与者取一个方便使用的标识符(别名)
代码

sequenceDiagram
    participant a as 客户端
    participant b as 服务端
    a->>b: 听到请回复
    b->>a: 收到!

示例

客户端 服务端 听到请回复 收到! 客户端 服务端

activate

可使用activate激活和使用deactivate停用参与者。
代码

sequenceDiagram
    Alice->>John: Hello John, how are you?
    activate John
    John-->>Alice: Great!
     Alice-->>John: Fine!
    deactivate John
    Alice->>John:bye!

示例

Alice John Hello John, how are you? Great! Fine! bye! Alice John

于此同时,也可以通过使用在消息箭头后附加后缀+表示activate,使用-表示deactivate
代码

sequenceDiagram
    Alice->>+John: Hello John, how are you?
    Alice->>+John: John, can you hear me?
    John-->>-Alice: Hi Alice, I can hear you!
    John-->>-Alice: I feel great!

示例

Alice John Hello John, how are you? John, can you hear me? Hi Alice, I can hear you! I feel great! Alice John

Note

可以在序列图中使用Note关键字添加注释。
注释格式为`Note [ right of | left of | over ] [参与者]:Text in note content
代码

sequenceDiagram
	participant a as note
	Note left of a:注解1
	Note right of a:注解2
	Note over a:注解3
	客户端->服务端:收到请回复
	Note over 客户端,服务端:这是一个交互式注解

示例

note 客户端 服务端 注解1 注解2 注解3 收到请回复 这是一个交互式注解 note 客户端 服务端

loop

在UML中可以使用loop关键字来表示循环

循环的格式为:

loop [循环内容]
...消息...
end

代码

sequenceDiagram
    客户端->服务端:收到请回复!
    loop 每分钟任务
        服务端-->客户端:检查是否连接成功!
    end

示例

客户端 服务端 收到请回复! 检查是否连接成功! loop [每分钟任务] 客户端 服务端

alt

在序列图中可以使用alt声明代替项,代替项用来表示多种情况
代码

sequenceDiagram
	participant client as 客户端
	participant server as 服务端
	client->>server :尝试连接
	alt 连接成功
		server ->>client:建立连接
	else 连接失败
		server -->>client:连接失败
	end
	opt 拨号连接
		server ->>client:每分钟重连一次
	end

示例

客户端 服务端 尝试连接 建立连接 连接失败 alt [连接成功] [连接失败] 每分钟重连一次 opt [拨号连接] 客户端 服务端

par

使用par关键字来表示这是一个并发事件

par的格式为:

par [并行消息注解1]
---消息内容---
and [并行消息注解2]
---消息内容---
end

代码

sequenceDiagram
   actor user as 用户
   participant client as 客户端
   participant sever as 服务端
	par 用户到客户端
		user ->>client :帮我呼叫服务端
	and 用户到客户端
		user ->>sever :是否收到客户端呼叫
	end
	sever -->>user:收到客户端消息	

示例

用户 客户端 服务端 帮我呼叫服务端 是否收到客户端呼叫 par [用户到客户端] [用户到客户端] 收到客户端消息 用户 客户端 服务端

critical

使用critical关键字声明此区域为重要区域,部分引擎可能不支持使用此关键字。

格式:

critical [Action that must be performed]
... statements ...
option [Circumstance A]
... statements ...
option [Circumstance B]
... statements ...
end

代码

sequenceDiagram
	critical 建立于数据库的连接
		server->>DB:连接
	option 连接超时
		server-->>server:超时异常
	option 连接被拒绝
		server-->>server:权限异常
	end

示例

sequenceDiagram
	critical 建立于数据库的连接
		server->>DB:连接
	option 连接超时
		server-->>server:超时异常
	option 连接被拒绝
		server-->>server:权限异常
	end

break

在序列图中表示条件终止(通常用于模块异常中),部分引擎中无法使用此关键字。

格式:

break [something happened]
... statements ...
end

代码

sequenceDiagram
	participant Consumer as 消费者
	participant  API as 程序接口
	participant BookingService as 订购服务
	participant BillingService as 计费服务
    Consumer-->>API: 预订一些东西
    API-->>BookingService: 开始预订流程
    break 预订进程失败
        API-->>Consumer: 显示失败
    end
    API-->>BillingService: S开始计费流程

示例

sequenceDiagram
	participant Consumer as 消费者
	participant  API as 程序接口
	participant BookingService as 订购服务
	participant BillingService as 计费服务
    Consumer-->>API: 预订一些东西
    API-->>BookingService: 开始预订流程
    break 预订进程失败
        API-->>Consumer: 显示失败
    end
    API-->>BillingService: S开始计费流程

rect

使用rect关键字可以高亮当前事件

格式:

rect rgb(0, 255, 0)
... content ...
end
rect rgba(0, 0, 255, .1)
... content ...
end

代码

sequenceDiagram
    participant Alice as 爱丽丝
    participant John as 约翰

    rect rgb(191, 223, 255)
    note right of Alice:爱丽丝给约翰打电话.
    Alice->>+John: 约翰,最近怎样?
    rect rgb(200, 150, 255)
    Alice->>+John: 约翰,你能听到我的声音吗?
    John-->>-Alice:嗨,爱丽丝,我能听到你的声音!
    end
    John-->>-Alice: 我感觉很不错!
    end
    Alice ->>+ John: 明天要去看比赛吗?
    John -->>- Alice: 可以,明天见.

示例

爱丽丝 约翰 爱丽丝给约翰打电话. 约翰,最近怎样? 约翰,你能听到我的声音吗? 嗨,爱丽丝,我能听到你的声音! 我感觉很不错! 明天要去看比赛吗? 可以,明天见. 爱丽丝 约翰

link

使用link可以增加超级链接,增加的超级连接会变成一个下拉菜单

格式:link <actor>: <link-label> @ <link-url>

代码

sequenceDiagram
    participant a as 搜索引擎
    participant b as mermaid学习
	link a :百度 @ https://www.baidu.com/
	link a :必应 @ https://cn.bing.com/?mkt=zh-cn
	link b:mermaid @ https://mermaid.js.org
	a->>b:可以通过搜索查找Mermaid的相关学习

示例

搜索引擎 mermaid学习 可以通过搜索查找Mermaid的相关学习 搜索引擎 mermaid学习 百度 必应 mermaid
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值