上一页 下一页

状态机

状态机说明了一个元素(通常是一个Class)如何在各个状态之间移动,根据过渡触发器和约束守卫对其行为进行分类。

您可以从Diagram Toolbox的“State”页面生成StateMachine元素和连接器

命名

  • 状态机以前称为状态图
  • UML中的StateMachine表示基于Harel State Chart Notation,因此有时也称为State Charts

状态图

您可以将StateMachine显示为图表,也可以显示为三种关系格式之一的表格。

选择显示格式

步骤

描述

请参阅

1

右键单击图表背景,然后选择“状态图编辑器”选项。

2

选择适当的显示选项:

  • 表(状态 - 下一状态)
  • 表(状态触发器)
  • 表(触发状态)
状态机图

示例图

此图说明了状态机的一些功能。

复合图状态

“已保存状态”右下角的链接符号表示它是具有复合图的状态。

您有两个选项可用于显示State的Composite图的内容。首先,您可以双击父元素以分别显示其子图,如下所示:

默认情况下,子图显示在带标签的框架内,该框架表示子图上下文中的父对象。您可以右键单击背景并选择“隐藏图表框”选项以隐藏框架,然后选择“显示图框架”选项以再次显示框架。

或者,您可以右键单击主图上的复合元素,然后选择“高级|” 显示复合图表'选项,它再次在标记的框架中显示子图,但这次是在父图的上下文中。

Protocol状态机

OMG UML规范(UML上部结构规范,v2.5,第14.4节)规定:

“Protocol状态机用于表示使用协议.Protocol状态机表示相关BehavioredClassifier的行为必须符合的事件发生的合法序列.StateMachine表示法是定义分类器行为特征的调用顺序的便捷方式.Protocol状态机可以与分类器,接口和端口相关联。“

要创建ProtocolStateMachine,请创建StateMachine元素并打开该元素的“ 属性”窗口选择“行为”选项卡,然后选择“协议状态机”复选框。图中的元素现在在元素名称上方有“protocol”一词。

StateMachine图元素工具箱图标

图标

描述

请参阅

状态代表某种不变条件成立的情况; 这种情况可以是静态的(等待事件)或动态的(执行一组活动)。

状态

StateMachine元素是相关State元素组的容器。

statemachine

Initial元素表示用于表示复合状态的默认状态的伪状态; 在复合状态的每个区域中可以有一个初始顶点。

初始

Activity Final元素表示活动的完成; 到达Final后,活动图中的所有执行都将中止。

最后

UML中定义了两种类型的历史伪状态:浅历史和深历史。

历史

同步状态对于指示StateMachine的并发路径是同步的非常有用。它们用于拆分和重新加入并行处理的时段。

同步

Object是运行时Class的特定实例。

对象

Choice伪状态用于组成复杂的过渡路径,其中传出的过渡路径由动态的运行时条件决定。

选择

结点伪状态用于在StateMachine图中设计复杂的过渡路径。连接可用于将多个路径组合或合并到共享转换路径中。

连接点

入口点伪状态用于定义StateMachine的开头。每个区域都有一个入口点,指示初始并发状态配置。

入口

退出点在StateMachine元素和StateMachine图中用于表示退出机器的点以及从此退出点转换的过程。

退出

Terminate伪状态图示在进入伪状态时,StateMachine的执行结束。

终止

Fork / Join元素可用于:1)将单个流拆分为多个并发流,2)加入多个并发流或3)将多个传入流加入和分叉到多个流出流。

拆分/加入 拆分 加入

Fork / Join元素可用于:

1)将单个流拆分为多个并发流

2)加入一些并发流或

3)加入和分叉许多传入流到多个传出流

StateMachine Diagram连接器工具箱图标

图标

描述

请参阅

Transition连接器表示StateMachine图中从一个状态到另一个状态的逻辑移动

过渡

对象流连接两个元素,特定数据通过它,为活动转换建模。

对象流

笔记

  • 状态元素可以显示有或没有一条线; 该行 - 如图所示 - 显示元素具有操作(可隐藏)等功能,或者在“首选项”对话框的“对象”页面中选中“显示状态隔离专区”复选框时显示
  • 可以将Entry Point和Exit Point元素添加到State或StateMachine元素的边框 - 右键单击​​图中的元素并选择'New Child Element | 入口点'或'退出点'选项; 如果元素是复合元素并由框架表示,您还可以右键单击所选框架并添加入口点或出口点元素
  • 如果StateMachine上的入口点和/或退出点是另一个状态的分类器,则可以从其他状态创建到分类器的连接点引用
  • 也可以将Region添加到State元素或StateMachine元素框架中; 右键单击所选框架,然后选择“定义并发子状态”选项
  • 您可以在StateMachine模型上执行模型模拟,您模拟的模型可以包含来自多个Package的元素; 要在模拟中包含外部元素,您必须创建包含“父”包和包含外部元素的“外部”包的包图,然后从父包创建包导入连接器到每个外部包

学到更多