前页 | 后页 |
示例:入口和出口点(连接点参考)
Enterprise Architect提供对入口和出口点以及连接点引用的支持。在这个例子中,我们为MyClass 定义了两个状态机——状态机状态机SubMachine。
- State1是一个复合状态(也称为正交状态,因为它有多个区域),有三个区域: RegionA 、 RegionB和RegionC
- State2是调用SubMachine的 SubMachine状态,它有三个区域: RegionX 、 RegionY和RegionZ
- 在State1上定义EntryPoint1 ,激活三个区域中的两个;在SubMachine上定义EntryPoint2以激活三个区域中的两个
- ExitPoint1在State1上定义;在SubMachine上定义了两个出口点ExitPoint2和ExitPoint3
- 连接点引用在State2上定义并绑定到输入 SubMachine 的入口/出口点
- 定义初始节点以演示区域的默认区域
进入状态:入口进入
状态1 上的入口点 1
当一个转移
以EntryPoint1为目标已启用, State1被激活,然后是包含的区域。
- RegionA和RegionB发生显式激活,因为它们中的每一个都由转移
输入转移
终止于区域包含的顶点之一 - RegionC发生默认激活,因为它定义了一个 Initial 伪状态InitialC和转移
从InitialC到StateC1开始执行
SubMachine上的EntryPoint2
要模拟的序列是:[简单的触发器,EVENT_A]。
当一个转移
针对连接点参考CPR_Entry on State2被启用, State2被激活,随后通过绑定入口点激活SubMachine。
- 显式激活RegionX和RegionY ,因为它们中的每一个都由转移
输入转移
终止于区域包含的顶点之一 - RegionX中的StateX1 , RegionY中的StateY1 - RegionZ发生默认激活,因为它定义了 Initial 伪状态 InitialZ和转移
从InitialZ到StateZ1开始执行
进入状态:默认进入
当复合状态是转移
的直接目标时,就会出现这种情况转移
.
State2的默认入口
要模拟的序列是:[简单的触发器,EVENTC]。
当一个转移
直接针对State2启用, State2被激活,随后默认激活区域的所有区域。
- RegionX的状态是不活跃的,因为它没有定义一个Initial节点
- 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_B, EVENT_B]:先去激活RegionX,再去RegionY ,最后去RegionZ ; State2的退出行为执行后,转移
直接从State2传出已启用 - 简单的触发器[EVENT_A,序列, EVENT_B, EVENT_C, EVENT_C]:先去激活RegionX,再去RegionZ ,最后去RegionY ; State2的退出行为执行后,转移
启用从CPR_Exit3传出( SubMachine上的ExitPoint3绑定到State2的CPR_Exit3 ) - 简单的触发器[EVENT_C,序列, EVENT_B, EVENT_B, EVENT_A]:先去激活RegionY ,然后去RegionZ ,最后去RegionX; State2的退出行为执行后,转移
从CPR_Exit2传出已启用( SubMachine上的ExitPoint2绑定到State2的CPR_Exit2 )