预订演示

请注意 : 本帮助页面不适用于最新版本的Enterprise Architect. 最新的帮助文档在这里.

前页 后页

示例:入口和出口点(连接点参考)

Enterprise Architect提供对入口和出口点以及连接点引用的支持。在这个例子中,我们为MyClass 定义了两个状态机——状态机状态机SubMachine。

StateMachine Entry, Exit and Connection Points in Sparx Systems Enterprise Architect

SubMachine Entry, Exit and Connection Points in Sparx Systems Enterprise Architect

  • State1是一个复合状态(也称为正交状态,因为它有多个区域),有三个区域: RegionARegionBRegionC
  • State2是调用SubMachine的 SubMachine状态,它有三个区域: RegionXRegionYRegionZ
  • State1上定义EntryPoint1 ,激活三个区域中的两个;在SubMachine上定义EntryPoint2以激活三个区域中的两个
  • ExitPoint1State1上定义;在SubMachine上定义了两个出口点ExitPoint2ExitPoint3
  • 连接点引用在State2上定义并绑定到输入 SubMachine 的入口/出口点
  • 定义初始节点以演示区域的默认区域

进入状态:入口进入

状态1 上的入口点 1

当一个转移

EntryPoint1为目标已启用, State1被激活,然后是包含的区域。

Entry point during simulation of executable state machine

  • RegionARegionB发生显式激活,因为它们中的每一个都由转移
    输入转移
    终止于区域包含的顶点之一
  • RegionC发生默认激活,因为它定义了一个 Initial 伪状态InitialC和转移
    InitialCStateC1开始执行

SubMachine上的EntryPoint2

要模拟的序列是:[简单的触发器,EVENT_A]。

当一个转移

针对连接点参考CPR_Entry on State2被启用, State2被激活,随后通过绑定入口点激活SubMachine。

Entry point during simulation of executable state machine

  • 显式激活RegionXRegionY ,因为它们中的每一个都由转移
    输入转移
    终止于区域包含的顶点之一 - RegionX中的StateX1RegionY中的StateY1
  • RegionZ发生默认激活,因为它定义了 Initial 伪状态 InitialZ和转移
    InitialZStateZ1开始执行

进入状态:默认进入

当复合状态是转移

的直接目标时,就会出现这种情况转移

.

State2的默认入口

要模拟的序列是:[简单的触发器,EVENTC]。

当一个转移

直接针对State2启用, State2被激活,随后默认激活区域的所有区域。

Entry point during simulation of executable state machine

  • RegionX的状态是不活跃的,因为它没有定义一个Initial节点
  • RegionY通过InitialY和转移
    激活转移
    StateY2被执行
  • RegionZ通过InitialZ和转移
    激活转移
    StateZ1被执行

状态

State1 出口

  • 触发器序列[EVENT_C, EVENT_A]:先去激活RegionC,再去激活RegionARegionBState1的退出行为执行后,转移
    ExitPoint1传出已启用
  • 触发器序列[EVENT_A, EVENT_C]:先去激活RegionARegionB ,再去激活RegionCState1的退出行为执行后,转移
    直接从State1传出已启用

State2 退出

触发器序列[EVENT_C, EVENT_A],所以当前状态类似这样:

Entry point during simulation of executable state machine

  • 简单的触发器[EVENT_A,序列, EVENT_C, EVENT_B, EVENT_B]:先去激活RegionX,再去RegionY ,最后去RegionZState2的退出行为执行后,转移
    直接从State2传出已启用
  • 简单的触发器[EVENT_A,序列, EVENT_B, EVENT_C, EVENT_C]:先去激活RegionX,再去RegionZ ,最后去RegionYState2的退出行为执行后,转移
    启用从CPR_Exit3传出( SubMachine上的ExitPoint3绑定到State2CPR_Exit3
  • 简单的触发器[EVENT_C,序列, EVENT_B, EVENT_B, EVENT_A]:先去激活RegionY ,然后去RegionZ ,最后去RegionX; State2的退出行为执行后,转移
    CPR_Exit2传出已启用( SubMachine上的ExitPoint2绑定到State2CPR_Exit2