【PlantUML系列】序列图(二)

news2025/1/14 9:52:04

目录

一、参与者

二、消息交互顺序

三、其他技巧

3.1 改变参与者的顺序

3.2 使用 as 重命名参与者

3.3 注释

3.4 页眉和页脚


一、参与者

使用 participantactorboundarycontrolentity 和 database 等关键字来定义不同类型的参与者。例如:

  • Actor(参与者):代表与系统交互的外部用户或外部系统。在用例图中,参与者通常用来表示系统的用户或利益相关者。在序列图中,参与者可以表示系统的外部用户或系统。

  • Boundary(边界):代表系统的边界,通常用来表示系统的控制范围。在用例图中,边界用来定义系统的责任和范围。在序列图中,边界可以用来表示系统的控制层,例如用户界面或系统的外部接口。

  • Control(控制):代表系统的控制结构,通常用来表示系统的内部控制机制或流程。在序列图中,控制可以用来表示系统的内部组件,如控制器或处理器。

  • Entity(实体):代表系统中的存储机制或持久化数据。在序列图中,实体通常用来表示存储数据的组件,如数据库或数据存储系统。

  • Database(数据库):代表系统中的数据库或数据存储。在序列图中,数据库用来表示系统中的持久化存储,如关系型数据库或非关系型数据库。

  • Participant(参与者):这个术语在UML中并不常用,但在PlantUML中,它通常用来表示序列图中的一个角色或对象,可以是人、系统、设备或其他任何可以发送或接收消息的实体。

@startuml
actor User
participant "浏览器" as Browser
participant "服务端" as Server #orange
@enduml

二、消息交互顺序

  • 同步消息(Synchronous Message):使用实线箭头(->)表示同步消息,发送者在发送消息后会等待接收者的响应。
  • 异步消息(Asynchronous Message):使用虚线箭头(->>)表示异步消息,发送者在发送消息后不会等待接收者的响应。
  • 返回消息(Return Message):使用带有实心圆点的箭头(--)表示返回消息,通常用于表示方法调用的返回。
  • 活条(Activation Bar):当对象执行操作时,会在其生命线上显示激活条,表示对象在这段时间内是活跃的。
  • 自关联消息(Self-Message):当对象需要调用自身的另一个方法时,可以使用自关联消息。
  • 创建和销毁消息:使用 new 关键字表示创建新对象,使用 destroy 关键字表示销毁对象。
  • 组合片段(Combined Fragments):使用 altoptlooppar 等关键字来表示条件、选项、循环和并行操作。
    • alt(alternative,选择):表示一个选择点,有两个或多个选项,但只有一个会发生。这类似于流程图中的“决策”或“分支”。在序列图中,alt 用来表示不同的条件路径,只有其中一个分支会被执行。
    • opt(optional,可选):表示一个可选的行为,即这个行为可能发生,也可能不发生。这可以用来表示某个操作是可选的,不一定在每次交互中都会出现。
    • loop(loop,循环):表示一个行为会重复执行,直到某个条件被满足。这可以用来表示循环操作,如在一定条件下重复发送消息。
    • par(parallel,并行):表示两个或多个操作是并行发生的,即它们会同时开始,并且可能同时结束。这可以用来表示并行处理的情况。
@startuml
' 定义参与者
actor User as 用户
participant A as "组件A"
participant B as "组件B"
participant C as "组件C"

' 同步消息
用户 -> A: 请求登录 (同步消息)

' 异步消息
A ->> B: 发送验证请求 (异步消息)

' 激活条表示A开始处理请求
activate A
A -> A: 内部处理
deactivate A

' 返回消息
B --> A: 验证结果

' 自关联消息
activate B
B -> B: 检查权限
deactivate B

' 创建消息
A -> C: <<create>> 创建会话
activate C
C -> A: 会话创建成功

' alt 表示选择,只有其中一个分支会被执行
alt 用户权限足够
  A -> B: 请求资源
