活动图的介绍
活动图可以看成是面向对象版的流程图,它是一种行为型模型图,主要用于表达系统某个功能的流程。活动图的作用是描述一系列具体动态过程的执行逻辑,展现活动和活动之间的转移的控制流,并且它采用了一种着重逻辑过程的方式来叙述。
主要元素
活动图主要动作、活动、动作流、分支与合并、分叉与汇合、泳道和对象流等元素。
动作和活动
一、动作代表一个原子操作,操作可能是任何合法的行为。动作可以是并且不限于:创建或删除对象、发送消息、调用接口、甚至数学运算以及返回表达式的求值结果。如下图所示就是各种类型的动作(Action):
- 普通的原子操作(Atomic),
- 调用接口(Call Behavior),
- 调用操作(Call Operation),
- 接受事件(Accept Event),
- 接受时间事件(Accept Time Event),
- 发送信号(Send Signal)
- 输入变量(Write Variable)
- 返回表达式的求值结果(Value Specification)
- 创建对象(Create Object)
- 删除对象(Destroy Object)
- 其他(Other)
二、活动节点 活动节点是一系列动作,主要用于实现动作序列的简化和动作图的嵌套。活动节点在图例上的表达方式和动作相同,其图标表示如下图所示:
开始和终止
活动图中的开始和终止是两个标记符号,分别标记了业务流程的起始位置和结束位置。活动图中有且仅有一个开始标记,一般至少有一个结束标记(死循环的情况下可能没有结束标记)。
- 开始的图标
2. 结束的图标
控制流
控制流是活动图中用于标示控制路径的一种符号,它负责当一个动作或活动节点执行完毕后,将执行主体从当前已完毕的节点转移到下一个动作或者活动节点。控制流从活动图的开始标记开始运行,经过顺序、分支等结构引导者各个动作的连续执行。
判断节点
判断节点是活动图中进行逻辑判断,并创造分支的一种方法。它有一个进入控制流和至少两个导出控制流。
判断节点具有多个导出流,对于每条导出流而言,应当在表示该控制流的箭头上附加控制条件。
分叉(fork)和汇合(join)
分叉节点是从线性流程进入并发过程的过渡节点,它拥有一个进行控制流和多个离开控制流。分叉节点的所有离开流程是并发关系,即分叉节点使执行过程进入多个动作并发的状态。汇合节点是将多个并发控制流收束回同一流程的节点标记,功能上与合并节点类似。结合节点的各个进入控制流间具有并发关系,它们在系统中同时运行。
泳道
泳道是将活动图中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动由同一个对象来执行。除了以上的对线性流程进行分区以外,使用泳道表示法还可以更清晰地表示并发。案例:在线填写请假条,三天以下,直接上级审核即可,三天以上需要总监同意和人事批准,以上情况都通过,即可请假。
发送信号与接收信号
发送信号一种操作,可以将消息或信号发送给另一个活动,或同一活动中的并发线程。消息的类型和内容可以通过操作的标题或其他注释中指定的信息看出。
活动图的建模技术
对业务流程建模
- 选择一个将要描述的重要过程,过程中尽量涉及数量少但是关键的对象或参与者,将无关或关联很小的对象排除在外。
- 在总体业务流程中提取关键的动作或活动节点,并且将他们与对象或者参与者相对应;若发现有些动作无法对应,则考虑动作是否在这个流程中起关键作用,或者是否遗漏了某些对象或参与者。
- 规定初始状态:确定过程可能的结束位置,为活动图添加开始和结束节点。
- 从业务流程的开始节点开始,把过程中发生的动作按事件顺序排列,依次把这些动作添加到活动图中。
- 把局部的过于复杂的动作序列加以总结,绘制成一个活动节点;如果需要,把这个动作序列使用另外的活动图进行建模。
- 找出连接这些动作和活动节点的控制流,并且准确找到过程中的分支、分叉、合并与结合节点。
- 如果业务流程中有一些关键对象的值或状态需要加以描述,使用对象流添加这些对象在某些动作或活动节点前后的状态描述。
对用例交互建模
- 选择概念用例--即从系统对客户提供的各种服务中确定出一个关键业务,这个关键业务可能是在多个相同或者不同的情况下反复出现,或者是系统需要提供的一个关键服务或进行的关键操作。
- 对于当前选择的用例,通过事件流进行顺序叙述,并找出所有的参与者主动动作,把这些动作整理成动作或或活动节点。
- 把参与者和系统划分为两个泳道,如果有除了主参与者以外的其他参与者,也为它们分别划分泳道。
- 把活动节点纵向按照事件发生顺序,横向按照参与角色和系统角色对应填入活动图中。
综合例子
总结
本文详细介绍了UML活动图的信息。