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