简介
活动图描述从一个活动到另一个活动的执行顺序、约束条件、引用对象及状态结果等方面的控制流,适用于对业务用例、工作流程或程序实现建模。
活动图建模步骤
- 确定活动图的范围和边界,对哪些工作流、哪些活动、哪些对象建模
- 确定工作流的开始状态和结束状态
- 确定工作流的各个活动、活动之间的转换、活动涉及的对象
- 确定工作流中各个活动对应的分支与合并、分叉与汇合关系
- 找出活动图中的复杂活动集,用相应的子活动图展开描绘
- 找出活动图中多次重复的活动,抽象为扩展区域
活动图中的主要元素
活动图的核心符号是活动。
- 活动(Actions):待执行的动作,操作或命令。用圆角矩形标识
- 状态(State):一系列操作开始处或结束处的标识,称为开始状态和结束状态。与状态图中相同
- 开始状态(Start State):起始点。用实心圆点表示
- 结束状态(End State):终止点。用空心圆点表示
- 转移(Transition):活动之间,或状态与活动之间的转换。用带箭头的直线标识
- 判断(Decision):对活动或状态进行判断,然后选择下一步活动。使用空心菱形标识,与状态图中判定的图标相同
分支与合并(Decision and Merge):分支表示将单个执行路径分成两个或两个以上的分路径,每个分路径都有相应的前置条件和执行结果
合并是指两个或两个以上的路径在该处汇集
- 同步条(Synchronization Bar):用于并行执行、成对出现。用加粗线段标识
并发(concurrency):在同一段时间内,有两个或两个以上的活动被执行
分叉与汇合(Fork and Join):分叉表示将一个控制流分成两个或两个以上并发执行的分支;汇合表示并发分支该处汇集同步
- 对象(Objects):。用矩形框+带下划线的对象名标识,与类图中对象表示法一致
- 对象流(Object Flows):将活动涉及到的对象通过依赖关系连接到活动或状态上。这种对象的使用方式就构成了对象流。用带箭头的虚线标识
如果箭头从活动指向对象,就表示活动对对象有创建、修改或撤销等方面的影响;如果箭头从对象指向活动,则表示活动中引用到该已存在对象。
- 泳道(Swimlane):通过将活动图中的活动分成一些纵向区域来给活动进行分组,这些纵向区域就称为泳道。用垂直实线标识
泳道可以提取各个对象之间的交互,用来展示对象或活动之间的合作关系。
- 时间信号(Time Signal):指定某个时刻或持续某段时间
- 信号发送(Send Signal):向外部发送一个信号
- 信号接收(Receive Signal):从外部接收一个信号,并执行相应的活动
- 引脚(Pin):活动的参数信息,表示每个活动节点所需输入的数据或所产生的数据。用小正方形标识,并在引脚旁边标明该参数
用于输入参数的引脚称为Input Pin, 用于输出参数的引脚称为Output Pin
- 扩展区域(Expansion Region):活动图的一个内嵌套区域,代表一个结构化的活动集,可并发或循环执行。用边框为虚线的带圆角大矩形标识
- 注释(Note):文本描述,帮助理解。
活动图示例
以下示例可帮助理解活动图中的各个元素及其特性。
- 带有分支和合并的示例
以商家订货-发货流程为例
- 带有分叉和汇合的示例
- 带有泳道的示例
以客户-商家-物流为例
- 带有信号发送和接收的示例
以电影筹备-开机为例
- 带扩展区域的示例
以医院门诊为例
活动图注意事项
-活动图一开始需要明确工作流的前置条件、后置条件及边界
- 如果系统相对复杂的话,建议使用总活动图和若干个子活动图的方式显示系统所有的控制流
- 确定出系统中重要性高的工作流、对象流、对象,为其中的重要业务对象创建相应的泳道
- 对于活动节点的转换,先处理顺序动作,再考虑分支和合并,之后才是分叉和汇合等并发场景
- 具有并发或循环属性的活动集可以考虑将其加入到扩展区域