Utilizar la jerarquía de estados para diseñar complejidad de estado multinivel
Para gestionar complejidad de estado multinivel, aplique jerarquía al gráfico de Stateflow®. Con la jerarquía puede representar varios niveles de subcomponentes de un sistema.
Ejemplo de jerarquía de estados
Por ejemplo, este gráfico tiene tres niveles de jerarquía. Representar un estado dentro de los límites de otro estado indica que el estado interno es un subestado (o estado secundario) del estado externo (o superestado). El estado externo es el elemento principal del estado interno.
En este ejemplo, el gráfico es el elemento principal del estado Car_done
. El estado Car_done
es el elemento principal de los estados Car_made
y Car_shipped
. El estado Car_made
también es el elemento principal de los estados Parts_assembled
y Painted
. También se puede considerar a los estados Parts_assembled
y Painted
como estados secundarios del estado Car_made
.
Para representar la jerarquía de Stateflow de forma textual, utilice una barra oblicua (/)
para representar el gráfico y utilice un punto (.)
para separar cada nivel en la jerarquía de estados. La siguiente lista es una representación textual de la jerarquía de los objetos en el ejemplo anterior:
/Car_done
/Car_done
.Car_made
/Car_done
.Car_shipped
/Car_done
.Car_made
.Parts_assembled
/Car_done
.Car_made
.Painted
Crear subestados y superestados
Un subestado es un estado que solo puede estar activo cuando otro estado, denominado elemento principal, está activo. Los estados que tienen subestados se conocen como superestados. Para crear un subestado, haga clic en la herramienta de estados y arrastre un nuevo estado al estado que desea que sea el superestado. Un gráfico de Stateflow crea el subestado en el estado principal especificado. Puede anidar estados de esta forma a cualquier nivel de profundidad. Para cambiar la relación con respecto al elemento principal de un subestado, arrástrelo desde su elemento principal actual en el gráfico y suéltelo en su nuevo elemento principal.
Nota
Un elemento principal debe ser lo suficientemente grande gráficamente para alojar todos sus subestados. Es posible que necesite cambiar el tamaño de un estado principal antes de arrastrar un nuevo subestado. Para evitar tener un estado con un gran tamaño gráfico puede declarar un superestado como un subgráfico. Para obtener más información, consulte Encapsulate Modal Logic by Using Subcharts.
Objetos que puede contener un estado
Los estados pueden contener cualquier otro objeto de Stateflow. La notación gráfica de Stateflow admite la representación de jerarquía de objetos gráficos en gráficos de Stateflow con contención. Un estado es un superestado si contiene otros estados. Un estado es un subestado si está contenido en otro estado. Un estado que no es ni un superestado ni un subestado de otro estado es un estado cuyo elemento principal es el propio gráfico de Stateflow.
Los estados también pueden contener objetos no gráficos de datos, eventos y mensajes. La jerarquía de esta contención aparece en Model Explorer. La contención de datos, eventos y mensajes se define especificando el objeto principal.