7.1 概述
活动图是一种特殊形式的状态机,用于对计算流程和工作流程建模。活动图中的状态表示计算过程中所处的各种状态,而不是普通对象的状态。通常,活动图假定在整个计算处理的过程中没有外部事件引起的中断,否则,普通的状态机更适于描述这种情况。
活动图包含活动状态。活动状态表示过程中命令的执行或工作流程中活动的进行。与等待某一个事件发生的一般等待状态不同,活动状态等待计算处理工作的完成。当活动完成后,执行流程转入到活动图中的下一个活动状态。当一个活动的前导活动完成时,活动图中的完成转换被激发。活动状态通常没有明确表示出引起活动转换的事件,当转换出现闭包循环时,活动状态会异常终止。
活动图也可以包含动作状态,它与活动状态有些相似,但是它们是原子活动并且当它们处于活动状态时不允许发生转换。动作状态通常用于短的记帐操作。
活动图可以包含并发线程的分叉控制。并发线程表示能被系统中的不同对象和人并发执行的活动。通常并发源于聚集,在聚集关系中每个对象有着它们自己的线程,这些线程可并发执行。并发活动可以同时执行也可以顺序执行。活动图不仅能够表达顺序流程控制还能够表达并发流程控制,如果排除了这一点,活动图很像一个传统的流程图。
7.2 活动图
活动图是活动视图的表示法(如图7-1)。它包括一些方便的速记符号,这些符号实际上可以用于任何状态图,尽管活动图和状态图的混合表示法多数时候都很难看。
活动状态表示成带有圆形边线的矩形,它含有活动的描述(普通的状态盒为直边圆角)。简单的完成转换用箭头表示。分支表示转换的监护条件或具有多标记出口箭头的菱形。控制的分叉和结合与状态图中的表示法相同,是进入或离开深色同步条的多个箭头。图7-1表示订单处理的活动图。
图7-1 活动图
为了表示外部事件必须被包含进来的情景,事件的接收可以被表示成转换的触发器或正在等待某信号的一个特殊内嵌符号。发送可同样表示。然而,如果有许多事件驱动的转换,那么用一个普通的状态图表示更可取。
1. 泳道
将模型中的活动按照职责组织起来通常很有用。例如,可以将一个商业组织处理的所有活动组织起来。这种分配可以通过将活动组织成用线分开的不同区域来表示。由于它们的外观的缘故,这些区域被称作泳道。图7-2表示了泳道。
图7-2 泳道和对象流
2. 对象流
活动图能表示对象的值流和控制流。对象流状态表示活动中输入或输出的对象。对输出值而言,虚线箭头从活动指向对象流状态。对输入值而言,虚线箭头从对象流状态指向活动。如果活动有多个输出值或后继控制流,那么箭头背向分叉符号。同样,多输入箭头指向结合符号。
图7-2表示一个活动和对象流状态都被分配到泳道中的活动图。
7.3 活动和其他图
活动图没有表示出计算处理过程中的全部细节内容。它们表示了活动进行的流程但没表示出执行活动的对象。活动图是设计工作的起点。为了完成设计,每个活动必须扩展细分成一个或多个操作,每个操作被指定到具体类。这种分配的结果引出了用于实现活动图的对合协的设计工作。