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-diagram

package API模块 {
    (调用 API)
    (配置 API)
}

:系统模块: --> (调用 API)
:配置人员: --> (配置 API)

@enduml

类图

@startuml
'https://plantuml.com/class-diagram

class 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 note

class 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 ..> ApiDO

Input "1" <-- "1" ApiDO
ApiInfoMapper <.. ApiDO
ApiQueryMapper <.. ApiDO
ApiBodyMapper <.. ApiDO
ApiResponseMapper <.. ApiDO

@enduml

活动图

@startuml
'https://plantuml.com/activity-diagram-beta

start
:获取 api 基本信息;
if (api 是否存在?) then (true)
    :构造请求参数;
    :构造请求头;
    :构造请求体;
    if (校验必填字段?) then (true)
        :调用 api;
        if (校验 api 返回值?) then (true)
            :返回 api 返回值;
        else (false)
            :抛出错误信息;
            stop;
        endif
    else (false)
        :抛出错误信息;
        stop
    endif
else (false)
    :抛出错误信息;
    stop
endif
stop;

@enduml

时序图

@startuml
'https://plantuml.com/sequence-diagram

participant Client
participant Controller
participant Service
participant ApiDO
participant Mapper
participant 第三方接口

Client -> Controller ++ : 发起 api 调用请求

Controller -> Controller: 校验入参

Controller -> Service ++ : 委托业务层处理

Service -> ApiDO **: build

Service -> 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

  • 50
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是银行系统的用例图类图的介绍: 用例图(Use Case Diagram)是一种用于描述系统功能的图形化工具,它展示了系统的各个角色(Actor)和系统的各个用例(Use Case)之间的关系。用例图可以帮助我们理解系统的功能需求和用户与系统的交互。 类图(Class Diagram)是一种用于描述系统中的类、类之间的关系以及类的属性和方法的图形化工具。类图可以帮助我们理解系统的结构和设计,包括系统中的各个类及其之间的关系。 以下是银行系统的用例图类图示例用例图示例: ```plantuml @startuml left to right direction actor Customer actor BankEmployee actor ATM rectangle BankSystem { Customer --> (Login) Customer --> (Withdraw) Customer --> (Deposit) Customer --> (Transfer) Customer --> (CheckBalance) BankEmployee --> (CreateAccount) BankEmployee --> (CloseAccount) ATM --> (Withdraw) ATM --> (Deposit) ATM --> (CheckBalance) } @enduml ``` 类图示例: ```plantuml @startuml class BankSystem { +login(username: String, password: String): boolean +withdraw(accountNumber: String, amount: double): boolean +deposit(accountNumber: String, amount: double): boolean +transfer(fromAccountNumber: String, toAccountNumber: String, amount: double): boolean +checkBalance(accountNumber: String): double } class Customer { -name: String -address: String -phoneNumber: String +login(username: String, password: String): boolean +withdraw(accountNumber: String, amount: double): boolean +deposit(accountNumber: String, amount: double): boolean +transfer(fromAccountNumber: String, toAccountNumber: String, amount: double): boolean +checkBalance(accountNumber: String): double } class BankEmployee { -name: String -employeeId: String +createAccount(customer: Customer): boolean +closeAccount(accountNumber: String): boolean } class ATM { -location: String +withdraw(accountNumber: String, amount: double): boolean +deposit(accountNumber: String, amount: double): boolean +checkBalance(accountNumber: String): double } BankSystem "1" *-- "1..*" Customer BankSystem "1" *-- "1..*" BankEmployee BankSystem "1" *-- "1..*" ATM @enduml ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值