[转]UML之活动图
活动图的作用是描述一系列具体动态过程的执行逻辑,展现活动和活动之间转移的控制流,并且它采用一种着重逻辑过程的方式来叙述。
在对软件密集系统建模的时候,有时需要详细地模拟系统在运作时的业务流程。面对这种需要,我们可以分析对象间发生的活动和触发条件,选用活动图对这些动态方面进行建模。
活动图组成元素:动作和活动节点、开始和终止、控制流、判断节点、合并节点、泳道。
活动图的主要组成元素包括动作、活动、动作流、分支与合并、分叉与汇合、泳道和对象流等。
原文链接:活动图与状态机图——博客园
原文链接:UML之活动图——博客园
活动图将流程分解为一个一个的活动,通过活动的先后顺序来展示流程;而状态机图从某个事物的状态是如何变化的角度来展示流程。
基本概念
活动图是UML中一种重要的用于表达系统动态特性的图.
- 活动图的作用是描述一系列具体动态过程的执行逻辑,展现活动和活动之间转移的控制流,并且它采用一种着重逻辑过程的方式来叙述。
- 在对软件密集系统建模的时候,有时需要详细地模拟系统在运作时的业务流程。面对这种需要,我们可以分析对象间发生的活动和触发条件,选用活动图对这些动态方面进行建模。
- 活动图的主要组成元素包括动作、活动、动作流、分支与合并、分叉与汇合、泳道和对象流等。
活动图组成元素
动作和活动节点、开始和终止、控制流、判断节点、合并节点、泳道。
动作和活动节点
- 动作代表一个原子操作,操作可能是任何合法的行为。
- 动作可以是并且不限于:创建或删除对象、发送消息、调用接口,甚至数学运算以及返回表达式的求值结果。
- 活动节点是一系列动作,主要用于实现动作序列的简化和动作图的嵌套。活动节点在图例上的表达方式和动作相同。、
开始和终止
- 活动图中的开始和终止是两个标记符号,分别标记了业务流程的起始位置和结束位置。
- 活动图中必须有且仅有一个开始标记,一般至少有一个结束标记(存在一些特殊的无穷过程不存在终止标记)。
控制流
- 控制流是活动图中用于标示控制路径的一种符号。它负责当一个动作或活动节点执行完毕后,将执行主体从当前已完毕的节点转移到过程的下一个动作或动作节点。
- 控制流从活动图的开始标记开始运行,经过顺序、分支等结构引导着各个动作的连续执行。
判断节点
- 判断节点是活动图中进行逻辑判断、并创造分支的一种方法。
- 判断节点具有一个进入控制流和至少两个导出控制流。
- 判断节点具有多个导出流,对于每条导出流而言,应当在表示该控制流的箭头上附加控制条件。
合并节点
- 合并节点将多个控制流进行合并,并统一导出到同一个离开控制流。
- 合并节点仅有逻辑意义而没有时间和数据上的意义:几个动作都指向同一个合并节点也并不意味着这些动作要在进入之后互相等待或进行同步数据之类的操作。
泳道
- 泳道是将活动中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动由同一个对象来执行。
- 除了以上的对线性流程进行分区以外,使用泳道表示法可以更清晰地表示并发。
例子:工时审批流程
员工填写工时,项目工时报项目经理审批后再报部门经理审批、非项目工时直接报部门经理审批。
活动图高级概念
分叉节点、结合节点、对象流、扩展区域。
分叉节点与结合节点
分叉节点是从线性流程进入并发过程的过渡节点,它拥有一个进入控制流和多个离开控制流。分叉节点的所有离开流程是并发关系,即分叉节点使执行过程进入多个动作并发的状态。
结合节点是将多个并发控制流收束回同一流程的节点标记,功能上与合并节点类似。结合节点的各个进入控制流间具有并发关系,它们在系统中同时运行。
例子:学生选课的活动图
学生选上课后需要上课、复习、考试、查询成绩,查询成绩后可以申请复核、查询复核结果、成绩如果及格庆祝、未通过补考或重修。
对象流
对象流是UML为填补活动图与面向对象思想之间的疏离而出现的。如果需要在活动图中表现对象流,则首先需要绘制出泳道,且对象应该作为泳道的负责对象出现。
扩展区域
扩展区域是表示过程中的某个活动片段的模型。扩展区域可以将一个需要体现在活动图中的循环过程进行提取(不需要体现在活动图中的,可以直接使用活动节点来略写)。
活动图建模技术
对业务流程建模:
- 选择一个将要描述的重要过程,过程中尽量涉及数量少但是关键的对象或参与者,将无关或关联很小的对象排除在外,为每一个对象或参与者绘制泳道。
- 在总体业务流程中提取关键的动作或活动节点,并且将他们与对象或参与者相对应;若发现有些动作无法对应,则考虑动作是否在这个流程中起关键作用,或者是否遗漏了某些对象或参与者。
- 规定初始状态;确定过程可能的结束位置,为活动图添加开始和结束节点。
- 从业务流程的开始节点开始,把过程中发生的动作按事件顺序排列,依次把这些动作添加到活动图中。
- 把局部的过于复杂的动作序列加以总结,绘制成一个活动节点;如果需要,把这个动作序列使用另外的活动图进行建模。
- 找出连接这些动作和活动节点的控制流,并且准确找到过程中的分支、分叉、合并与结合节点。
- 如果业务流程中有一些关键对象的值或状态需要加以描述,使用对象流添加这些对象在某些动作或活动节点前后的状态描述。
对用例交互建模:
- 选择概念用例——即从系统对客户提供的各种服务中确定出一个关键业务,这个关键业务可能是在多个相同或不同的情况下反复出现,或者是系统需要提供的一个关键服务或进行的关键操作。
- 对于当前选择的用例,通过事件流进行顺序叙述,并找出所有的参与者主动动作,把这些动作整理成动作或活动节点。
- 把参与者和系统划分为两个泳道,如果有除了主参与者以外的其它参与者,也为它们分别划分泳道。
- 把活动节点纵向按照事件发生顺序、横向按照参与者角色和系统角色对应填入活动图中。
绘制活动图:
“活动图” 比较直观易懂,与传统的流程图十分的相近,只要能够读懂活动图,就不难画出活动图。
- 绘制时首先决定是否采用泳道:主要根据活动图中是否要体现出活动的不同实施者
- 然后尽量使用分支、分岔和汇合等基本的建模元素来描述活动控制流程
- 如果需要,加入对象流以及对象的状态变化,利用一些高级的建模元素(如辅助活动图、汇合描述、发送信号与接收信号、引脚、扩展区)来表示更多的信息
- 活动图的建模关键是表示出控制流,其它的建模元素都是围绕这一宗旨所进行的补充
活动图示例
例子(1)上班活动图
早上起来,心里斗争是否去上班。如果决定睡懒觉,就打电话请假,继续睡觉。如果决定上班,洗漱后出门上班。上班时要决定吃不吃早餐,吃就买早餐在途中食用,不吃就回公司再做打算。
例子(2)汽车租赁
例子(3)客户下单
用户下单后,生成送货清单时让客户选择支付方式。若支付成功后,将收款清单和送货地址交到供货商,供货商修改订单状态,如果送货完成则订单完成否则返回供货商。若支付超时、或支付失败,则结束。