else 用户权限不足
  A -> User: 显示错误
end

' opt 表示可选行为,可能发生也可能不发生
opt 用户选择记住密码
  A -> B: 保存登录状态
end

' loop 表示循环,直到满足条件
loop 每次请求
  A -> B: 请求数据
  B -> A: 返回数据
end

' par 表示并行操作,两个操作会同时开始
par 数据处理
  A -> B: 处理数据1
  A -> C: 处理数据2
end

' 销毁消息
A -> C: <<destroy>> 销毁会话
deactivate C

' 交互结束
User <-- A: 登录完成

@enduml

三、其他技巧

3.1 改变参与者的顺序

使用 order 关键字可以改变参与者的顺序,order 的顺序越小越靠前。例如:

@startuml sequence_order
' 通过order定义参与者顺序
participant Last order 30
participant Middle order 20
participant First order 10

' 交互消息
First -> Middle: 第一个参与者发送消息
Middle -> Last: 中间参与者发送消息
Last -> First: 最后一个参与者发送消息
@enduml

3.2 使用 as 重命名参与者

使用 as 关键字可以为参与者指定一个别名,使得时序图更加清晰。例如:

@startuml sequence_as
actor Bob #red
participant Alice
participant "I have a really\nlong name" as L #99FF99
Alice->Bob: Authentication Request
Bob->Alice: Authentication Response
Bob->L: Log transaction
@enduml

3.3 注释

使用 note 关键字:可以用来添加注释,它可以指定注释的放置位置,如左侧(left)、右侧(right)、上方(over)或下方(note)。

使用 ! 符号! 符号用于添加注释,这些注释不会在生成的图表中显示。

使用 * 符号* 符号也可以用来添加注释,这些注释同样不会在生成的图表中显示。

使用 $$ 符号$$ 符号用于添加多行注释,这些注释不会在生成的图表中显示。

使用 left to right directionright to left direction这些关键字可以用来设置序列图的布局方向,虽然它们不是注释,但可以用来组织图表的显示方式。

@startuml

' 使用note关键字添加注释
note right of User: 用户通过Web浏览器进行操作
note left of AppServer: 应用服务器处理业务逻辑
note over Server, Database: 服务器和数据库之间的交互

' 使用!符号添加不会显示在图表中的注释
! 这是一段开发注释,用于说明服务器和应用服务器之间的通信协议

' 使用*符号添加不会显示在图表中的注释
* 这是一段星号注释,用于提醒开发者注意某些事项

' 使用$$符号添加多行注释
$$
这是一段多行注释,
可以跨越多行,
用于详细说明复杂的交互过程。
$$

@enduml

3.4 页眉和页脚

使用 header 和 footer 添加页眉和页脚。例如:

@startuml
skinparam header {
  HeaderFontSize 18
  HeaderFontStyle Bold
  HeaderFontColor #663300
  HeaderBackgroundColor #FFFFCC
}
skinparam footer {
  FooterFontSize 12
  FooterFontStyle Italic
  FooterFontColor #330066
  FooterBackgroundColor #CCFFFF
}

header
  <b>Page Header</b>
end header

footer
  <i>Page Footer</i>
end footer

title Simple Sequence Diagram
actor User as U
participant "Web Server" as WS
participant "Database" as DB

U -> WS: Request
WS -> DB: Query
DB --> WS: Results
WS --> U: Response
@enduml

四、示例

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

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

相关文章

如何利用内链策略提升网站的整体权重?

内链是谷歌SEO中常常被低估的部分&#xff0c;实际上&#xff0c;合理的内链策略不仅能帮助提升页面间的关联性&#xff0c;还可以增强网站的整体权重。通过正确的内链布局&#xff0c;用户可以更流畅地浏览你的网站&#xff0c;谷歌爬虫也能更快地抓取到更多页面&#xff0c;有…

