задний план
Диаграмма состояний: все состояния объекта и процесс изменения состояния на основе событий;
Диаграмма активности: рабочий процесс варианта использования;
Диаграмма развертывания: аппаратная и программная физическая архитектура системы;
Диаграмма состояний
базовая грамматика
элемент | грамматика | иллюстрировать |
---|---|---|
начальное и конечное состояния | [*] | Определите начальное и конечное состояния |
стрела | --> | добавить стрелку |
Скрыть область описания | hide empty description | Скрыть область описания |
синтетическое состояние | state синтетическое имя состояния { синтаксис определения состояния Zengcheng } | Диаграммы состояний могут быть вложены |
государственное заявление | название штата: примечания | состояние декларации |
fork,join | название штата | отдельное, объединенное государство |
Параллельное состояние | -- или или двойная вертикальная черта | Состояние изменяется одновременно |
направление стрелки | top down left right | Вы можете контролировать направление стрелки |
однострочный комментарий | обратите внимание на расположение имени штата: однострочный комментарий | однострочный комментарий |
многострочный комментарий | примечание ориентация имени состояния перевод строки однострочный комментарий перевод строки примечание конца |
многострочный комментарий |
Диаграмма состояния входа
@startuml
hide empty description
left to right direction
[*]-->NotLogin:首次打开app
state NotLogin: 没有登录
state LoginSuccess: 登录成功
state LoginFail: 登录失败
NotLogin -->LoginSuccess: 登录
NotLogin -->LoginFail:登录
state LoginFail {
state 用户不存在: ta校验
state saas注册失败:注册saas
state 登记用户信息失败: 登记到tiananUser
state 参数校验失败 :校验参数
}
state join_state <<join>>
LoginSuccess-->join_state:组装响应参数
LoginFail-->join_state:组装响应参数
join_state -->[*]:返回JSON数据到客户端
@enduml
Интегральная диаграмма состояний
@startuml
scale 350 width
left to right direction
hide empty description
state noPointRecord : 没有积分记录
state pointZero : 积分为0
state pointOk : 有积分
[*] --> noPointRecord: 增加积分
noPointRecord --> pointZero: 初始化
pointZero --> pointOk: 增加/消耗积分
pointOk --> [*]
@enduml
диаграмма деятельности
базовая грамматика
элемент | грамматика | иллюстрировать |
---|---|---|
начать конец | start stop | начать конечную деятельность |
Мероприятия | :Название события; | определить действия |
Условные операторы | если (условие ?) то (да) новая строка следующее действие иначе (нет) endif | условная ветвь |
оператор цикла | повторите действие переноса повторите повторение (условие?) | Сначала казни, а потом суди |
оператор цикла | в то время как (условия верны?) действие новой строки новая строка endwhile (условия не соответствуют действительности) | Сначала определите условие в цикле |
Изменить форму деятельности | :activity> | получить различные формы |
параллельная обработка | fork fork again end fork | параллельная обработка |
комбинация | имя группы разделов { синтаксис схемы действий } | Групповая деятельность |
плавательная дорожка | окружен двумя вертикальными линиями | плавательная дорожка |
отдельный | 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
Диаграмма действий по добавлению баллов
@startuml
header 改变用户积分接口活动图
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缓存中;
else
endif
|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
Схема развертывания
На схеме развертывания показано аппаратное обеспечение системы и программное обеспечение, установленное на аппаратном обеспечении, а также промежуточное программное обеспечение, используемое для подключения разнородных компьютеров. Диаграмма развертывания часто рассматривается как сетевая диаграмма или диаграмма физической архитектуры.
грамматика
Схема развертывания системы
@startuml
header TA项目物理架构图
footer TA项目物理架构图
left to right direction
actor TaUser as taUser
node TaApp as taApp {
agent LxSDK as lxsdk
agent TaClient as taClient
}
folder tiananuser_folder{
cloud tiananuserCluster
node tomcat1_tiananuser
node tomcat2_tiananuser
node tomcat3_tiananuser
tiananuserCluster -down-> tomcat1_tiananuser
tiananuserCluster -down-> tomcat2_tiananuser
tiananuserCluster -down-> tomcat3_tiananuser
}
folder tianansp_folder{
cloud tiananspCluster
node tomcat1_tianansp
node tomcat2_tianansp
node tomcat3_tianansp
tiananspCluster -down-> tomcat1_tianansp
tiananspCluster -down-> tomcat2_tianansp
tiananspCluster -down-> tomcat3_tianansp
}
node Nginx as nginx
nginx --> tiananuserCluster:负载均衡/路由
nginx --> tiananspCluster:负载均衡/路由
taUser --> taApp : 访问
taApp --> nginx:http/https
database tiananuser_database[
用户登录数据库
]
database tianansp_database[
运营活动数据库
]
database redis[
redis缓存
]
tiananuser_folder -down-> tiananuser_database
tianansp_folder -right-> tianansp_database
tiananuser_folder -down-> redis
tianansp_folder -up-> redis
node zk [
zookeeper注册中心
dubbo的消费者跟生产者通信中间件
定时任务elasticjob的配置中间件
]
tiananuser_folder -down-> zk
tianansp_folder -up-> zk
node apollo [
apollo配置中心
]
queue kafka[
kafka集群
]
tiananuser_folder -down-> apollo
tianansp_folder -up-> apollo
tiananuser_folder -down-> kafka
tianansp_folder -up-> kafka
file fileCDN [
七牛云或者阿里云存储
]
tiananuser_folder -down-> fileCDN
tianansp_folder -up-> fileCDN
cloud ELK {
node elsticSearch
node filebeat
node 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. Диаграмма развертывания на самом деле представляет собой диаграмму физической архитектуры, которая не очень красива, но может эффективно управлять эксплуатацией и обслуживанием при подключении к сети;
Оригинальность непростая, просьба указывать источник при перепечатке.