plantuml的安装
1.idea安装plantuml的插件
2.安装graphviz,安装路径默认在c盘。
画er图
new->plantuml file ->class
demo:
@startuml
'https://plantuml.com/use-case-diagram
package 订单{
entity (totalorder) {
订单总表
--
# string id 主键
string serialNumber 订单编号
datetime createTime 创建时间
}
entity (serviceorder){
订单模块表
--
# string id 主键
* string totalorderId 总表主键
}
entity (serviceorderdetail){
模块明细表
--
# string id 主键
* string serviceorderId 模块表明细
}
totalorder "1" -- "n" serviceorder
serviceorder "1" -- "n" serviceorderdetail
}
@enduml
@startuml
'https://plantuml.com/use-case-diagram
package 商品模块 {
entity (spec) {
商品规格表(字典)
--
# id 主键
spec_code 规格编码
spec_name 规格名称 如:版本,时间
spec_type 规格类型 如:商品类,时间类
sort 排序
is_delete 逻辑删除 0正常 1已删除
}
entity (spu_spec) {
商品与规格关联表(暂时先根据商品类型写死)
--
# id 主键
* spu_id 商品ID
* spec_id 规格ID
spec_code 规格编码 继承自spec表,
spec_name 规格名称 继承自spec表,可编辑
sort 排序
is_delete 逻辑删除 0正常 1已删除
}
entity (spu_spec_value) {
商品规格值表
--
# id 主键
* spu_spec_id 商品与规格关联表ID
spec_id 规格ID冗余,继承自spu_spec
spu_id 商品ID冗余
name 选项名
spec_name 规格名冗余
spec_value 规格值
sort 排序
delete_token 逻辑删除令牌,兼容唯一索引, 0正常 等于主键值表示已删除
is_delete 逻辑删除 0正常 1已删除
}
entity (spu_spec_value_atom_spu) {
商品规格值与原子商品(单品/组合)关联表
--
# id 主键
* spu_spec_value_id 商品规格值ID
* atom_spu_id 单品或组合ID
spu_id 商品ID冗余
atom_spu_type 商品类型 1单品,2组合
atom_spu_num 商品数量
is_delete 逻辑删除 0正常 1已删除
}
entity (spu_spec_value_sku) {
商品规格值与sku关联表
--
# id 主键
* spu_spec_value_id 商品规格值ID
* sku_id 商品sku ID
spu_id 商品ID冗余
is_delete 逻辑删除 0正常 1已删除
}
entity (single) {
单品表
--
# id 主键
single_code 单品编码
title 商品名称
auth_target 授权目标 0 不限,1个人,2门店,3企业
type 类型 1权限 2渲染券 3其他
cost_price 成本价
quotable 是否生成额度 0 否 1是
tax_code 商品税率编码
tax_rate 商品税率
role_id 角色ID
coupon_code 渲染券编号
coupon_name 渲染券名称
total_issued 渲染券发放总数
delete_token 逻辑删除令牌,兼容唯一索引, 0正常 等于主键值表示已删除
is_delete 逻辑删除 0正常 1已删除
}
entity (combination) {
组合商品表
--
# id 主键
combination_code 组合编码
title 组合名称
auth_target 授权目标 1个人,2门店,3企业
single_count 单品数
delete_token 逻辑删除令牌,兼容唯一索引, 0正常 等于主键值表示已删除
is_delete 逻辑删除 0正常 1已删除
}
entity (combination_single) {
组合商品和单品关联表
--
# id 主键
* combination_id 组合商品ID
* single_id 单品ID
is_delete 逻辑删除 0正常 1已删除
}
entity (spu) {
商品表
--
# id 主键
spu_code 商品编码
spu_type 商品类型 1渲染券 2营销软件 33D软件套餐(定制+渲染)
title 标题,商品名称
saleable 是否上架,0下架,1上架
sales_target 可售卖 1个人,2门店,3企业
delete_token 逻辑删除令牌,兼容唯一索引, 0正常 等于主键值表示已删除
is_delete 逻辑删除 0正常 1已删除
}
entity (spu_detail) {
商品详细信息表
--
# spu_id 商品ID
short_intro 商品简介30字内
detail_intro 详细介绍
description 商品描述
content 商品内容
qa 商品QA内容
labels 标签,多个使用英文分号隔离
corner 角标
base_image 底图
images 图片url,多个使用英文分号隔离
}
entity (sku) {
sku表
--
# id 主键
* spu_id 商品ID冗余
sku_code sku编码
title 标题,商品名称,默认继承自spu
saleable 是否上架冗余,0下架,1上架 继承自spu
price 售价
is_delete 逻辑删除 0正常 1已删除
}
' entity (sku_atom_spu) {
' sku与原子商品(单品/组合)关联表
' --
' # id 主键
' sku_id 具体商品ID
' atom_spu_id 单品或组合ID
' spu_id 商品ID冗余
' atom_spu_type 商品类型 1单品,2组合
' atom_spu_num 商品数量
' is_delete 逻辑删除 0正常 1已删除
' }
spu_spec "n" -- "1" spu
spec "1" -- "n" spu_spec
combination_single "n" -- "1" single
combination_single "n" -- "1" combination
spu_spec_value "1" -- "n" spu_spec_value_atom_spu
spu_spec "1" -- "n" spu_spec_value
single "1" -- "n" spu_spec_value_atom_spu
combination "1" -- "n" spu_spec_value_atom_spu
sku "1" -- "n" spu_spec_value_sku
' sku "1" -- "n" sku_atom_spu
' single "1" -- "n" sku_atom_spu
' combination "1" -- "n" sku_atom_spu
spu_spec_value "1" -- "n" spu_spec_value_sku
spu "1" -- "n" sku
spu "1" -- "1" spu_detail
}
@enduml
画时序图
时序图中的元素
时序图中包括的建模元素主要有:角色、对象、生命线、控制焦点、消息和Combined Fragments。接下来,分别介绍每一个元素,以及展现它们在Astah中的表现形式
角色
图中的小人,就表示一个角色,这里的角色,可以是人,或者是其它的子系统或者系统
对象
每条生命线上都关联着一个对象,上图中有三条生命线,可以看到有三个对象,但是三个对象的命名方式都是不一样的。在使用Astah画时序图时,选择一个对象,在属性中可以更改这种命名,分别介绍一下这三种命名方式:
显示实例名和类名,方式:实例名:类名;
只显示类名,方式::类名;
只显示实例名,方式:实例名。
其实,三种命名方式,没有特别的要求,哪一种能让阅读该时序图的人一眼就能看明白,就使用哪种,而我一般使用的是第一种和第二种,第一种信息量多,在单例时,可以用来表示;第二种,画时序图时不用刻意的去强调实例名,只需要作出类名就好了;但是,第三种,我一直不知道存在的意义,给你一个实例名,其实从图中真的看不出其的类名。所以,我个人还是建议大家使用第一种和第二种。
生命线
没有什么多说的,从上面的两张图中,我们都可以看到一条向下延伸的虚线,而这条虚线就是表示的生命线,表示一个对象存在的时间
控制焦点
控制焦点是顺序图中表示时间段的符号,在这个时间段内对象将执行相应的操作。用小矩形表示。如下图表示:
消息
消息一般分为同步消息、异步消息和返回消息;如下图表示
同步消息就是指消息的发送者把控制传递给消息的接收者,然后停止活动,等待消息的接收者放弃或者返回控制。用来表示同步的意义。
异步消息就是指消息发送者通过消息把信号传递给消息的接收者,然后自己继续活动,不等待接收者返回消息或者控制。异步消息的接收者和发送者是并发工作的。
返回消息就是指消息从过程调用返回
自关联消息
表示方法的自身调用以及一个对象内的一个方法调用另外一个方法,如下图
demo1
@startuml
title 文件资源管理服务
header 文件资源管理服务功能模块时序图
footer 文件资源管理服务功能模块时序图 2020
actor 用户
entity 资源控制台
participant 文件资源管理服务 order 3
participant 权限系统 order 4 #LightCyan
participant 文件系统 order 5 #LightBlue
autonumber
== 进程 ==
用户 -[#red]>o 资源控制台 : 访问
资源控制台 -[#red]>o 文件资源管理服务 : 资源请求(CURD)
activate 文件资源管理服务 #FFBBBB
文件资源管理服务 -[#GreenYellow]>o 资源控制台 : 资源响应
deactivate
资源控制台 -[#GreenYellow]>o 用户 : 渲染
||45||
autonumber
== 用户鉴权 ==
用户 -[#red]>o 资源控制台 : 访问
资源控制台 -> 文件资源管理服务 : check pernmission
activate 文件资源管理服务 #FFBBBB
文件资源管理服务 -> 权限系统 : check permission
activate 权限系统 #FFBBBB
权限系统 -> 文件资源管理服务 : check permission result
deactivate
文件资源管理服务 -> 资源控制台 : check permission result
deactivate
资源控制台 -[#red]>o 用户 : 渲染
||45||
autonumber
== 文件资源上传 ==
用户 -[#red]>o 资源控制台 : request
资源控制台 -> 文件资源管理服务 : auth
activate 文件资源管理服务 #FFBBBB
文件资源管理服务 -> 文件系统 : auth
activate 文件系统 #FFBBBB
文件系统 -> 文件资源管理服务 : auht result
文件资源管理服务 -> 资源控制台 : auht result
资源控制台 -> 文件系统 : upload file source
文件系统 -> 资源控制台 : upload file source result
资源控制台 -> 文件系统 : get file info
文件系统 -> 资源控制台 : file info result
资源控制台 -> 文件资源管理服务 : submit file info
文件资源管理服务 -> 资源控制台 : submit file info result
deactivate
deactivate
资源控制台 -[#red]>o 用户 : display
@enduml
demo2
@startuml
participant c as "小程序前端"
participant s as "小程序后端服务"
participant u as "用户中心"
c -> s: 1.用户授权登录
activate s
s -> s: 2.根据手机号判断用户是否存在
s -> u: 3.调用户中心获取账号信息
activate u
u -> s: 4.返回账号列表
deactivate u
s -> c: 5.返回账号列表
deactivate s
c -> s: 6.选择一个账号
activate s
s -> s: 7.绑定用户账号
s -> s: 8.生成token登录令牌
's --> c: callback
s -> c: 9.返回
deactivate s
c -> s: 10.填写用户信息
activate s
s -> s: 11.保存用户信息
s -> c: 12.返回
deactivate s
@enduml