本文共 3761 字,大约阅读时间需要 12 分钟。
当下的软件开发人员,不可避免的需要输出一些软件设计文档,作为一个软件工程专业毕业的工程师,最常用的设计工具就是UML,使用UML工具绘制一些软件相关的图,是必备技能,也是输出的技术文档中的重要组成部分。不关注逆向工程,这里只关注快速的绘制对应的图,plantuml是一款比较不错的工具。本节先初步熟悉用例图和时序图。
功能介绍:
支持快速绘制
还支持非UML图:
以及不常用的的图:
画完图之后,可以生成PNG,SVG,Latex格式的图片;
x项目的用户后端服务,包括用户登录,用户积分模块;
用户角度描述系统功能
@startumlleft to right directionactor : 其它LX提供给TA的后端系统: as otherLxTaBackendServicenote top of otherLxTaBackendService比如tianansp负责活动和文章的服务比如tiananseason负责西游活动的服务通过dubbo的rpc方法调用end noteusecase 修改用户积分 as changeUserPointusecase 查询用户总积分 as getUserTotalPointusecase 登录校验 as getRestContextByAccessTokenotherLxTaBackendService --> getRestContextByAccessToken:获取用户的登录态[RPC]otherLxTaBackendService --> changeUserPoint:活动增加或者扣减积分[RPC]otherLxTaBackendService --> getUserTotalPoint: 查询用户当前总积分[RPC]@enduml
生成的图:
@startuml'left to right defaultactor : ta用户: as taUserusecase 用户登录 as userLoginusecase 查询积分明细 as findUserPointDetailusecase 改变积分 as changeUserPointDetailnote bottom of userLoginTA用户登录LX交互的后端系统LX的saas系统构造登录态end notetaUser -right-> userLogin: 登录进LX交付的功能[REST]taUser --> changeUserPointDetail : 修改积分\n阅读文章\n分享文章\n参加活动[REST]taUser --> findUserPointDetail : 查询积分\n消费获取\n明细[REST]@enduml
展示对象跟对象之间的协作关系
对象 | 语法 | 说明 |
---|---|---|
箭头和线 | -> <-实线箭头 <-- -->虚线箭头 | 标识参与者之间的消息传递 |
参与者 | actor 角色 boundary 带边界 control控制 entity 实体 database 数据库 collections 集合 participant 参与者 | 标识参与者 |
重命名 | participant 参与者详细名称 as 简称 | 重命名参与者 |
定义顺序 | participant 参与者详细名称 order 排序号 | 序号越小越靠前 |
参与者含有特殊字符 | “参与者” | 双引号包围 |
箭头样式 | 丢失的消息 ->x 实心箭头 -> 虚箭头 ->> 半实心箭头 - 半虚箭头 -\ 箭头末尾加0 ->o | 各种箭头 |
箭头颜色 | 参与者1-[颜色定义]->参与者 | 改变箭头颜色 |
消息自动编号 | autonumber | 放在开始的位置 |
设置 | title,header,footer | header footer title在开始的地方定义 |
组合消息条件分支 | alt/else end | 条件分支 |
组合消息循环分支分支 | loop end | 循环 |
组合消息 group | group end | 分组 |
单行注释 | note 位置 :注释内容 | 给消息增加备注 |
多行注释 | note 位置(right,left,over) 换行 注释内容 换行 end note | 给消息增加备注 |
改变注释的形状 | hnote 六边形 rnote 四边形 | 注释的形状 |
分隔符 | ==分割备注内容== | 横向划分模块 |
引用 | ref over 参与者1 参与者2 : 引用内容 | 引用 |
延迟 | ···标识延迟 ··· | 消息固定延迟 |
空间 | 3根竖线 | 间隔 |
激活生命线 | activate 参与者 | 激活生命线 |
取消激活生命线 | deactivate 参与者 | 激活生命线 |
返回 | return 参与者 | 返回 |
创建参与者 | create 参与者 | 标识创建对象 |
快捷键 | 激活参与者 --取消激活参与者 ** 创建参与者 !!销毁参与者 | 见语法说明 |
创建盒子 | box "box的命名" #背景色 换行 参与者1 参与者2 end box | 纵向划分模块 |
@startumlautonumber "[00]"title 登录接口时序图actor "TA用户" as User #whiteparticipant "TAAPP" as TAAPP #goldbox "LX交付" #grayparticipant "LX交付SDK" as LXSDK #orangeparticipant "LX交付后端\ntiananuser" as LXServer #redparticipant "LXsaas后端" as LXSaasServer #grayend boxparticipant "TA后端" as TAServer #greenactivate UserUser -> TAAPP : 登录TAAPP\n打开健康TAP页面==sdk对接==TAAPP -> LXSDK : userId\n或者加密信息==后端对接==LXSDK -> LXServer : 登录转换为LX登录态接口==TA后端对接==LXServer <-> TAServer : 用户信息校验\n==对接saas==LXServer <-> LXSaasServer : 注册并登录\n到LXSaas==构造LX专属登录态==LXServer -> LXServer : 登记用户信息\n保存登录令牌到redisLXServer -> LXSDK : 构造LX专属登录态(token)==后端对接完成==LXSDK --> TAAPP : 正常使用LX交互功能TAAPP --> User : 看到LX交互功能@enduml
@startumlautonumber "[#]"actor TAapp用户 as taUsercontrol 网关 as nginxbox 接口程序 #greenboundary Web服务器 as tomcatend boxcollections Redis as redisdatabase Mysql as mysqltaUser -> nginx : 看文章,增加积分nginx ->> tomcat : 负载均衡策略遭到一台tomcat==接口处理流程开始==tomcat --> tomcat : 参数判断alt 参数判断不合法 tomcat -[#red]> taUser : 参数传错误else 参数合法tomcat -> mysql : 插入积分改变的明细记录return 表记录idtomcat ->redis : 获取缓存中用户对应的记录idalt 缓存中userId对应的积分id存在 tomcat -> mysql : 更新用户的总积分else 缓存中userId对应的积分id不存在 tomcat -> mysql : 查询得到用户对应的id alt 用户的总积分记录在数据库中存在 tomcat -> mysql :更新用户的总积分 else userId对应的积分记录id不存在 tomcat -> mysql :插入用户的总积分记录 end return 用户积分记录对应的记录id tomcat -> redis : 用户积分记录对应的记录id保存到redis return 无返回值endtomcat ->redis: 清除掉总积分缓存,分页缓存,总条数缓存return 用户增加积分明细记录idendtomcat -[#green]> taUser : 改变积分成功@enduml
原创不易,转载请注明出处,欢迎多沟通交流