plantuml-绘制状态图和活动图和部署图​

2024-04-02 18:08

本文主要是介绍plantuml-绘制状态图和活动图和部署图​,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

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

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

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

状态图

基本语法

元素语法说明
开始和结束状态[*]标识开始和结束状态
箭头-->添加箭头
隐藏描述区域hide empty description隐藏描述区域
合成状态state 合成状态名字{ 增城的状态定义语法}可以嵌套状态图
状态声明state 状态名字 : 备注声明状态
fork,joinstate 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

file

积分状态图

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

file

活动图

基本语法

元素语法说明
开始 结束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

file

增加积分活动图

@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

file

查询积分活动图

@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

file

部署图

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

语法

系统部署图

@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

file

小结

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

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

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

原创不易,转载请注明出处,欢迎多沟通交流

这篇关于plantuml-绘制状态图和活动图和部署图​的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870693

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【WebGPU Unleashed】1.1 绘制三角形

一部2024新的WebGPU教程,作者Shi Yan。内容很好,翻译过来与大家共享,内容上会有改动,加上自己的理解。更多精彩内容尽在 dt.sim3d.cn ,关注公众号【sky的数孪技术】,技术交流、源码下载请添加微信号:digital_twin123 在 3D 渲染领域,三角形是最基本的绘制元素。在这里,我们将学习如何绘制单个三角形。接下来我们将制作一个简单的着色器来定义三角形内的像素

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

在 Windows 上部署 gitblit

在 Windows 上部署 gitblit 在 Windows 上部署 gitblit 缘起gitblit 是什么安装JDK部署 gitblit 下载 gitblit 并解压配置登录注册为 windows 服务 修改 installService.cmd 文件运行 installService.cmd运行 gitblitw.exe查看 services.msc 缘起

Solr部署如何启动

Solr部署如何启动 Posted on 一月 10, 2013 in:  Solr入门 | 评论关闭 我刚接触solr,我要怎么启动,这是群里的朋友问得比较多的问题, solr最新版本下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 1、准备环境 建立一个solr目录,把solr压缩包example目录下的内容复制

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

Spring Roo 实站( 一 )部署安装 第一个示例程序

转自:http://blog.csdn.net/jun55xiu/article/details/9380213 一:安装 注:可以参与官网spring-roo: static.springsource.org/spring-roo/reference/html/intro.html#intro-exploring-sampleROO_OPTS http://stati

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

部署若依Spring boot项目

nohup和& nohup命令解释 nohup命令:nohup 是 no hang up 的缩写,就是不挂断的意思,但没有后台运行,终端不能标准输入。nohup :不挂断的运行,注意并没有后台运行的功能,就是指,用nohup运行命令可以使命令永久的执行下去,和用户终端没有关系,注意了nohup没有后台运行的意思;&才是后台运行在缺省情况下该作业的所有输出都被重定向到一个名为nohup.o