提示:大家可以参考我的状态图博客
UML-活动图
一、活动图的基本概念
- 活动图是 UML 用于对系统的动态行为建模的另一种常用工具,它描述活动的顺序,展现从一个活动到另一个活动的控制流。
- 活动图本质上是一种流程图。活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。
- 活动图在用例图之后提供了系统分析种对系统的进一步充分描述。因此,活动图可以用来为用例建模工作流,更可以理解为用例图具体的细化。
- 活动图的主要元素:
1.开始状态和结束状态
- 一个活动图中只能有一个开始状态,但可以有多个结束状态。
2.动作状态和活动状态(活动)
- 活动图中的活动叫做活动状态。活动图中有活动状态和动作状态,动作状态是活动状态的特例。
- 对象的动作状态是活动图的最小单元的构造快,是指执行原子的,不可中断的动作,并在此动作完成后通过完成转换转向另一个状态。
- 活动也称为动作状态(Action State),是活动图的核心符号,它表示工作流过程中命令的执行或活动的进行。
3.分支与合并
- 选择其中一种情况执行。
4.分叉与合并
- 分叉是用于将一个控制流分为两个或多个并发运行的分支。
- 汇合与分叉相反,代表两个或多个并发控制流同步发生,它将两个或多个并发控制流合并到一起,形成一个单向控制流。
5.活动转换
(1)转移
- 一个活动图有很多动作或者活动状态,活动图通常开始于初始状态,然后自动转换到活动图的第一个动作状态,一旦该状态的动作完成后,控制就会不加延迟地转换到下一个活动状态或者动作状态。所有活动之间的转换称为转移。转移不断重复进行,直到遇到一个分支或者终止状态为止。
- 转移用来显示从某个活动到另一个活动或状态的控制流。
- 转移的标记符是执行控制流方向的开放的箭头。
(2)判定
- 一个活动最终总是要到达某一个点,如果一个活动可能引起两个以上不同的不同路径,并且这些路径是互斥的,此时就需要使用判断来实现。
- 在 UML 中,判定有两种表示方式:
- ①从一个活动直接引出可能的多条路径。
- ②将活动转移到一个菱形图标,然后从这个菱形的图标再引出可能的路径。
- 注意:无论用那种方式,都必须在相关的路径附近指明标识执行该路径的条件,并且条件表达式要用中括号括起来。
6.泳道
- 元素的活动图将元素的行为顺序表现出来,但元素的行为并不是没有交互的,活动图种表现不出这种交互。
- UML 使用泳道来解决不同元素的交互问题。泳道是一个有着头部的矩形区域,在泳道内部放置元素的行为和转移,一个泳道代表一组行为,指定了负责对象的一组行为。
- 泳道将活动图中的活动划分为若干个组,并把每一组指定给负责这组活动的人或事物,即与活动图交互的对象。
二、活动图的例图练习
1.例题1
- 销售合同签订后要进行信息核对。如果发现错误则终止合同;如果没有错误,则要核对货物清单确定是否有货;还要核对付款单确定对方是否已经付款,只有这两项都完成了,才可以发货。如果无货或者对方还没付款,也会终止合同。根据以上描述绘制一张活动图。
2.例题2
- 客户首先在查看和浏览商品,一旦确定要购买的物品后,就通知销售员。这时销售员为购买的物品,开出订单,并通知仓管员提取物品。仓管员则根据定单,提取货物,再把订单交给销售员。这时,顾客查看自己的订单,确认货物,而销售员则开始计算货款。一旦双方都完成后,顾客就付款,提货,销售员则将订单保存下来。
三、总结
- 活动图和状态图的区别:
- 状态图:用来描述一个特定对象 的所有可能状态 及其引起状态转移的事件 。大多数面向对象技术都用状态图表示单个对象在其生命周期中的行为。一个状态图包括一系列的状态及状态之间的转移。
- 活动图:它既可用来描述操作的行为,也可以描述用例和对象内部的工作过程。活动图是由状态图变化而来的,它们各自用于不同的目的。活动图依据对象状态的变化来捕获动作与动作的结果。活动图中一个活动束后将立即进入下一个活动。