序文
みなさん、こんにちは。カタツムリを拾う男の子です。
最近、コードを使ってシーケンス図とUMLユースケース図を描きました。とても気分がいいので、それらを共有します。
日常の開発では、一般的に設計段階で、シーケンス図やユースケース図などを作成する必要があります。普段絵を描くとき、使うのですかdraw.io
、それともするのprocessOn
ですか?彼らと一緒に描かれた絵は実際にはかなりいいです。しかし、今日、Tianluo兄弟はオープンソースの描画アーティファクトを紹介します!コードを使用して絵を描くことができ、IDEで使用できます。描画は効率的でシンプルで、簡単で、非常に美しいものです。この魔法はPlantUML
です。
-
githubアドレス、スターを付けて、ありがとう
-
公開番号:カタツムリを拾う男の子
1.PlantUMLの紹介
PlantUMLはオープンソースプロジェクトであり、UML図をすばやく作成するためのツールです。グラフィックを生成するためのエンコーディング方法をサポートできます。シーケンス図、UMLユースケース図、クラス図、マインドマップ、ER図などの描画に使用できます。
PlantUMLが描いた図はシンプルで美しいです。まず、PlantUMLが描いたログインシーケンス図と、その図に対応するコードを次のように示します。
/**
* 关注公众号:键捡田螺的小男孩
*/
@startuml
title Sequence Diagram of User login
actor User as user
participant "gateway" as gateway
participant "user-core" as userCore
database "MySQL" as mysql
database "Redis" as redis
autonumber
user-> gateway:login request,param:username,password
activate gateway
gateway-> userCore:forward the login request
activate userCore
userCore-> userCore :check the login param
userCore-> mysql:query user info from mysql by username
activate mysql
mysql-> userCore:response with username and password
deactivate mysql
userCore->userCore:compare the requested password with the DB's password
userCore-> userCore: generate an unique token
userCore--> redis: save the token to redis
userCore-> gateway: response with the token
deactivate userCore
gateway-> user: login success with the token
deactivate gateway
@enduml
ログインのユースケースシーケンス図は次のとおりです。
2.PlantUMLのインストールと使用
PlantUMLのインストールは非常に便利です。プラグインがあります。名前は次のとおりPlantUML Integration
です。IDEのプラグインマーケットにアクセスして、次のように検索してインストールできます。
インストールが成功した後、一般的なエクスペリエンスをすばやく体験したい場合は、新しいプロジェクトを作成し、新しいplantUMLファイルファイルを作成してから、前のセクションのログインシーケンス図のコードをコピーすると、次のように表示されます。ログインシーケンス図。
3.PlantUMLでシーケンス図を描く方法
タイミング図とは何ですか?
时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。
如何用PlantUML画时序图呢?
你可以先新建一个PlantUML文件
然后选择Sequence,并定义一个文件名称
就会有默认的时序图生成啦.
我们照着登录时序图的代码,来大概说下每个关键词的意思吧.
/**
* 关注公众号:键捡田螺的小男孩
*/
@startuml
title Sequence Diagram of User login
actor User as user
participant "gateway" as gateway
participant "user-core" as userCore
database "MySQL" as mysql
database "Redis" as redis
autonumber
user-> gateway:login request,param:username,password
activate gateway
gateway-> userCore:forward the login request
activate userCore
userCore-> userCore :check the login param
userCore-> mysql:query user info from mysql by username
activate mysql
mysql-> userCore:response with username and password
deactivate mysql
userCore->userCore:compare the requested password with the DB's password
userCore-> userCore: generate an unique token
userCore--> redis: save the token to redis
userCore-> gateway: response with the token
deactivate userCore
gateway-> user: login success with the token
deactivate gateway
@enduml
关键词解释如下:
title
:表示该UML用例图的标题actor
:表示人形的参与者as
: 使用as 关键字命名参与者。你可以把它理解成定义变量一样,as后面跟着的就是变量,声明后,我们后面就可以使用这个变量啦participant
:表示普通的参与者,它跟actor的主要区别是:形状不一样database
:表示参与者形状是数据库.- 显示的顺序是怎么定义的:声明的参与者顺序将是(默认的)显示顺序。
autonumber
:可以给参与者添加顺序->
:表示绘制两个参与者之间的信息,如果你希望是虚线,可以使用-->
.activate
和deactivate
:表示参与者的生命线
当然,PlantUML
功能挺丰富的,它还可以组合消息,虽然在我的登录时序图还没体现出来. 它提供了alt/else、opt、loop
来组合消息.如下:
@startuml
Alice -> Bob: 认证请求
alt 登录成功
Bob -> Alice: 认证接受
else 某种失败情况
Bob -> Alice: 认证失败
group 我自己的标签
Alice -> Log : 开始记录攻击日志
loop 1000次
Alice -> Bob: DNS 攻击
end
Alice -> Log : 结束记录攻击日志
end
else 另一种失败
Bob -> Alice: 请重复
end
@enduml
对应的时序图如下:
4. 如何用PlantUML 画UML用例图
什么是用例图?
用例图(英语:use case diagram)是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。用例图也经常和其他图表配合使用。
如何用PlantUML画UML用例图呢?
你可以先新建一个PlantUML文件,然后选择user case,并定义个文件名
就会有默认的UNML用例图生成啦
公式ウェブサイトからユースケース図のデモを選んで紹介します。コードは次のとおりです。
@startuml
left to right direction
actor Guest as g
package Professional {
actor Chef as c
actor "Food Critic" as fc
}
package Restaurant {
usecase "Eat Food" as UC1
usecase "Pay for Food" as UC2
usecase "Drink" as UC3
usecase "Review" as UC4
}
fc --> UC4
g --> UC1
g --> UC2
g --> UC3
@enduml
対応する生成されたユースケース図は次のとおりです。
各キーワードの意味を見てみましょう。
left to right direction
:ユースケース図が左から右に描かれていることを示しますactor Guest as g
:ヒューマノイド参加者を定義します。変数エイリアスはgです。package Professional
:ユースケースとロールをグループ化するために使用できる。というpackage
名前のパッケージを定義します。Professional
package
usecase "Eat Food" as UC1
:ユースケースを定義し、エイリアスをUC1
。fc --> UC4
:役割fc
とユースケースUC4
が関連付けられていることを示します。役割とユースケースの関係を表す-->
ために使用されます。
5.plantUMLでマインドマップを描く方法
マインドマップとは何ですか?
英語はマインドマップとも呼ばれ、発散的思考を表現するための効果的なグラフィカル思考ツールです。シンプルですが効果的かつ効率的です。実用的な思考ツールです。
簡単なマインドマップを作成しました。コードは次のとおりです。
@startmindmap
* 公众号:捡田螺的小男孩,干货面试题
** 计算机网络面试题
*** TCP/IP十五连问
*** 两万字计算机面试题汇总
** MySQL面试题
** Redis面试题
** 大厂面试真题
*** 虾皮十五连问
*** 五年Oppo后端面试真题
*** 腾讯云十五连问
@endmindmap
PlantUMLはマインドマップを描きます、それは非常に単純です、あなたは効果を見ることができます
6.planUMLを使用してアクティビティフローチャートを作成する方法
アクティビティ図とは何ですか?
アクティビティ図(アクティビティ図)は、ビジネスユースケースの実現を示すワークフローです。
ログインアクティビティフローチャートの簡単なバージョンを作成しました。
@startuml
title Activity Diagram of User login
start
:user request login;
if (is request param null?) then (N)
:query user info by username;
if (is user info null ?) then (N)
:compare the password;
if (Is password right?) then (Y)
:generate a token ,and set it to redis;
:response with login success;
else(N)
:response with wrong password code;
stop
endif
else(Y)
:response with error userinfo;
stop
endif
else(Y)
:response with error param;
stop
endif
stop
@enduml
生成されるフローチャートは次のとおりです。
アクティビティ図の主な説明は次のとおりです。
start
アクティビティ図プロセスの開始を示しますstop
アクティビティ図プロセスの終了を示します:user request login;
:アクティビティプロセスノードが追加user request login
する必要があるノードであることを示します。:
;
if+then+endif
完全な条件付き判断を示します
やっと
この記事では、plantUMLの描画を紹介します。興味のある友達は公式ウェブサイトに移動して学ぶことができます。
この記事があなたに役立つか、または啓発的であるならば、あなたは私の公のアカウント(カタツムリを拾う小さな男の子)に注意を払うことができます。あなたのサポートは私が執筆を続ける最大の動機です。ワンクリックで3つのリンクを要求します:いいね、転送、視聴。