14.2.3 语义
状态机
行为状态机包括一个或多个Regions(区域),每个区域包含一图(通常是有层级的),图中包含一组Vertices(顶点),顶点由代表Transitions(转变)的弧相互连接。状态机的执行由适当的事件出现触发。状态机的一个特定的执行由一组穿过一个或多个区域图的有效路径遍历来表示,该执行是通过派发与这些图中的活跃触发器相匹配的事件出现来触发的。触发器的匹配规则在下面描述。在这样一个遍历过程中,状态机实例可能执行一个非常复杂的行为序列,连同图中与行为相关联的元素被遍历(转变effects、状态entry和状态exit行为等)。
如果状态机有一个行为分类符上下文,那么该分类符定义了哪些信号和CallEvent触发器可以用于这个状态机,以及哪些特征可以用于该状态机所拥有的行为。用于状态机的信号和CallEvent触发器是按照这个分类符的Receptions和操作分别定义的。这些特征可以用于定义状态机的消息事件触发器。
如果状态机没有行为分类符上下文(即,它是一个独立的行为),那么它的触发器不用捆绑到任何分类符的Receptions或操作上。举个例子,这样的一个触发器可能被定义为一个模板,它的触发器被定义为模板参数。这样的一个状态机就可以通过把适当的CallEvent或SignalEvent绑定到这些模板参数实现在不同的上下文分类符中被复用。
在行为特征(操作或Reception)的方法由状态机来规定时,状态机的参数应该与该行为特征的参数相匹配(参见13.2.3)。这是状态机执行获取该行为特征参数的途径和方法。否则,执行中的状态机实例访问被派发的事件出现和与之相关联的数据的方法是没有被定义的(参见第13章)。
定义上,状态机执行的调用会导致触发的效果(参见13.3.3),从而有一个与该执行相关联的事件池。状态机执行的事件池或者属于状态机的上下文分类符对象,或者如果状态机定义了某个行为特征的一个方法,那么它属于拥有该行为特征的分类符的实例。
由于事件驱动的特性,状态机执行或者处于某个状态,或者处于(状态)转变中。当与状态机相关联的一个触发器相匹配的事件被派发时,状态机处于转变中。当处于转变中时,状态机可能执行与它正在遍历的路径相关的一系列行为。
注意. 状态机执行即使处于一个稳定的装配配置时也可能在执行行为,例如当有与它的活跃状态配置相关的doActivity行为的时候。