背景

状态图:对象的所有状态,以及基于事件发生的状态改变的过程;

活动图:用例的工作流程;

部署图:系统的软硬件物理体系结构;

状态图

基本语法

元素 语法 说明
开始和结束状态 [*] 标识开始和结束状态
箭头 –> 添加箭头
隐藏描述区域 hide empty description 隐藏描述区域
合成状态 state 合成状态名字{ 增城的状态定义语法} 可以嵌套状态图
状态声明 state状态名字 : 备注 声明状态
fork,join state state名字 分开,合并状态
并发状态 – or 或者双竖线 状态是并发改变的
箭头方向 top down left right 可以控制箭头的方向
单行注释 note 方位 of 状态名 : 单行注释 单行注释
多行注释 note 方位 of 状态名 换行 单行注释 换行 end note 多行注释

登录状态图

@startuml
hide empty description
left to right direction[*]-->NotLogin:首次打开appstate  NotLogin: 没有登录
state  LoginSuccess: 登录成功
state  LoginFail: 登录失败NotLogin -->LoginSuccess: 登录
NotLogin -->LoginFail:登录state LoginFail {state 用户不存在: ta校验state saas注册失败:注册saasstate 登记用户信息失败: 登记到tiananUserstate 参数校验失败 :校验参数
}state join_state  <<join>>
LoginSuccess-->join_state:组装响应参数
LoginFail-->join_state:组装响应参数join_state -->[*]:返回JSON数据到客户端@enduml

积分状态图

@startuml
scale 350 width
left to right direction
hide empty descriptionstate noPointRecord : 没有积分记录
state pointZero : 积分为0
state pointOk : 有积分[*] -->  noPointRecord: 增加积分
noPointRecord --> pointZero: 初始化
pointZero --> pointOk: 增加/消耗积分pointOk --> [*]@enduml

活动图

基本语法

元素 语法 说明
开始 结束 start stop 开始结束活动
活动 :活动名称; 定义活动
条件语句 if (条件 ?) then (yes) 换行 下一个活动 else(no) endif 条件分支
循环语句 repeat 换行 活动 换行 repeatwhile(条件 ?) 先执行再判断
循环语句 while ( 成立的条件?) 换行 活动 换行 endwhile(不成立的条件描叙) 先判断条件在循环
改变活动的形状 :活动> < ] } / 竖线 分别得到不同的形状
并行处理 fork fork again end fork 并行处理
组合 partition group名称 { 活动图语法} 对活动进行分组
泳道 两根竖线包围 泳道
分离 detach 移除箭头

登录活动图

@startuml
header 登录接口活动图
footer 登录接口活动图
|tomcat|
start
:参数校验]if (参数校验通过 ?) then (yes)
elseif (字符串为空) then (no)
stop
else (其它校验错误)stop
endif|TA服务端|
:用户code远程校验;
|LX Saas|
:saas注册登录;
|mysql|
:登记到saasUser;
|redis|
:保存令牌到Redis;
|tomcat|
:组装响应参数;
stop@enduml

增加积分活动图

@startumlheader 改变用户积分接口活动图
footer 改变用户积分接口活动图|tomcat|
start :登录态检查;if(令牌非法 ?) then (yes)
:返回未登录;
stop
else (合法)
endif:接受参数,point , event ;if(参数检查 ?) then(合法)
else(非法)
:返回参数错误;
stop
endif|mysql|
:插入积分增加详细纪录;
|tomcat|
:得到记录Id;
|redis|
:按照userId查询得到用户积分的表记录Id;
|tomcat|if(记录id不存在 ?)then(yes)
|mysql|
:插入用户的积分记录得到id;
:更新用户的总积分;else(id存在)
:更新用户的总积分;endif|redis|
:删除用户总积分的缓存;
:删除用户积分总条数的缓存;
:删除用户积分明细分页记录的缓存;|tomcat|
:得到明细记录的id,返回;:返回客户端;stop@enduml

查询积分活动图

