Réserver une Démo
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
Dans cet exemple, les classes DeepTurbineManager et ShallowTurbineManager sont exactement les mêmes sauf que la Statemachine contenue pour la première a un pseudo-état deepHistory et pour la seconde a un pseudo-état peu profondHistory.

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.

DeepHistory and ShallowHistory Pseudostates in Sparx Systems Enterprise Architect

La Statemachine dans DeepTurbineManager est illustrée dans ce diagramme :

DeepHistory Pseudostate Simulation StateMachine in Sparx Systems Enterprise Architect

La Statemachine dans ShallowTurbineManager est illustrée dans ce diagramme :

ShallowHistory Pseudostate Simulation StateMachine, Sparx Systems Enterprise Architect

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]

Shallow and Deep History pseudostates example in executable statemachines

Ensuite, la configuration de l' State actif comprend :

  • Turbine_01
  • Turbine_01.On
  • Turbine_01.On.High
Cela s'applique à la fois à deepManager et à shallowManager.

Séquence déclenchement : [SUIVANT]

Shallow and Deep History pseudostates example in executable statemachines

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
Cela s'applique à la fois à deepManager et à shallowManager.

Séquence de déclenchement : [SUIVANT, MODE]

Shallow and Deep History pseudostates example in executable statemachines

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
Cela s'applique à la fois à deepManager et à shallowManager.

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
  • Turbine_02.Arrêt
Turbine_03
  • Turbine_03.On
  • Turbine_03.On.Low

Lorsque nous continuerons à déclencher NEXT, Turbine_01 sera à nouveau activée.

Shallow and Deep History pseudostates example in executable statemachines

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