zotero中pdf-translate插件和其他插件的安装

1.工具–》插件 2.找插件 3.点击之后看到一堆插件 4.找到需要的&#xff0c;例如pdf-translate 5.点击进入&#xff0c;需要看一下md文档了解下&#xff0c;其实最重要的就是找到特有的(.xpi file) 6.点击刚刚的蓝色链接 7.下载并保存xpi文件 8.回到zotero&#xff0c;安装并使…

Datax遇到的坑

公司数据中台产品&#xff0c;要使用airflow调datax任务实现离线作业的同步。 一、python版本问题 执行python ..datax.py .json时 报错 在运行 Python 脚本时&#xff0c;代码中使用了 Python 2 的 print语法&#xff0c;当前的环境是 Python 3。在 Python 3 中&#xff0…

容易被遗忘的测试用例

网络服务器启动了吗&#xff1f;应用程序服务器启动了吗&#xff1f;数据库上线了吗&#xff1f;测试数据是否预先加载到数据库中&#xff1f;每当我们准备开始测试应用程序时&#xff0c;一切都应该已经准备妥当。 然而&#xff0c;当测试开始后&#xff0c;我们可能会漏掉一些…

机器学习与深度学习-2-Softmax回归从零开始实现

机器学习与深度学习-2-Softmax回归从零开始实现 1 前言 内容来源于沐神的《动手学习深度学习》课程&#xff0c;本篇博客对于Softmax回归从零开始实现进行重述&#xff0c;依旧是根据Python编程的PEP8规范&#xff0c;将沐神的template代码进行简单的修改。近期有点懒散哈哈哈…

文本生成类(机器翻译)系统评估

在机器翻译任务中常用评价指标&#xff1a;BLEU、ROGUE、METEOR、PPL。 这些指标的缺点&#xff1a;只能反应模型输出是否类似于测试文本。 BLUE&#xff08;Bilingual Evaluation Understudy&#xff09;&#xff1a;是用于评估模型生成的句子(candidate)和实际句子(referen…

保护数字资产:iOS 加固在当前安全环境中的重要性

随着互联网和手机的发展&#xff0c;APP在我们的日常生活中已经变得无处不在&#xff0c;各大平台的应用程序成为了黑客攻击的主要目标。尤其在 2024 年&#xff0c;随着数据泄露和隐私侵犯事件的频发&#xff0c;手机应用的安全问题再次成为公众关注的焦点。近期&#xff0c;多…

基于HTML和CSS的校园网页设计与实现

摘要 随着计算机、互联网与通信技术的进步&#xff0c;Internet在人们的学习、工作和生活中的地位也变得越来越高&#xff0c;校园网站已经成为学校与学生&#xff0c;学生与学生之间交流沟通的重要平台&#xff0c;对同学了解学校内发生的各种事情起到了重要的作用。学校网站…

Secured Finance 推出 TVL 激励计划以及基于 FIL 的稳定币

Secured Finance 是新一代 DeFi 2.0 协议&#xff0c;其正在推出基于 FIL 的稳定币、固定收益市场以及具有吸引力的 TVL 激励计划&#xff0c;以助力 Filecoin 构建更强大的去中心化金融生态体系&#xff0c;并为 2025 年初 Secured Finance 协议代币的推出铺平道路。Secure Fi…

WebRover :一个功能强大的 Python 库,用于从 Web 内容生成高质量的数据集,专为训练大型语言模型和 AI 应用程序而设计。

2024-11-30 &#xff0c;由Area-25团队开发的一个专门用于生成高质量网络内容数据集的Python库。该数据集旨在为大型语言模型&#xff08;LLM&#xff09;和人工智能应用的训练提供丰富的数据资源。 数据集地址&#xff1a;WebRover Dataset|自然语言处理数据集|AI模型训练数据…

基于ZYNQ-7000系列的FPGA学习笔记7——按键控制蜂鸣器(模块化编写)

