Contenu principal

Sortir d’un état

Lorsqu’une transition hors d’un état est valide, cet état est signalé pour la sortie. Un état est signalé pour la sortie de l’une des façons suivantes :

  • La transition sortante est déclenchée à la limite de l’état.

  • La transition sortante traverse la limite de l’état.

  • L’état de destination est un état parallèle enfant d’un état activé.

Workflow de sortie d’un état

Ce diagramme de flux indique la progression des événements dans Stateflow® pour sortir d’un état. Dans ce diagramme de flux, l’état actuel fait référence à l’état dans lequel une décision ou un processus a lieu.

Flow chart that shows the steps for exiting a state.

Actions de sortie

Les actions Exit pour un état s’exécutent lorsque l’état est actif et qu’une transition valide depuis l’état existe. Un état effectue ses actions exit avant de devenir inactif.

Les actions de sortie sont précédées du préfixe exit ou ex, suivi de deux points obligatoires (:), eux-mêmes suivis d’une ou plusieurs actions. Séparez les différentes actions avec un retour chariot, un point-virgule (;) ou une virgule (,).

Remarque

Si l’état actuel n’est pas la source de la trajectoire de transition, Stateflow sort de l’état actuel et termine ses actions de sortie. Le parent devient alors l’état actuel. Ce cycle se répète jusqu’à ce que l’état actuel soit la source de la transition.

Exemple de sortie d’un état

Dans cet exemple, le diagramme Stateflow est initialisé et les actions entry sont effectuées pour StateA et StateA1. Pour ce diagramme, les actions during se sont produites deux fois. Un nouveau pas de temps a lieu, puis le diagramme s’active.

En suivant le Workflow d’exécution d’un diagramme Stateflow et le Workflow for Evaluating Transitions, StateB a été signalé pour l’entrée. StateA est la source de la transition. À ce pas de temps x = 5, y = 2 et z = 0.

Stateflow chart with top-level states called StateA and StateB. StateA has substates StateA1 and StateA2. StateB has substates StateB1 and StateB2.

En suivant le diagramme de flux pour les actions de sortie d’état jusqu’à ce que le diagramme passe en veille, les étapes d’exécutions pour ce diagramme sont, dans l’ordre :

  1. StateA n’est pas un super-état de StateB.

  2. Effectuez les actions de sortie de StateA et signalez StateA comme inactif. À présent, z = 1.

  3. StateA n’a pas d’état parent.

  4. Accédez à Actions d’entrée.

Ces étapes terminent le workflow exit pour StateA. Cependant, le diagramme n’est pas encore en veille.

Effectuez le Workflow d’entrée dans un diagramme ou un état pour StateB pour terminer le pas de temps.

Sortir d’un état à l’aide de super-transitions

Une super-transition est une transition entre différents niveaux dans un diagramme. Une super-transition peut se produire entre un état dans un diagramme de niveau supérieur et un état dans l’un de ses sous-états, ou entre états stockés dans différents sous-états. Vous pouvez créer des super-transitions couvrant le nombre de niveaux souhaité dans votre diagramme.

Lorsque l’on sort d’un état grâce à une super-transition, après l’exécution des actions de sortie pour la source de la transition, les super-états de l’état sont signalés comme inactifs et les actions de sortie des super-états sont exécutées. Dans cet exemple, StateA2 est signalé pour exit et StateB1 est signalé pour entry. À ce stade, x = 5, y = 5 et z = 0.

Stateflow chart with top-level states called StateA and StateB. StateA has substates StateA1 and StateA2. StateB has substates StateB1 and StateB2.

En suivant le Workflow d’entrée dans un diagramme ou un état jusqu’à ce que le diagramme passe en veille, les étapes d’exécutions pour sortir de l’état StateA2 sont, dans l’ordre :

  1. StateA2 n’est pas un super-état de l’état de destination (StateB1).

  2. Effectuez les actions exit pour StateA2 et signalez StateA2 comme inactif.

  3. StateA2 a un état parent, StateA.

  4. StateA n’est pas un super-état de l’état de destination (StateB1).

  5. Effectuez les actions exit pour StateA et signalez StateA comme inactif.

  6. StateA n’a pas d’état parent.

Ces actions terminent le workflow exit pour StateA2 et StateA. Cependant, le diagramme n’est pas encore en veille.

Effectuez le Workflow d’entrée dans un diagramme ou un état pour StateB et StateB1 pour terminer le pas de temps.

Voir aussi

Rubriques