UML建模图文详解教程07——活动图


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl
  • 本文参考资料:《UML面向对象分析、建模与设计(第2版)》吕云翔,赵天宇 著

在这里插入图片描述

活动图概述

活动图(activity diagram)是 UML中一种重要的用于表达系统动态特性的图。活动图的作用是描述一系列具体动态过程的执行逻辑,展现活动和活动之间转移的控制流,并且它采用一种着重逻辑过程的方式来叙述。

具体地说,活动图的表达能力包括了逻辑判断、分支甚至并发。所以活动图的表达能力要远高于流程图。流程图仅仅展示一个固定的过程,而活动图可以展示并发和控制分支,并且可以对活动与活动之间信息的流动进行建模。

活动图的组成元素

请务必熟悉并掌握以下核心知识点。

动作和活动节点

动作代表一个原子操作,操作可能是任何合法的行为。在活动图中,动作使用一个左右两端为圆弧的矩形框来表示,在这个图形内部加人该动作的描述。

在这里插入图片描述
活动节点是一系列动作,主要用于实现动作序列的简化和动作图的嵌套。活动节点在图中的表达方式和动作相同,它们之间的区分需要依靠编辑工具或附加说明来完成。

活动节点本身可以代表一个复杂过程,它的控制流由其他的活动节点和动作组成,如需要可以另附其他的活动图来表达活动节点的控制流。

开始和终止

活动图中的开始和终止是两个标记符号。开始标记注明了业务流程的起始位置,使用一个实心黑色圆点表示。终止标记注明了业务流程的可能结束位置,使用一个与开始标记等大的、内有一个黑色实心小圆点的空心圆圈来表示。

在这里插入图片描述

控制流

控制流是活动图中用于标示控制路径的一种符号。它负责当一个动作或活动节点执行完毕后,将执行主体从当前已完毕的节点转移到过程的下一个动作或动作节点。控制流从活动图的开始标记开始运行,经过顺序、分支等结构引导着各个动作的连续执行。

在 UMI中,控制流使用一条从前一个动作(或活动节点)出发指向下一个动作(或活动节点)的简单箭头表示。

在这里插入图片描述

判断节点

判断节点是活动图中进行逻辑判断、并创造分支的一种方法。判断节点具有一个进入控制流和至少两个导出控制流(从当前节点出发指向其他动作或节点的流称为导出流或离开流),判断节点的前一个动作应当是判断型动作。

在活动图中判断节点用一个菱形来表示。并且作为判断节点,这个菱形有且仅有一个指向它的箭头,有至少两个由它出发指向其他动作或活动节点的箭头。

在这里插入图片描述

合并节点

合并节点将多个控制流进行合并,并统一导出到同一个离开控制流。在活动图中合并节点也同样使用一个菱形来表示。作为合并节点,这个菱形应该至少有两个指向它的箭头,有且仅有一个由它出发指向其他动作或活动节点的箭头。

在这里插入图片描述

泳道

活动图中的元素可以使用泳道来分组。泳道是将活动中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动由同一个对象来执行。在业务模型中,每个泳道的负责对象可能是一个单位或一个部门。例如,在一次考试的全过程中,有如下过程:

  • (1)老师出卷
  • (2) 学生作答
  • (3) 老师批卷
  • (4)老师打印成绩单
  • (5)学生领取成绩单

在这个过程中,可以发现每个过程的主语都是该动作的执行者,那么在这个简单的过程中可以分“老师”和“学生”两个泳道,把动作与负责执行它的对象用这种形如二维表的方式进行关联。

在这里插入图片描述

分叉节点与结合节点

在活动图中,我们使用分叉节点和结合节点来表示并发。

分叉节点是从线性流程进入并发过程的过渡节点,它拥有一个进入控制流和多个离开控制流。

结合节点是将多个并发控制流收束回同一流程的节点标记。

在这里插入图片描述

航空购票系统活动图

在此,以航空购票系统的购买机票用例为例绘制活动图;图示如下:

在这里插入图片描述

确定泳道

开始创建活动图时,需要首先确定参与的对象,即确定活动图有几个泳道。泳道说明了活动是由该对象执行的。在该案例中,我们将其粗粒度地分为用户和系统两个泳道。

与创建用例图类似,请在Model中创建活动图;图示如下:

在这里插入图片描述
点击确定后,图示如下:

在这里插入图片描述
选中活动图,右键单击选择添加图,再选择UML Behavioral和Activity;图示如下:

在这里插入图片描述
单击确定后,图示如下:

在这里插入图片描述
首先,将工具箱中的泳道Partition拖拽至绘图区添加用户泳道;图示如下:

在这里插入图片描述
点击确定,图示如下:

在这里插入图片描述
调整泳道方向,图示如下:

