预订演示
前页 后页

触发器和过渡

您在状态机图表上看到的大多数连接器将是转换;这些是将一个状态连接到另一个状态的线,表示拥有块(实例)可以更改的允许方式。它们更改的顺序和执行的行为将取决于块的条件和现实世界上下文。例如,在维护工程师纠正故障之前,交通灯可能会闪烁琥珀色,或者飞机可能会保持等待模式,直到控件塔在目的地机场提供着陆许可。该图显示了指向不同方向的两个转换,有效地创建了两个状态之间的循环的可能性。

转换总是源自一个状态并以另一个状态为目标,包括自转换的特殊情况,其中原点和目标是一个且相同的。图中的线条有一个标签,可以显示许多不同的选项:触发器守卫条件影响。我们将在细节中讨论这些选项,因为它们表达了关于转换的重要语义,包括转换是否将被执行。转换可以A三种情况下:

  • 达到- 原始状态(或顶点)处于活动状态并准备好完成其行为
  • Traversed - 正在执行过渡(包括任何已定义的效果行为)
  • Completed - 已达到目标状态,准备执行入口行为
这些术语对系统工程师和其他人在协作工作时很有用,讨论状态机的执行及其对拥有块行为的描述。

触发器

触发器,是转换的发起者,并被映射到据说触发事件发生的事件。正是这些触发器及其相关事件导致转换执行(触发)和拥有块从一个状态移动到另一个状态。当状态处于活动状态时,它实际上是在等待被事件触发,并且只要其进入动作完成——不管任何其他因素——它就准备好接收和响应事件。

此屏幕截图演示了如何在触发器Enterprise Architect中输入和查看简单的守卫条件和影响。

此图说明了简单的触发器守卫条件和影响在图表上的显示方式。这种情况下的影响已被定义为一种行为,并已链接到在块上定义的操作。

警卫

守卫是转换的“守门人”,只有当守卫的表达式评估为True时才会触发转换。如果表达式的计算结果为false ,则事件将被消耗,并且触发器导致块的状态不会发生可观察到的变化。

警卫A表达可以用简单的英语定义,但通常使用正式的约束语言(例如物件约束语言)以约束的形式编写。当使用模拟或可执行状态机时,条件以要生成的代码语言的语法表示,例如JavaScript或 C++。这也适用于效果。在这张图中,我们可以看到一个可以由人或机器评估的数学表达式。

效果

除了将拥有的块从一个状态转移到另一个状态之外,转移

的意义转移

关系是它可以在拥有块或任何其他块上执行可能是活动或操作的行为。此行为是对可能已在源状态上定义的 Exit 行为和在目标状态上定义的 Entry 行为的补充。这确保有一种机制可以在转移

执行期间更改行为转移

.

贝塞尔曲线

Enterprise Architect具有广泛的工具和功能用于处理图表,包括状态机图表,这些可用于帮助创建和可视化在状态机中编码的信息。使用转换时特别有用的是路由连接器的能力,这有助于使图表更具吸引力。此图中连接器的线条样式已设置为贝塞尔曲线,给出了转移

不那么僵硬的外观。

可以通过将构造点拖动到新位置来更改曲线的形状。可以使用多种线型中的任何一种,从而为建模者提供用于图表表示的选项工具包。可以选择此上下文菜单并为每个连接器单独设置线型。线条的颜色和粗细也可以从布局功能区中设置。