EA&UML日拱一卒 历史状态

2022-03-30 21:39:30 浏览数 (1)

历史状态

历史状态是一个与组合状态中区域有关的便利的概念,通过这个概念一个区域可以保持自己前一次退出时的状态构成的痕迹。如果愿意,就可以以一种容易的方式在下次状态被激活,或者存在一个返回历史状态的局部迁移时恢复到同样的状态构成(例如从中断处理返回)。这可以通过使迁移终止于一个区域中的希望类型的历史伪状态而简单地完成。这种方式的优点在于,当用户有需求时不需要准确地保持状态构成的痕迹。结果就是更加简单的状态机模型。

深历史/浅历史

有两种类型的历史伪状态。深历史(deepHistory)代表的是包含它的区域的完整的状态构成。其效果使终止于deepHistory历史伪状态的迁移产生的效果等同于如同迁移终止于被保存的状态构成的最里层中的某个子状态,也包括沿途遇到的所有入口行为的执行。浅历史(shallowHistory)代表的是返回最近状态构成的最上层子状态,进入时适用于缺省的进入规则。

缺省历史状态

有一种情况,状态没有被进入过(即不存在之前的历史)或者已经到达了终止状态,如果存在与终止于历史伪状态上的迁移,可以使用缺省历史机制使之强制迁移到一个特定的子状态。这是一个起始于历史伪状态,终止于包含该历史伪状态的区域中的一个特定顶点(缺省历史状态)的迁移。这个迁移只有执行到历史伪状态而且状态从来没有被激活过的情况下才会发生。否则进入区域的适当的历史入口行为将被执行(见上文)。如果没有定义缺省的历史迁移,那么标准的区域缺省入口行为会像后面将要解释的那样被执行。

0 人点赞