基于ZYNQ-7000系列的FPGA学习笔记7——按键控制蜂鸣器&#xff08;模块化编写&#xff09; 1. 实验要求2. 功能分析3. 模块设计4. 波形图4.1 按键消抖模块4.2 按键控制蜂鸣器模块 5.代码编写5.1 rtl代码5.2 测试代码 6. 代码仿真7. 添加约束文件并分析综合 在上期的内容中&…

Android 分词的两种方式

前言&#xff1a; 本文分别介绍了原生和三方(Jieba)两种分词方式的使用和注意事项 1、安卓原生BreakIterator分词 比较简单&#xff0c;但是效果不太行 /*** 功能&#xff1a;原生分词* 参数&#xff1a;text&#xff1a;需要分词的语句* 返回值&#xff1a;return&#xf…

python之Django连接数据库

文章目录 连接Mysql数据库安装Mysql驱动配置数据库信息明确连接驱动定义模型在模型下的models.py中定义表对象在settings.py 中找到INSTALLED_APPS添加创建的模型 测试testdb.py中写增删改查操作urls.py添加请求路径启动项目进行测试 连接Mysql数据库 安装Mysql驱动 pip inst…

JavaWeb学习(1)(同步或异步请求、依赖jQuery简单实现Ajax技术)

目录 一、Web的基本流程与页面局部刷新。 &#xff08;1&#xff09;web开发时基本流程。 &#xff08;2&#xff09;页面的"全局刷新"与"局部刷新"。 二、Ajax技术。 &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;基本特点。 1、与服务…

spark sql 环境安装,java 默认路径和 安装配置!

yum安装java 查看默认路径 update-alternatives --config java # Java 环境变量 export JAVA_HOME/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/jreexport PATH$JAVA_HOME/bin:$PATH# Spark 环境变量 export SPARK_HOME/home/vagrant/soft/sparkexport PATH…

网络层总结

网络层任务&#xff1a; 分组 从源主机 经多个网络/多段链路 传输到目的主机 两种重要的功能&#xff1a; 分组转发、 路由选择 网络层向其上层提供的两种服务 —— 面向连接的虚电路服务、无连接的数据报服务 面向连接的虚电路服务&#xff1a; 可靠通…

python学习笔记15 python中的类

上一篇我们介绍了python中的库 &#xff0c;学习了一些常见的内置库。详细内容可点击–>python学习笔记14 python中的库&#xff0c;常见的内置库&#xff08;random、hashlib、json、时间、os&#xff09; 这一篇我们来看一下python中的类 创建一个类 class 类的名称():de…

MySQL数据集成到广东省追溯平台的销售信息同步方案

销售信息同步--外购上报流程2&#xff1a;MySQL数据集成到广东省特殊食品电子追溯平台 在现代数据驱动的业务环境中&#xff0c;确保销售信息的准确性和及时性至关重要。本文将分享一个具体的技术案例&#xff0c;展示如何通过轻易云数据集成平台&#xff0c;将MySQL中的销售信…

【推荐算法】推荐系统的评估

这篇文章是笔者阅读《深度学习推荐系统》第五章推荐系统的评估的学习笔记&#xff0c;在原文的基础上增加了自己的理解以及内容的补充&#xff0c;在未来的日子里会不断完善这篇文章的相关工作。 文章目录 离线评估划分数据集方法客观评价指标P-R曲线ROC/AUCmAPNDCG A/B 测试分…

移植NIOS10.1工程,NIOS10.1路径修改

移植NIOS10.1工程&#xff0c;NIOS10.1路径修改 因工程的需要&#xff0c;使用的NIOS10.1&#xff0c;比较老&#xff0c;这个版本的路径是使用的绝对路径&#xff0c;导致移植工程市回报路径的错误&#xff0c;在13.1之后改为了相对路径&#xff0c;不存在这个问题。 需要修…