10状态图和活动图10.1状态图•系统中对象状态的变化是最容易被发现和理解的。•在UML中,可以使用状态图展现对象状态的变化。•通过类对象的生命周期建立模型来描述对象随时间变化的动态行为。10.1.1状态•状态定义对象在其生命周期中的条件或状况,在次期间,对象满足某些条件,执行某些操作或等待某些事件。•在UML中,图形上每一状态机都有一个初始状态(实心圆),用来表示状态机的开始。还有一个终止状态(半实心圆),用来表示状态机的终止。其他状态用一个圆角矩形表示。10.1.2转换•表示状态间可能的路径,用箭头表示•包括事件和动作•事件写在由它们触发引起的转换上•事件是发生在时间空间上的一点值得注意的事情。•动作是原子性的,通常表示一个简短的计算处理过程。10.1.3转换的组成•源状态:被转换影响的状态,一个转换可以有多个源状态•目标状态:转换完成后,对象状态发生变化,这时对象所处的状态,一个转换可以有多个目标状态。•触发事件:引起转换发生的事件•监护条件:•动作:当转换被激活时,它对应的动作被执行。/callsomeone/[can'tconnect]/[connected]/finishconnection/becalled/[refused]/[have'tacts]idledialingtalkingringing[offHook][digital(n)][digital(n)][validNumber][routed][callPhoneAnswers][callPhoneHangup][onHook][numberBusy][trunkBusy][invalidNumber][TimeOut][TimeOut][onHook]IdleDialToneDialingConnectingRingingConnectedDisconnectedbusyToneFastBusyToneRecordeMessageWarningTimeOut10.1.4入口/出口动作(entry/exitaction)•表示进入/退出这个状态所执行的动作。•入口动作:entry/XXaction•出口动作:exit/XXaction•动作:可以是原子动作,也可以是动作系列。10.1.5内部转换•是不会引起状态变化的转换,此转换的触发不会引起入口/出口动作的执行。•表示内部转换的文字标识附加在表示状态的圆角矩形内,而不使用箭头图形标识。•语法:事件/动作表达式10.1.6子状态•某特定状态还可以用一个状态机来描述•一个状态(复合状态)内部还包含其他状态10.2活动图•用于描述一个过程或操作的步骤。•活动图用于研究实现目标时所要执行的各项任务或活动的顺序安排。活动既可以是手动执行的任务,也可以是自动执行的任务。它可完成一个工作单元。•活动图是状态图的一种特殊形式。其中所有或多数状态都是活动状态,而且所有或多数转移都在源状态中的活动完成时立即触发。10.2.1动作状态•可执行的原子计算成称为动作状态,动作状态不能分解,也就是说动作状态不能被中断。动作状态的工作所占用的时间一般可被看作是可忽略的。10.2.2活动状态•活动状态能够被进一步分解,他们的活动由其他的活动图表示。而且,活动状态不是原子的,也就是说他们可以被中断。可以把一个动作状态看成是一个活动状态的特例;可以把一个活动状态看成是一个组合,它的控制流由其他活动状态和动作状态组成。放大一个活动状态就会发现另一个活动图。•在表示法上2者没有区别,只是活动状态有附加的部分。如进入和退出动作(进入和离开该状态的动作)个子状态机说明。10.2.3转移•当一个状态的动作或活动结束时,控制流会马上传递给下一个动作或活动状态。用转移来说明这个流,显示一个动作或活动状态到下一个动作或活动状态的路径(UML种用一条简单的有向直线表示)。10.2.4分支•简单的、顺序的转换是常见的,但并不是对一个控制流建模所需的唯一的一种途径。在一个流程图中,可以包含一个分支,它描述了基于某个布尔表达式的可选择的路径。一个分支可以有一个进入转换和两个或多个离去转换。在每个离去转换上放置一个监护条件(布尔表达式)(在进入这个分支时被判断一次),所有离去转换中,其监护条件不应该重叠(否则控制流将是模糊的),但是他们应该覆盖所有可能性(否则,控制流可能会冻结)。•为了方便,可以用关键字else来标记一个离去转换,它表示如果其他监护条件都不为真时所执行的路径。10.2.5分叉和汇合•简单的和具有分支的顺序转换是活动图中最常见的路径。然而,对业务过程的工作流建模时,可能会遇到并发流。在UML中用一个同步棒(一条粗的水平或垂直的线)来说明这些并行控制流的分叉和汇合。10.2.5分叉和汇合(续)•一个分叉表示把一个单独的控制流分成2个或更多个控制流,一个分叉可以有一个进入转换和2个或更多个离去转换,每一个转换表示一个独立的控制流。在这个分叉之下,每一个路径相关的活动将并行地继续。•一个汇合表示2个或更多个控制流同步发生。一个汇合可以有2个或更多个进入转换和一个离去转换。在汇合处,并发的流取得同步,这意味着每个流都等待着,直到所有进入流都到达这个回合处,然后在这个回合的下面,只有一个控制流从这一点继续。10.2.6决策•决策,为其定义了一组警戒条件。这些警戒条件决定在活动完成后将执行一组备选转移中的哪一个转移。决策和警戒条件使您能够显示用例的工作流程中的备选线程。10.2.7同步•同步示意条用于显示平行分支流。同步示意条能够显示用例的工作流程中的并行线程。10.2.8泳道•可以使用垂直实线将活动图划分为泳道。每条泳道代表整个工作流程的某个部分的职责,该职责由组织的某个部门来执行。泳道最终可以由组织单元或者对象模型中的一组类来实施。•泳道之间的排序并不会影响语义。每个活动状态都指派了一条泳道,而转移则可能跨越数条泳道。10.2.9对象流•对象流用于显示如何在工作流程中创建并使用实体。对象流允许您在活动图中显示活动状态的输入和输出。•对象流状态代表一个类的对象,该对象参与了活动图所表示的工作流程。该对象可以是某个活动的输出,也可以是众多其他活动的输入。•对象流符号不仅仅表示对象本身的存在,而且还表明它所处的特定状态。同一个对象可被大量的、改变该对象状态的连续活动所控制。此后,该对象就可在活动图中多次出现,而且每次出现时都表示其生命期中的不同状态。该对象在每一点所处的状态都可置于括号内,并附加到其类名称之后。顾客营业员进入商店付款[b:Bill[uppaid]]报价交易完成看商品[b:Bill[paid]]