6.5.5 历史状态

更新于 2026年10月10日 版权声明
6.5.5 历史状态

有时,当离开一个嵌套状态后,需要重新进入该嵌套状态,但又不想从该子状态图的开始进入,而是希望直接从上次离开该嵌套状态时的最后一个子状态进入,在这种情况下采用历史状态就很容易做到。历史指示器用来记录状态图内部的历史状态,用标有“H”的圆圈表示。历史指示器作用于标有它的子状态图,如果指向历史指示器的转移被触发,对象就会恢复到该状态区域当前状态的前一个状态,使得对象能在活动被中断或需要逆行时回到最近的那个状态。历史指示器是一个伪状态,可以有几个进入它的状态转移,但没有离开它的状态转移。

案例学习

◎图6-22描述了一个软件安装过程。一个“建立()”转移被触发使系统进入安装软件状态,在软件安装状态中嵌套有两个并发的子状态图:一个是正在运行的操作系统,另一个是运行安装软件的程序。只有在操作系统正在运行的情况下,才能启动安装软件的程序,因此它们是并发执行的。当软件安装完毕时,操作系统和安装软件的程序都要重新启动,安装的软件才能开始工作。操作系统运行子状态图的功能很清楚,这里重点讨论安装程序运行子状态图的状态转移过程。(https://www.daowen.com)

在如图6-22所示的安装程序运行子状态图中,首先进入“启动安装程序”状态,再自动进入“安装”状态。在“安装”状态中,操作人员按照安装程序的提示进行软件安装。如果在安装过程中出现“磁盘错误”或“超出内存”事件时,安装程序暂时停止安装进程,在屏幕上提示出错信息并要求操作者进行选择。出现“磁盘错误”事件时,操作者可以选择“再试一次”或“终止安装”转移;出现“超出内存”事件时,操作者可以选择“继续安装”或“终止安装”转移。如果选择“终止安装”转移,则安装程序停止运行并退出,回到操作系统。如果选择“再试一次”或“继续安装”转移,则触发历史指示器。此时,并不是回到安装程序运行子状态图的起始状态,而是返回到发生转移的前一个状态(历史状态),即“安装”状态,继续进行软件安装。

图示

图6-22 带有历史指示器的软件安装过程状态图

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)