PlantUML 教程:绘制时序图

绘制时序图是 PlantUML 的一个强大功能,下面是详细的 PlantUML 时序图教程,帮助你理解如何使用它来创建清晰的时序图。

基本概念

时序图(Sequence Diagram)用于展示对象之间的交互以及它们之间的消息传递顺序。它主要由以下元素组成:

  • 参与者(Participant):图中的对象或实体。
  • 消息(Message):参与者之间发送的消息。
  • 激活(Activation):对象在处理一条消息的时间段。

基本语法

以下是创建一个简单时序图的基本语法:

@startuml
participant Alice
participant BobAlice -> Bob: Hello Bob, how are you?
Bob --> Alice: I'm good, thanks!
@enduml

参与者(Participants)

参与者可以是用户、对象、类、组件等。你可以使用 actorparticipantboundarycontrolentitydatabase 等关键字来定义不同类型的参与者。

@startuml
actor User
participant "Database" as DB
entity "Web Server" as WSUser -> WS: Request
WS -> DB: Query
DB --> WS: Result
WS --> User: Response
@enduml

消息(Messages)

消息可以是同步消息、异步消息、返回消息等。以下是各种消息的示例:

@startuml
participant Alice
participant BobAlice -> Bob: Synchronous message
Alice ->> Bob: Asynchronous message
Bob --> Alice: Return message
@enduml

激活和停止(Activation and Deactivation)

激活表示对象在处理消息时的活动状态。可以使用 activatedeactivate 来显示对象的激活和停用。

@startuml
participant Alice
participant BobAlice -> Bob: Request
activate Bob
Bob -> Bob: Internal processing
Bob --> Alice: Response
deactivate Bob
@enduml

生命线(Lifelines)

对象的生命线表示对象的存在和消息的时间线。对象的生命线可以用 destroy 表示结束。

@startuml
participant Alice
participant BobAlice -> Bob: Request
activate Bob
Bob -> Bob: Internal processing
Bob --> Alice: Response
deactivate Bob
destroy Bob
@enduml

分组和循环(Grouping and Loops)

你可以使用 altoptlooppar 等关键字来表示条件、选项、循环和并行操作。

条件(Alternatives)
@startuml
participant Alice
participant BobAlice -> Bob: Requestalt SuccessBob --> Alice: Response
else FailureBob --> Alice: Error
end
@enduml
循环(Loops)
@startuml
participant Alice
participant BobAlice -> Bob: Requestloop Every secondBob -> Alice: Status update
end
@enduml
并行(Parallel)
@startuml
participant Alice
participant Bob
participant Carolpar Parallel executionAlice -> Bob: Task 1Alice -> Carol: Task 2
end
@enduml

示例:综合示例

以下是一个包含多个特性的综合示例:

@startuml
actor User
participant "Web Browser" as Browser
participant "Web Server" as Server
participant "Database" as DBUser -> Browser: Open website
Browser -> Server: HTTP GET /
activate Server
Server -> DB: Query user data
activate DB
DB --> Server: Return user data
deactivate DB
Server --> Browser: HTML + CSS
deactivate Server
Browser -> User: Render pageUser -> Browser: Click link
Browser -> Server: HTTP GET /page
activate Server
Server -> DB: Query page data
activate DB
DB --> Server: Return page data
deactivate DB
Server --> Browser: HTML + CSS
deactivate Server
Browser -> User: Render page
@enduml

生成图表

使用命令行生成图表:

java -jar plantuml.jar sequence.puml

将生成的图像文件保存在同一目录中。

通过这些示例和语法,你应该可以创建出各种复杂的时序图,以帮助你更好地描述系统的行为和交互过程。如果有任何问题或需要更详细的解释,请随时告诉我!

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

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

相关文章

感应灯光画纯电路开源版本

前言 之前那版灯光画用的从垃圾佬淘的电路板拼出来的,功能不全,显示效果不太好而且无法固定到相框上,这次改版用的嘉立创smt,贴了5片板子(19元),功能上的改进是加了无极触摸调光、添加了黄白两…

简易图书管理系统——MYsql+Javase+JDBC

目录 前言 数据表的建立 操作包各个类的实现 增加类 删除类 展示类 借阅与归还类 前言 书接上文 JDBC编程的学习——MYsql版本-CSDN博客 本期我们通过对先前图书管理系统进行改造,是它的数据能保存在数据库中 完整代码我已经保存在github中,能不能给个星呢!!!! call…

debian固定ip

debian固定ip 前言 安装好的Debian系统后,为了确保每次登陆的ip不变,需要固定 方法 命令如下 ip addr | grep inet因为有有线网和无线网 2 种连接方式,因此需要区别。 其中 enp 的是有线,wlp 的是无线 查看网关 IP 命令如下 …

互联网末法时代的一些思考

这篇文章也是临时起意,很长一段时间没写个人思考类的文章,主要原因也是时间完全不够用。随着年龄的增长,看待问题的视角也逐渐发生变化,例如从关注现象到关注动机,从关注结果到关注起因,2021年的时代我曾经…

java面向对象进阶篇--static

