前页 后页

状态机

StateMachines说明了元素(通常是类)如何在状态之间移动,并根据过渡触发器和约束保护措施对其行为进行了分类。

您可以从图工具箱的“状态”页面生成StateMachine元素和连接器。

命名

  • StateMachines以前称为状态图
  • UML中的StateMachine表示基于Harel状态图表示法,因此有时也称为状态图

状态表

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

选择显示格式

行动

也可以看看

1个

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

2

选择适当的显示选项:

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

示例图

此图说明了StateMachines的一些功能。

UML StateMachine chart example in Sparx Systems Enterprise Architect.

复合图状态

“已保存状态”右下角的链接符号表示它是一个带有合成图的状态。

您有两个选项可以显示州综合图的内容。首先,您可以双击父元素以单独显示其子图,如下所示:

A Composite UML StateMachine chart using Sparx Systems Enterprise Architect.

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

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

A Composite UML StateMachine chart using Sparx Systems Enterprise Architect.

ProtocolStateMachines

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

“ ProtocolStateMachines用于表达使用协议。ProtocolStateMachines表示关联的BehavioredClassifier的行为必须遵循的事件发生的合法序列。StateMachine表示法是一种方便的方法,用于定义分类器的行为特征的调用顺序。ProtocolStateMachines可以与分类器,接口和端口关联。”

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

StateMachine图元素工具箱图标

图标

描述

也可以看看

State element

一个国家代表着一些不变条件成立的情况;此条件可以是静态的(等待事件)或动态的(执行一组活动)。

State Machine element

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

状态机
Initial element

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

初始
Final element

Activity Final元素指示活动的完成;到达决赛后,“活动”图中的所有执行将中止。

最后
History element

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

历史
Synchronize element

同步状态对于指示StateMachine的并发路径已同步很有用。它们用于拆分和重新加入并行处理的周期。

同步
Object element

对象是运行时类的特定实例。

目的
Choice element

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

选择
Junction element

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

交界处
Entry element

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

入口点
Exit element

StateMachine元素和StateMachine图中使用了退出点,以表示退出机器的点以及转换为此退出点的来源。

出口点
Terminate element

终止伪状态指示在进入其伪状态后,StateMachine的执行结束。

终止
Horizontal Fork/Join element

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

叉/连接 叉子 加入
Vertical Fork/Join element

Fork / Join元素可用于:

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

2)加入多个并发流或

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

StateMachine图连接器工具箱图标

图标

描述

也可以看看

State Flow Transition connector

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

过渡
Object Flow connector

对象流连接两个元素,并通过它们传递特定数据,从而为活动过渡建模。

对象流

笔记

  • 状态元素可以显示或不显示一条线。当元素具有诸如操作(可以隐藏)之类的功能时,或者在“首选项”对话框的“对象”页面中选中“显示状态格”复选框时,将显示该行(如图所示)
  • 可以将入口点和出口点元素添加到State或StateMachine元素的边界-右键单击图中的元素,然后选择“新建子元素|入口点”或“出口点”选项;如果元素是复合元素并由框架表示,则还可以右键单击所选框架并添加入口点或出口点元素
  • 如果在StateMachine上具有作为另一个州的分类器的入口点和/或出口点,则可以从另一个州创建到分类器的连接点引用
  • 也可以将Regions添加到State元素或StateMachine元素框架中。右键单击所选框架,然后选择“定义并发子状态”选项
  • 您可以在StateMachine模型上执行模型仿真,并且所仿真的模型可以包含来自多个Package的元素。为了在仿真中包括外部元素,必须创建一个包含“父”包和“外部”包的包含外部元素的包图,然后创建一个从父包到每个外部包的包导入连接器

学到更多