在这里插入图片描述
调整泳道方向和长度;图示如下:

在这里插入图片描述
类似地,添加系统泳道并将其与用户泳道对齐;图示如下:

在这里插入图片描述

按照逻辑顺序完成活动图

在添加完泳道后,需要梳理整个控制流的过程:用户首先选择购票的航班,此时如果该航班已无余票,则系统提示该航班已无票,用户重新选择航班;如果航班有余票,则系统请求用户确认购票信息,此时用户可以取消购票也可以确认购票并支付,支付完成后系统修。

首先,将Initial拖动至用户泳道作为起点;图示如下:

在这里插入图片描述
点击确定后,图示如下:
在这里插入图片描述
将Activity拖动至用户泳道作为选择航班的活动;图示如下:

在这里插入图片描述
点击确定后,可以调整活动框大小;图示如下:

在这里插入图片描述
将Decision拖动至系统泳道作为判断节点;图示如下:
在这里插入图片描述
单击确定后图示如下:

在这里插入图片描述
类似地,在系统泳道添加两个活动即提示航班无余票和确认机票信息;图示如下:

在这里插入图片描述

将Decision拖动至用户泳道作为判断节点;图示如下:

在这里插入图片描述

将Final拖动至系统泳道作为第一个终止;图示如下:

在这里插入图片描述

单击确定;图示如下:

在这里插入图片描述
将Activity拖动至用户泳道作为支付活动;图示如下:

在这里插入图片描述
将工具箱中的Fork/Join拖动至系统泳道作为分叉节点;图示如下:

在这里插入图片描述
单击确定后调整分叉节点长度;图示如下:

在这里插入图片描述
类似地,在系统泳道中的分叉节点添加修改机票状态活动和生成订票记录活动;图示如下:

在这里插入图片描述
类似地,将工具箱中的Fork/Join拖动至系统泳道作为结合节点;图示如下:

在这里插入图片描述

最后,将Final拖动至系统泳道作为第二个终止;图示如下:

在这里插入图片描述
接下来,我们依据流程使用工具箱中Activity Relationships中的Control Flow连线;图示如下:

在这里插入图片描述
在目前的活动图中,还缺乏判断节点的说明;图示如下:

在这里插入图片描述
请双击连线添加说明文本;图示如下:
在这里插入图片描述

单击确定后并调整文本位置;图示如下:

在这里插入图片描述

类似地,添加有余票的文本说明;图示如下:

在这里插入图片描述

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

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

相关文章

SSM企业风向管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 企业风向管理系统是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库 ,系统主要采用B/…

LangChain 9 模型Model I/O 聊天提示词ChatPromptTemplate, 少量样本提示词FewShotPrompt

LangChain系列文章 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索I…

番外篇之矩阵运算

矩阵的运算代码&#xff08;加减乘除&#xff09;&#xff08;内有注释&#xff09; #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #define ROW 10 //定义行 #define COL 10 //定义列 //设置全局变量A矩阵的m代表实际矩阵的行数&#xff0c;n代表实际矩阵的列…

ASO优化之如何测试应用的屏幕截图

截取屏幕截图并上传到应用商店后&#xff0c;我们需要对其进行测试和优化&#xff0c;从而来获得更高的转化率&#xff0c;精美的图片有助于提高应用在商店的安装率。 1、定义目标受众。 战略性地决定测试哪些目标受众&#xff0c;可以通过年龄、性别、地点、兴趣等来定义我们…

[黑马程序员SpringBoot2]——原理篇1

目录&#xff1a; bean的加载方式(—)bean的加载方式(二)bean的加载方式(三)FactoryBeanproxyBeanMethod属性bean的加载方式(四)bean的加载方式(五)bean的加载方式(六)bean的加载方式(七)bean的加载方式(八)bean加载控制&#xff08;编程式)bean加载控制&#xff08;注解式)be…

[ZJCTF 2019]NiZhuanSiWei

虽然有include函数但我们无法直接包含flag因为对file进行了过滤&#xff0c;又看见有反序列化的入口&#xff0c;只是并没有发现可利用的方法&#xff0c;但题目有提示所以尝试将其调出来 php伪协议写入内容 看到file_get_contents函数想到使用data协议&#xff0c;去封装一个…

Hive内置表生成函数

Hive内置UDTF 1、UDF、UDAF、UDTF简介2、Hive内置UDTF 1、UDF、UDAF、UDTF简介 在Hive中&#xff0c;所有的运算符和用户定义函数&#xff0c;包括用户定义的和内置的&#xff0c;统称为UDF&#xff08;User-Defined Functions&#xff09;。如下图所示&#xff1a; UDF官方文档…

远程安全访问JumpServer:使用cpolar内网穿透搭建固定公网地址

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…

