Pré. | Proc. |
Exemple : Pseudo-state Historique
L'historique State est un concept pratique associé aux régions d' States composites , dans lequel une région garde une trace de la configuration dans laquelle se trouvait un State lors de sa dernière sortie. Cela permet de revenir facilement à cette configuration d' State , si nécessaire, lorsque la région devient ensuite active (par exemple, après avoir traité une interruption), ou s'il y a une transition locale qui revient à son historique.
Enterprise Architect supporte deux types de Pseudo-state Historique :
- Histoire profonde - représentant la configuration complète de l' State de la visite la plus récente dans la région contenant ; l'effet est le même que si la transition se terminant sur le pseudo-état deepHistory s'était plutôt terminée sur l' State le plus interne de la configuration d' State préservée, y compris l'exécution de tous les comportements d'entrée rencontrés en cours de route
- Historique peu profond - représentant un retour uniquement au sous-état le plus élevé de la configuration d' State la plus récente, qui est entré à l'aide de la règle d'entrée par défaut
Les deux Statemachines ont trois States composites : Turbine_01 , Turbine_02 et Turbine_03 , chacun ayant des States Off et On et un Pseudo-state Historique dans sa région.
Afin de mieux observer la différence entre Deep History et Shallow History, nous exécutons les deux Statemachines en une seule simulation.
La Statemachine dans DeepTurbineManager est illustrée dans ce diagramme :
La Statemachine dans ShallowTurbineManager est illustrée dans ce diagramme :
Conseil : Si vous cliquez-droit sur le nœud Historique sur le diagramme et sélectionnez l'option 'Avancé | Deep History', vous pouvez basculer le type de Pseudo-state Historique entre peu profond et profond.
Première activation des States
Après le démarrage de la simulation, Turbine_01 et son sous-état Off sont activés.
Séquence de déclenchement : [MODE, VITESSE]
Ensuite, la configuration de l' State actif comprend :
- Turbine_01
- Turbine_01.On
- Turbine_01.On.High
Séquence déclenchement : [SUIVANT]
Cette séquence de trace peut être observée depuis la fenêtre Simulation (Simuler > Simulation Dynamique > Simulateur > Ouvrir la fenêtre de Simulation ) :
01 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_01_On_High EXIT
02 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_01_On EXIT
03 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_01 EXIT
04shallowManager[ShallowTurbineManager].Turbine_01__TO__History2_105720_61730 Effet
05shallowManager[ShallowTurbineManager].StateMachine_Turbine_02 ENTRÉE
06 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_02 DO
07 peu profondManager[ShallowTurbineManager].History2_105720__TO__Off_61731 Effet
08 shallowManager[ShallowTurbineManager].StateMachine_Turbine_02_Off ENTRÉE
09 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_02_Off DO
Note : étant donné que deepManager a exactement la même trace que shallowManager , la trace de deepManager est filtrée de cette séquence.
Nous pouvons apprendre que :
- La sortie d'un State composite commence par l' State le plus interne dans la configuration de l' State actif (voir les lignes 01 à 03 dans la séquence de trace)
- La transition d'historique par défaut n'est prise que si l'exécution mène au nœud Historique (voir ligne 04) et que l' State n'a jamais été actif auparavant (voir ligne 07)
Ensuite, la configuration de l' State actif comprend :
- Turbine_02
- Turbine_02.Arrêt
Séquence de déclenchement : [SUIVANT, MODE]
Cette séquence de trace peut être observée depuis la fenêtre Simulation :
Déclencher [SUIVANT]
01 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_02_Off SORTIE
02 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_02 EXIT
03shallowManager[ShallowTurbineManager].Turbine_02__TO__History3_105713_61725 Effet
04shallowManager[ShallowTurbineManager].StateMachine_Turbine_03 ENTRÉE
05 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_03 DO
06 peu profondManager[ShallowTurbineManager].Initial_105706__TO__Off_61718 Effet
07 shallowManager[ShallowTurbineManager].StateMachine_Turbine_03_Off ENTRY
08 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_03_Off DO
Déclencher [MODE]
Message omis...
Note : étant donné que deepManager a exactement la même trace que shallowManager, la trace de deepManager est filtrée de cette séquence.
Nous pouvons apprendre que :
- Puisqu'il n'y a pas de transition d'historique par défaut définie pour History3 , l'entrée par défaut standard de l' State est effectuée ; un nœud Initial est trouvé dans la Région contenue par Turbine_03, donc la Transition provenant d' Initial est activée (voir ligne 06)
Ensuite, la configuration de l'état actif comprend :
- Turbine_03
- Turbine_03.On
- Turbine_03.On.Low
Histoire Entrée des States
À titre de référence, nous montrons l'instantané de l'historique profond de chaque turbine après sa première activation :
Turbine_01
- Turbine_01.On
- Turbine_01.On.High
- Turbine_02.Arrêt
- Turbine_03.On
- Turbine_03.On.Low
Lorsque nous continuerons à déclencher NEXT, Turbine_01 sera à nouveau activée.
Cette séquence de trace peut être observée depuis la fenêtre Simulation :
Pour le gestionnaire peu profond :
Déclencher [SUIVANT]
01 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_03_On_Low EXIT
02 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_03_On EXIT
03 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_03 EXIT
04shallowManager[ShallowTurbineManager].Turbine_03__TO__History1_105711_61732 Effet
05shallowManager[ShallowTurbineManager].StateMachine_Turbine_01 ENTRÉE
06 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_01 DO
07 shallowManager[ShallowTurbineManager].StateMachine_Turbine_01_On ENTRY
08 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_01_On DO
09 peu profondManager[ShallowTurbineManager].Initial_105721__TO__Low_61729 Effet
10 shallowManager[ShallowTurbineManager].StateMachine_Turbine_01_On_Low ENTRÉE
11 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_01_On_Low DO
Nous pouvons apprendre que :
- Le nœudshallowHistory restaure Turbine_01 jusqu'à Turbine_01.On
- Ensuite, la région contenue par Composite State Turbine_01.On sera activée par le nœud initial , qui s'est activé à Low
Pour deepManager :
Déclencher [SUIVANT]
01 deepManager[DeepTurbineManager].StateMachine_Turbine_03_On_Low EXIT
02 deepManager[DeepTurbineManager].StateMachine_Turbine_03_On EXIT
03 deepManager[DeepTurbineManager].StateMachine_Turbine_03 EXIT
04 deepManager[DeepTurbineManager].Turbine_03__TO__History1_105679_61708 Effet
05 deepManager[DeepTurbineManager].StateMachine_Turbine_01 ENTRÉE
06 deepManager[DeepTurbineManager].StateMachine_Turbine_01 FAIRE
07 deepManager[DeepTurbineManager].StateMachine_Turbine_01_On ENTRÉE
08 deepManager[DeepTurbineManager].StateMachine_Turbine_01_On_High ENTRÉE
Nous pouvons apprendre que :
- Le nœud deepHistory restaure Turbine_01 jusqu'à Turbine_01.On.High
Déclenchez [NEXT] pour quitter Turbine_01 et activer Turbine_02
shallowManager et deepManager activent Turbine_02.Off, qui est l'instantané de l'historique lorsqu'ils quittent.
Déclenchez [NEXT] pour quitter Turbine_02 et activer Turbine_03
LeshlowManager et le deepManager activent Turbine_03.On.Low. Cependant, les séquences deshallowManager et deepManager sont différentes.
PourshallowManager , leshallowHistory ne peut restaurer que jusqu'à Turbine_03.On. Puisqu'un nœud Initial est défini dans Turbine_03.On, la Transition provenant de Initial sera activée et Turbine_03.On.Low est atteint.
01 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_02_Off SORTIE
02 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_02 EXIT
03shallowManager[ShallowTurbineManager].Turbine_02__TO__History3_105713_61725 Effet
04 shallowManager[ShallowTurbineManager].StateMachine_Turbine_03 ENTRY
05 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_03 DO
06 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_03_On ENTRY
07 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_03_On DO
08 peu profondManager[ShallowTurbineManager].Initial_105727__TO__Low_61728 Effet
09 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_03_On_Low ENTRÉE
10 Gestionnaire de surface [ShallowTurbineManager].StateMachine_Turbine_03_On_Low DO
Pour deepManager , le deephistory peut restaurer jusqu'à Turbine_03.On.Low directement.
01 deepManager[DeepTurbineManager].StateMachine_Turbine_02_Off SORTIE
02 deepManager[DeepTurbineManager].StateMachine_Turbine_02 EXIT
03 deepManager[DeepTurbineManager].Turbine_02__TO__History3_105680_61701 Effet
04 deepManager[DeepTurbineManager].StateMachine_Turbine_03 ENTRÉE
05 deepManager[DeepTurbineManager].StateMachine_Turbine_03 FAIRE
06 deepManager[DeepTurbineManager].StateMachine_Turbine_03_On ENTRÉE
07 deepManager[DeepTurbineManager].StateMachine_Turbine_03_On_Low ENTRÉE