前页 | 后页 |
示例:入口和出口点(连接点参考)
Enterprise Architect提供对入口和出口点以及连接点引用的支持。在此示例中,我们为MyClass定义了两个StateMachines -StateMachine和SubMachine。
- State1是一个复合状态(由于具有多个区域,因此也称为正交状态),具有三个区域: RegionA , RegionB和RegionC
- State2是一个称为SubMachine的SubMachine状态,它具有三个区域: RegionX , RegionY和RegionZ
- 在State1上定义EntryPoint1以激活三个区域中的两个;在SubMachine上定义EntryPoint2以激活三个区域中的两个
- ExitPoint1在State1上定义;两个出口点ExitPoint2和ExitPoint3是在冲锋枪定义
- 连接点引用在State2上定义,并绑定到键入SubMachine的入口/出口点
- 定义了初始节点以演示区域的默认激活
输入状态:入口点输入
EntryPoint1 的 状态1
启用针对EntryPoint1的过渡时,将激活State1 ,然后激活所包含的Region。
- 区域A和区域B发生显式激活,因为它们中的每一个都由终止于该区域包含的顶点之一的过渡输入。
- 默认激活发生在RegionC上 ,因为它定义了一个初始伪状态InitialC,并且从InitialC到StateC1的转换开始执行
EntryPoint2 上 冲锋枪
要模拟的触发序列为:[EVENT_C,EVENT_A]。
启用针对State2上的连接点引用CPR_Entry的转换时,将激活State2 ,然后通过绑定入口点激活SubMachine。
- 区域X和区域Y发生显式激活,因为它们每个都通过过渡输入,终止于区域X中包含的一个顶点-区域X中的StateX1 ,区域Y中的StateY1。
- 默认激活发生在RegionZ上 ,因为它定义了一个初始伪状态InitialZ,并且从InitialZ到StateZ1的转换开始执行
输入状态:默认输入
当综合国是过渡的直接目标时,就会出现这种情况。
默认 状态2
要模拟的触发序列为:[EVENT_A,EVENTC]。
启用直接针对State2的过渡时,将激活State2 ,然后默认激活所有SubMachine区域。
- RegionX的状态无效,因为它没有定义初始节点
- RegionY通过InitialY激活,并执行转换到StateY2
- RegionZ通过InitialZ激活,并执行转换到StateZ1
国家出口
State1出口
- 触发序列[EVENT_C,EVENT_A]: 首先停用RegionC ,然后停用RegionA和RegionB ;执行State1的退出行为后,启用从ExitPoint1传出的转换
- 触发序列[EVENT_A,EVENT_C]: 首先停用RegionA和RegionB ,然后停用RegionC ;执行State1的退出行为后,启用直接从State1传出的转换
State2出口
触发序列[EVENT_C,EVENT_A],因此当前状态类似于:
- 触发序列[EVENT_A,EVENT_C,EVENT_C,EVENT_B,EVENT_B]: 首先禁用RegionX ,然后是RegionY ,最后是RegionZ ;执行State2的退出行为后,启用直接从State2传出的转换
- 触发序列[EVENT_A,EVENT_B,EVENT_B,EVENT_C,EVENT_C]: 首先禁用RegionX ,然后是RegionZ ,最后是RegionY 。执行State2的退出行为后,启用从CPR_Exit3传出的转换( SubMachine上的ExitPoint3绑定到State2的 CPR_Exit3 )
- 触发序列[EVENT_C,EVENT_C,EVENT_B,EVENT_B,EVENT_A]: 首先禁用RegionY ,然后是RegionZ ,最后是RegionX ;执行State2的退出行为后,启用从CPR_Exit2传出的转换( SubMachine上的ExitPoint2绑定到State2的 CPR_Exit2 )