Python潮流周刊:Twitter 的强敌 Threads 是用 Python 开发的!

&#x1f984;文章&教程 1、聊一聊 Python 和 Golang 的垃圾回收 常见的垃圾回收算法有哪些&#xff0c;它们的优缺点是什么&#xff1f;Python 的垃圾回收机制由什么组成&#xff0c;如何解决内存泄漏问题&#xff1f;Golang 的垃圾回收机制又是怎样的&#xff0c;如何解…

新式的拉式膜片弹簧离合器设计机械设计CAD

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;离合器 获取完整论文报告工程源文件 减震弹簧 摩擦片 膜片弹簧 压盘 轴 扭转减震器 从动盘 离合器 离合器的结构设计 为了达到计划书所给的数据要求&#xff0c;设计时应根据车型的类别、使用要求、制造条件&#xff0c;…

C#,《小白学程序》第四课:数学计算,总和与平均值

程序是 数据 计算 显示。 1 文本格式 /// <summary> /// 《小白学程序》第四课&#xff1a;数学计算 /// 这节课超级简单&#xff0c;就是计算成绩的平均值&#xff08;平均分&#xff09; /// 这个是老师们经常做的一件事。 /// </summary> /// <param name&…

洛谷P1049装箱问题 ————递归+剪枝+回溯

没没没没没没没没没错&#xff0c;又是一道简单的递归&#xff0c;只不过加了剪枝&#xff0c;我已经不想再多说&#xff0c;这道题写了一开始写了普通深搜&#xff0c;然后tle了一个点&#xff0c;后面改成剪枝&#xff0c;就ac了&#xff0c;虽然数据很水&#xff0c;但是不妨…

ruoyi-plus-vue docker 部署

本文以 ruoyi-vue-plus 5.x docker 部署为基础 安装虚拟机 部署文档 安装docker 安装docker 安装docker-compose 配置idea环境 上传 /doicker 文件夹 到服务器&#xff1b;赋值 777权限 chmod -R 777 /docker idea构建 jar 包 利用 idea 构建镜像; 创建基础服务 docker…

力扣 3. 无重复字符的最长子串

题目 题解 方法 public static int lengthOfLongestSubstring(String s) {HashSet<Character> charSet new HashSet<Character>();int i 0,l0,max0;for (int j 0; j < s.length(); j) {while (charSet.contains(s.charAt(j))) {charSet.remove(s.charAt(l…

【JavaEE初阶】Thread 类及常见方法、线程的状态

目录 1、Thread 类及常见方法 1.1 Thread 的常见构造方法 1.2 Thread 的几个常见属性 1.3 启动⼀个线程 - start() 1.4 中断⼀个线程 1.5 等待⼀个线程 - join() 1.6 获取当前线程引用 1.7 休眠当前线程 2、线程的状态 2.1 观察线程的所有状态 2.2 线程状态和状…

硬盘上不小心删除了重要文档?试试这6个成功率高的数据恢复工具!

您是否不小心重新格式化了存储卡或删除了想要保留的照片&#xff1f;最好的照片恢复软件可以提供帮助&#xff01;如果您使用数码相机拍摄的时间足够长&#xff0c;那么当您错误地删除了想要保留的图像、重新格式化了错误的 SD 卡&#xff0c;或者发现您的珍贵照片由于某种莫名…

CFO的GenAI应用指南

CFO应该采取的最重要行动是识别最大的创造价值的机会&#xff0c;然后确保他们获得所需的资金和其他资源。GenAI拥有成为革命性技术的潜力&#xff0c;但它不会改变金融和经济学的基本原则&#xff1a;一家公司必须产生高于资本成本的回报。 技术改变了每一项业务&#xff0c;往…

分布式锁,分布式锁应该具备哪些条件,分布式锁的实现方式有:基于Zookeeper实现、Redis实现、数据库实现

文章目录 分布式锁0-1分布式锁--包含CAP理论模型概述分布式锁&#xff1a;分布式锁应该具备哪些条件&#xff1a;分布式锁的业务场景&#xff1a; 分布式锁的实现方式有&#xff1a;基于Zookeeper - 分布式锁实现思想优缺点基于Redis - 分布式锁实现思想实现思想的具体步骤&…

【LeetCode 热题 HOT 100】题解笔记 —— Day01

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

企业海外分部,如何实现安全稳定的跨境网络互连?

如今&#xff0c;众多企业广泛采取数字化业务系统&#xff0c;如OA、ERP及CRM等&#xff0c;来提升其业务运营效率。同时&#xff0c;私有云与公有云混合架构也逐渐普及化。 具体来说&#xff0c;很多企业选择将研发系统部署在公司本地的私有云环境&#xff0c;以此确保数据安全…