以下内容部分出至博客园coolstream,主要是自己懒得写了,部分做了修改。
官方连接
活动图(Activity Diagram)简介
活动图描述从一个活动到另一个活动的执行顺序、约束条件、引用对象及状态结果等方面的控制流,适用于对业务用例、工作流程或程序实现建模。
活动图建模步骤
(1)确定活动图的范围和边界,对哪些工作流、哪些活动、哪些对象建模
(2)确定工作流的开始状态和结束状态
(3)确定工作流的各个活动、活动之间的转换、活动涉及的对象
(4)确定工作流中各个活动对应的分支与合并、分叉与汇合关系
(5)找出活动图中的复杂活动集,用相应的子活动图展开描绘
(6)找出活动图中多次重复的活动,抽象为扩展区域
活动图中的主要元素
活动图的核心符号是活动。
-
活动(Actions):待执行的动作,操作或命令。用圆角矩形标识
image -
状态(State):一系列操作开始处或结束处的标识,称为开始状态和结束状态。与状态图中相同
开始状态(Start State):起始点。用实心圆表示
image
结束状态(End State):终止点。用内部实心的圆环表示
image
流结束状态(FlowFinal):控制流终点。用内部叉号的圆环表示。
这两种结束状态的区别为:
流结束状态表明单独的控制流的终点。
活动结束状态是活动图内所有控制流的结束。 -
控制流( Control Flow):活动之间,或状态与活动,或状态与对象之间的连接。用带箭头的直线标识
image
action.PNG
action-object.PNG -
对象流(Object Flows):箭头的两端有特定的数据传输 。
有的工具中是指与对象之间的连接,但是EA中必须带数据
一个对象流在它的至少有一个端有一个对象。
在图中,可以采用带输入输出引脚的速记标柱表示。
image -
中断流(Interrupt Flows):用于连接异常处理或者可中断区域与外部连接。
image
image -
引脚(Pin):活动的参数信息,表示每个活动节点所需输入的数据或所产生的数据。
用于输入参数的引脚称为Input Pin, 用于输出参数的引脚称为Output Pin。
用小正方形标识,并在引脚旁边标明该参数:
image -
异常(Exception): 异常处理在活动图中建模。
Exception.PNG -
对象(Objects):用矩形框+对象名+类名(可有可无)标识,与类图中对象表示法一致
object.PNG -
数据存储(Datastore):显示为带 «datastore» 关键字的对象。
Datastore.PNG -
时间信号(Time Signal
EA没有中):指定某个时刻或持续某段时间
image -
信号发送(Send Signal):向外部发送一个信号
image -
信号接收(Receive Signal):从外部接收一个信号,并执行相应的活动
image -
判断(Decision):对活动或状态进行判断,然后选择下一步活动。使用空心菱形标识,与状态图中判定的图标相同
image
分支与合并(Decision and Merge):
分支:是将单个执行路径分成两个或两个以上的分路径,每个分路径都有相应的前置条件和执行结果
合并:是指两个或两个以上的路径在该处汇集
image -
同步条(Synchronization Bar
EA中Fork and Join):用于并行执行、成对出现。用加粗线段标识
image
并发(concurrency):在同一段时间内,有两个或两个以上的活动被执行
分叉与汇合(Fork and Join):分叉表示将一个控制流分成两个或两个以上并发执行的分支;汇合表示并发分支该处汇集同步
image -
泳道(Swimlane
EA中Partition):通过将活动图中的活动分成一些纵向区域来给活动进行分组,这些纵向区域就称为泳道。
泳道可以提取各个对象之间的交互,用来展示对象或活动之间的合作关系。
标识如图:
image -
扩展区域(Expansion Region
EA中Region选择Expansion Region):
活动图的一个内嵌套区域,代表一个结构化的活动集,可并发或循环执行。
用边框为虚线的带圆角大矩形标识
image -
可中断活动区(InterruptibleActivityRegion
EA中Region选择InterruptibleActivityRegion):
可中断活动区环绕一组可以中断的动作。
在下面非常简单的例子中: 当控制被传递到结束订单 "Close Order" 动作,定单处理"Process Order" 动作会执行直到完成,除非"Cancel Request"取消请求中断被接受,这会将控制传递给"Cancel Order"动作。
image -
注释(Note): 文本描述,帮助理解。
image -
活动(Activity ): 表示当前活动中的子活动。
activity.PNG 活动参数(Activity Parameter): 子活动接受外界传递的数据
参照上图中的ActivityParameter1-
结构化活动(Structured Activity): 子活动结构化
有三种类型:Loop Node,Conditional Node,Structured Activity Node ,Sequential Node,Simple Composite Activity
action设置显示内容
action.PNG-
Loop Node:
Setup:循环条件使用的变量初始化,只执行一次
Test: 循环退出判断条件,重复执行
Body:循环中重复执行的操作
loop.PNG -
Conditional Node:类似if---then
Test: if条件
Body:满足条件后执行动作
conditional.PNG -
Structured Activity Node:嵌套其他结构化活动节点
Structured.PNG -
Sequential Node:添加Child Diagram或者Composite
Sequential.PNG -
Simple Composite Activity:即可以添加条件区域也可以添加Child Diagram或者Composite
simpleComposite.PNG
-
-
中心缓冲节点(Central Buffer Node):
中心缓冲区节点是用于管理来自多个源和目标的流的对象节点。
它充当来自其他对象节点的多个入流和出流的缓冲区(就是替其他对象管理多个输入流或者输出流)。
image.png
活动图示例
以下示例可帮助理解活动图中的各个元素及其特性。
-
带有分支和合并的示例
以商家订货-发货流程为例
image -
带有分叉和汇合的示例
image -
带有泳道的示例
以客户-商家-物流为例
image -
带有信号发送和接收的示例
以电影筹备-开机为例
image -
带扩展区域的示例
以医院门诊为例
image
活动图注意事项
(1)活动图一开始需要明确工作流的前置条件、后置条件及边界
(2)如果系统相对复杂的话,建议使用总活动图和若干个子活动图的方式显示系统所有的控制流
(3)确定出系统中重要性高的工作流、对象流、对象,为其中的重要业务对象创建相应的泳道
(4)对于活动节点的转换,先处理顺序动作,再考虑分支和合并,之后才是分叉和汇合等并发场景
(5)具有并发或循环属性的活动集可以考虑将其加入到扩展区域




