@startuml|tomcat|
start#gold:接受参数,pageNum,pageSize|:参数校验;
if (参数校验通过 ?) then(通过)
else (不通过)
#red:报错 401 X 参数校验不通过;
stop
endif|redis|
:从Redis缓存中查询得到记录的总数]
|tomcat|
if(总数不存在)then (不存在)
|mysql|:从数据库中查询得到积分详细纪录的总数;|redis|:设置到redis缓存中;
elseendif|tomcat|
:得到纪录的总条数;if(总数是否大于0 ?)then-[#red]->总数大于0;fork|redis|:从Redis缓存分页查询得到列表;|tomcat|if (redis中获取不到数据 ?) then( 获取不到)|mysql|:从数据库中获取得到列表;|redis|:设置到redis缓存中;else (获取到了)endif|tomcat|:得到分页查询的列表;fork again|redis|:从Redis缓存中查询得到用户总积分;|tomcat|if (redis中获取不到数据 ?) then( 获取不到)|mysql|:从数据库中获取得到用户总积分;|redis|:设置到redis缓存中;else (获取到了)endif|tomcat|:得到用户总积分;end fork
else|tomcat|-[#green]->总数等于0;#green:分页列表为空;#green:总积分为0;
endif|tomcat|
:组装响应参数\n分页列表数据\n用户总积分;
stop;@enduml

部署图

部署图显示了系统的硬件和安装在硬件上的软件,以及用于连接异构计算机之间的中间件。部署图通常被认为是一个网络图或者物理架构图。

语法

系统部署图

@startumlheader TA项目物理架构图
footer TA项目物理架构图left to right directionactor TaUser as taUser
node TaApp as taApp {agent LxSDK as lxsdkagent TaClient as taClient
}folder tiananuser_folder{cloud tiananuserCluster
node tomcat1_tiananuser
node tomcat2_tiananuser
node tomcat3_tiananusertiananuserCluster -down-> tomcat1_tiananuser
tiananuserCluster -down-> tomcat2_tiananuser
tiananuserCluster -down-> tomcat3_tiananuser}folder tianansp_folder{cloud tiananspCluster
node tomcat1_tianansp
node tomcat2_tianansp
node tomcat3_tianansptiananspCluster -down-> tomcat1_tianansp
tiananspCluster -down-> tomcat2_tianansp
tiananspCluster -down-> tomcat3_tianansp}node Nginx as nginxnginx --> tiananuserCluster:负载均衡/路由
nginx --> tiananspCluster:负载均衡/路由taUser -->  taApp : 访问
taApp --> nginx:http/httpsdatabase tiananuser_database[用户登录数据库]
database tianansp_database[运营活动数据库
]database redis[redis缓存
]tiananuser_folder -down-> tiananuser_database
tianansp_folder -right-> tianansp_databasetiananuser_folder -down-> redis
tianansp_folder -up-> redisnode zk [zookeeper注册中心dubbo的消费者跟生产者通信中间件定时任务elasticjob的配置中间件
]tiananuser_folder -down-> zk
tianansp_folder -up-> zknode apollo [apollo配置中心
]queue kafka[kafka集群
]tiananuser_folder -down-> apollo
tianansp_folder -up-> apollotiananuser_folder -down-> kafka
tianansp_folder -up-> kafkafile fileCDN [七牛云或者阿里云存储
]tiananuser_folder -down-> fileCDN
tianansp_folder -up-> fileCDNcloud ELK {node elsticSearchnode filebeatnode kibana
}node kubernetes{node healmcharts[交付服务]node harbor[harbor监控管理kubernetes对象]
}tiananuser_folder -down-> ELK:日志写入
tianansp_folder -up-> ELK:日志写入tiananuser_folder -down-> kubernetes:发布和管控docker节点
tianansp_folder -up-> kubernetes:发布和管控docker节点@enduml

小结

  1. 活动图(泳道图)实际上是代码流程的一个梳理,建议编码前,先画活动图;

  2. 状态图 可以列举出所有状态发生改变的事件,防止遗漏掉某些发生改变的情况;

  3. 部署图实际上是物理架构图,画的不太好看,但是却可以在上线的时候有效的指导运维;

(想自学习编程的小伙伴请搜索圈T社区,更多行业相关资讯更有行业相关免费视频教程。完全免费哦!)

plantuml-绘制状态图和活动图和部署图相关推荐

  1. 实验05 状态图与活动图

    实验目的 (1) 理解状态图的基本概念: (2) 理解活动图的基本概念: (3) 掌握在Rational Rose中绘制状态图和活动图的操作方法. 实验内容 一.用状态图描述一个银行贷记卡(对象)在激 ...

  2. ****** 五十 ******、软设笔记【UML分析和意义】-类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图,动静态模式...

    一.类图(Class Diagram) 描述一组类.接口.协作已经它们之间的图,用来显示系统中各个类的静态结构图. 类之间的关系(relationship) *依赖(dependency) *泛化(g ...

  3. 用例图、类图、状态图、活动图、顺序图、协作图

    实验二  UML建模工具 1.实验目的 (1)熟悉StarUML等工具软件的特色及工作环境: (2)熟悉各种UML图的含义及用途:掌握利用starUML等工具绘制各种UML图的方法. 2.实验内容 ( ...

  4. UML模型中的图-行为图【状态图、活动图】

    前言 前面的博文为大家分享了UML模型中的用例图.静态图.接下来继续为大家分享UML模型中的图-行为图. 正文 行为图用来描述系统的动态模型和对象之间的交互关系.行为图在UML模型中也是一个语义上分类 ...

  5. UML--行为图(状态图、活动图)

    一.状态机 (一)概念 状态图和活动图是状态机的两种表现形式.利用状态机可以精确地描述对象的行为. 从对象的出事状态起,开始响应事件并执行某些动作,这些事件引起状态的转换:对象在新状态下又开始响应事件 ...

  6. UML状态图和活动图

    转载于https://www.cnblogs.com/jingwhale/p/4230235.html UML状态图和活动图 UML状态图和活动图 统一建模语言UML(Unified Modeling ...

  7. UML图详解(八)状态机(状态图和活动图)

    一.概念 状态图和活动图是状态机的两种表现形式.利用状态机可以精确地描述对象的行为. 从对象的初始状态起,开始响应事件并执行某些动作,这些事件引起状态的转换:对象在新状态下又开始响应事件和执行动作,如 ...

  8. UML 行为图——状态图 、 活动图

    UML的行为图并不是具体的图而是活动图和状态图的聚合. 状态图(Statechart Diagram):用于系统分析,通过建立类对象的生存周期模型来描述对象随时间变化的动态行为.是基于状态之间的控制流 ...

  9. 系统架构设计师考试题库重点案例:设计建模-状态图和活动图

    [说明] 某公司拟研制一款高空监视无人直升机,该无人机采用遥控一自主复合型控制实现垂直升降.该直升机飞行控制系统由机上部分和地面部分组成,机上部分主要包括无线电传输设备.飞控计算机.导航设备等,地面部 ...

最新文章

  1. 图的两种存储方式---邻接矩阵和邻接表
  2. maven servlet配置_第一个Servlet配置
  3. QML笔记-2种方式实现心脏跳动
  4. Android 5.0新特性
  5. 【高并发】java中的CAS,你需要知道的东西
  6. 计算机组成原理测试题
  7. php curl读取头,php curl 获取请求头与DNS解析
  8. Android launcher 壁纸 wallpaper
  9. 解决IE7中移动文件夹无法收藏问题
  10. 计算机专业过度饱和,教育部:撤销518个本科专业,计算机专业也被撤销,市场饱和了?...
  11. 最新可使用在线音乐网站+多解析源码
  12. 汉仪欧楷字体获2016中国设计红星奖银奖
  13. 地理入门-经纬度时区速成总结篇(转)
  14. 菜鸡的Java笔记 数字操作类
  15. 为什么有斯坦福计算机科学博士学位的你找不到工作?
  16. 由十多位架构师打造的《面试突击核心讲》到底有多强?肝完金三银四稳了。
  17. python 高空坠球_题目:一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落 C程序:一球从100米高...
  18. Naxsi 配置白名单
  19. 【HDU3949 + BZOJ2115 + CF724G】【异或线性基例题】| 倍增 | 第k小异或和 | DFS处理环 |【CGWR】| N
  20. react hooks useEffect副作用钩子使用

热门文章

  1. Android实用代码3-转自农民伯伯
  2. JavaScript valueOf() 函数详解
  3. 数据库 结转数据 sql结转
  4. fullcalendar php,php使用fullcalendar日历插件详解,fullcalendar日历
  5. 区块链-4:区块链的基本类型和智能合约
  6. 你的创业项目,如果腾讯跟进复制了,你会怎么办?
  7. EasyExcel文件导出错误解决
  8. python工程项目管理
  9. H5时钟的完整版(粘贴复制直接看效果)
  10. html版本样式.忆江南案例