一、前言 java进阶篇已经开始了,先从面向对象开始,由于时间原因今天就只更新了static部分,内容上特别详细,一些特别的注意事项也在反复的提醒大家。 温馨提示一下,往后的java篇会越来越难,希望大家能够坚…

P2p网络性能测度及监测系统模型

P2p网络性能测度及监测系统模型 网络IP性能参数 IP包传输时延时延变化误差率丢失率虚假率吞吐量可用性连接性测度单向延迟测度单向分组丢失测度往返延迟测度 OSI中的位置-> 网络层 用途 面相业务的网络分布式计算网络游戏IP软件电话流媒体分发多媒体通信 业务质量 通过…

运维检查:mysql表自增id是否快要用完

数据库表中最大自增ID用完会报错。判断是否接近或达到自增ID类型的最大值:‌ 对于MySQL中的自增ID,‌如果使用的是int类型,‌其无符号(‌unsigned)‌的最大值可以达到2^32 - 1,‌即4294967295。‌如果使用的…

python编程:从入门到实践(第三版) 笔记

文章目录 资源网站:https://www.ituring.com.cn/book/3038配置VSCode推荐资源网站推荐资源网址 资源网站:https://www.ituring.com.cn/book/3038 配置VSCode 推荐资源网站 推荐资源网址 英文版主页: https://ehmatthes.github.io/pcc_3e 中文版主页: h…

上市公司企业共同机构所有权数据、机构交叉持股数据(2005-2023)

数据来源:基础数据来源于上市公司企业年报 时间跨度:2005-2023年 数据范围:企业层面 数据指标: 参考《中国工业经济》杜勇(2021)老师的做法,从 3 个维度构造指标反映上市公司共同机构所有权&…

Vue和Element UI 路由跳转

在Vue.js中,使用Vue Router可以方便地实现页面之间的路由跳转。Element UI是一个基于Vue 2.0的桌面端组件库,它本身并不直接提供路由跳转的功能,但你可以在使用Element UI的Vue项目中结合Vue Router来实现这一功能。 以下是一个基于Vue和Ele…

Proxyman for Mac v5.6.1 抓包调试工具

Mac分享吧 文章目录 效果一、下载软件二、功能三、开始安装1、双击运行软件,将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功 四、运行测试1、打开软件 安装完成!!! 效果 一…

【华为OD笔试】2024D卷命题规律解读【分析300+场OD笔试考点总结】

可上 欧弟OJ系统 练习华子OD、大厂真题 绿色聊天软件戳 od1441了解算法冲刺训练(备注【CSDN】否则不通过) 文章目录 相关推荐阅读华为OD笔试2024D卷命题规律解读华为OD算法/大厂面试高频题算法练习冲刺训练 相关推荐阅读 【华为OD笔试】2024D卷机考套题…

C# Opencv实现本地以图搜图

地址:冯腾飞/本地以图搜图

Java面试八股之Redis哨兵机制

Redis哨兵机制 Redis Sentinel(哨兵)模式是一种高可用解决方案,用于监控和自动故障转移Redis主从集群。以下是对哨兵模式详细过程的描述: 1. 初始化与配置 部署哨兵节点:在不同的服务器上部署一个或多个Redis Sentin…

《算法笔记》总结No.7——二分(多例题详解版)

一.二分查找 目前有一个有序数列,举个例子,假设是1~1000,让我们去查找931这个数字,浅显且暴力的做法就是直接从头到尾遍历一遍,直到找到931为止。当n非常大,比如达到100w时,这是一个非常大的量级…

Linux 线程初步解析

1.线程概念 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列。在linux中,由于线程和进程都具有id,都需要调度等等相似性,因此都可以用PCB来描述和控制,线程含有PCB&am…

美联储降息应该更早?高盛:有充分理由7月降息,而非9月

KlipC报道:高盛首席经济学家哈祖斯Jan Hatzius表示,美联储“有充分理由”在7月会议上降息,而非等到9月。 在最新发布的报告中,他表明通胀已经取得了足够的进展,回到了美联储2%的长期目标附近,这将使美联储…

[C++ 入门基础 - 命名空间]

在C中,命名空间(Namespace)是一种用来组织代码并避免命名冲突的机制。命名空间可以包含变量、函数、类等C中的所有实体,使得这些实体的名称在命名空间内部有效,避免了与其他命名空间或全局作用域中相同名称的冲突。 文…

实现将Nginx的每个网站配置单独的访问日志

一、问题描述 Nginx默认的访问日志是不会区分哪个网站有哪些日志的,全部糅杂在一起;如果需要哪个网站有哪些访问日志记录,还需要将访问日志下载下来后筛选,比较麻烦;希望将每个网站对应的日志能够单独记录到对应的日志文件里面,方便排查和管理。 # 进入Nginx默认的日志文…

为什么Vim是程序员最喜欢的编辑器之一

简介 Vim,全称Vi IMproved,是一种高度可定制、功能强大的文本编辑器。自其诞生以来,它以高效、快速和灵活的特点深受程序员喜爱。无论是处理简单的文本文件还是复杂的代码项目,Vim都能提供卓越的编辑体验。许多资深程序员甚至称其…