
# 状态机图
状态机图描述了一个单一对象的行为，并阐述了对象在其生命周期中对事件的响应过程中经历的事件序列。
#### 元素介绍
表1状态机图元素 
| 元素名             | 图标                                                                                                                                                                                                  | 含义                                                                                                                              |
|:---|:---|:---|
| Initial         | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481134526.png)                                                                                                   | 用来指明其默认起始位置的伪状态。                                                                                                                |
| Choice          | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481294482.png)                                                                                                   | 选择。                                                                                                                             |
| Trigger         | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513374355.png)                                                                                                   | 触发器。是转换的发起者，并被映射到触发的事件。                                                                                                         |
| Junction        | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513254367.png)                                                                                                   | （ 结合状态）作为一个综合转换一部分的伪状态。它在转换执行中不打断运行至完成步骤。                                                                                       |
| Fork/Join       | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481134532.png)、![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481294484.png) | （Fork）复杂转换中，一个源状态可以转入多个目标状态，使活动状态的数目增加。 （Join）状态机活动图或顺序图中的一个位置，在此处有两个或以上并列线程或状态归结为一个线程或状态。 |
| Deep History    | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513374357.png)                                                                                                   | 历史状态可以记忆浅历史和深历史。深历史状态记忆组成状态中更深的嵌套层次的状态。要记忆深状态，转换必须直接从深状态中转出。                                                                    |
| Shallow History | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513254369.png)                                                                                                   | 浅历史状态保存并激活与历史状态在同一个嵌套层次上的状态。                                                                                                    |
| Entry Point     | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481134534.png)                                                                                                   | 进入某一状态时执行的动作。                                                                                                                   |
| Terminate       | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481294486.png)                                                                                                   | 结束。                                                                                                                             |
| State           | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513374361.png)                                                                                                   | 对象的生命中的满足一定条件，执行一定操作，或者等待某事件的条件或者情况。                                                                                            |
| Signal          | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513254371.png "点击放大")                                                                                            | 对象之间异步通讯的声明。信号可以带有表示为属性的参数。                                                                                                     |
| StateMachine    | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481134538.png "点击放大")                                                                                            | 状态机是展示状态与状态转换的图。通常一个状态机依附于一个类，并且描述一个类的实例对接收到的事件所发生的反应。                                                                          |
| Final           | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481294488.png)                                                                                                   | 组成状态中的一个特殊状态，当它处于活动时，说明组成状态已经执行完成。                                                                                              |
| Synch           | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513374365.png)                                                                                                   | 一个特殊的状态，它可以实现在一个状态机里的两个并发区域之间的控制同步。                                                                                             |
| Exit Point      | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513254375.png)                                                                                                   | 离开某一状态时执行的动作。                                                                                                                   |
| Transition      | ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481134540.png "点击放大")                                                                                            | 转换用实线箭头表示，从一个状态（源状态）到另一个状态（目标状态），用一条转换线标注。                                                                                      |
   
#### 关键元素
**状态**
状态（State）是关于行为的集合，在与当前时间相关行为完成之前，不会接收和处理新的事件。三种行为包括：
- entry（进入）：进入状态时马上执行的行为。
- do（执行）：当系统处于状态中时执行的行为或直到状态自然结束。
- exit（退出）：当系统离开这个状态时马上执行的行为。
在State元素的属性 \> 状态，选择绑定工程树中的活动（Activity）、交互（Interaction）、状态机（StateMachine）三种元素。
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481294492.png "点击放大")
**触发器**
触发器（Trigger）是转换的发起者，并被映射到触发的事件，有四种类型：
Call：选择绑定方法。
Change：自定义文本。
Signal：选择绑定Signal元素。
Time：自定义文本。
![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513254377.png "点击放大")
#### 连线关系
**转换**
转换（Transition）是对关联事件的响应，使对象从一个对象转换到另一个状态。配置后页面格式为：触发器\[守卫条件\]/触发效果。
- 约束配置 守卫条件：转换发生需满足的条件，自定义文本。
  触发效果：选择绑定工程树中的活动（Activity）、交互（Interaction）、状态机（StateMachine）三种元素。
  ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481294496.png "点击放大")
  
  
- 触发器 触发状态转换的事件。
  名称：选择绑定Trigger元素。
  类型：显示Trigger元素的类型。
  规格：显示Trigger元素的规格。
  ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513254381.png "点击放大")
  
  
#### 建模步骤
1. 在状态机图工具栏拖动State元素到画布中命名为Off，拖动Initial元素到图中并使用Transition连接。 
   ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481294502.png)
   
   
2. 创建State元素命名Operate，使用Transition进行连接。 
   ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513374371.png)
   创建Trigger元素命名为start，Transition连线右键属性，触发器选择绑定start。
   ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002513254385.png)
   
   
3. 参考示例创建元素完成状态机图。 
   此状态机图用于描述车辆制动过程中的状态。Initial使车辆从Off状态过渡到Operate(on)状态的触发器。
   ![](https://support.huaweicloud.com/usermanual-codeartsmodeling/zh-cn_image_0000002481134550.png "点击放大")
   
   
 
