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, selon lequel une région conserve la trace de la configuration dans laquelle se trouvait un State lors de sa dernière sortie. Cela permet de revenir facilement à cette configuration State , si nécessaire, lorsque la région redevient active (par exemple, après être revenue de la gestion d'une interruption), ou s'il existe une transition locale qui revient à son historique.

Enterprise Architect supporte deux types de Pseudo-state Historique :

  • Historique profond - représentant la configuration complète de State de la visite la plus récente dans la région contenante ; l'effet est le même que si la transition se terminant sur le pseudo-état deepHistory s'était, à la place, terminée sur l' State le plus profond de la configuration de State préservé, y compris l'exécution de tous les comportements d'entrée rencontrés en cours de route
  • Historique superficiel - représentant un retour uniquement au sous-état le plus élevé de la configuration State la plus récente, qui est saisi à l'aide de la règle de saisie 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 un pseudo-état shallowHistory.

Les deux Statemachines ont trois States composites : Turbine_01 , Turbine_02 et Turbine_03 , chacun ayant States Off et On et un Pseudo-state Historique dans sa région.

Afin de mieux observer la différence entre l'histoire profonde et l'histoire superficielle, nous exécutons les deux Statemachines dans 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 du diagramme et sélectionnez l'option 'Avancé | Historique profond', vous pouvez basculer le type de Pseudo-state Historique entre superficiel et profond.

Première activation des States

Une fois la simulation démarrée, Turbine_01 et son sous-état Off sont activés.

Séquence Déclencheur : [MODE, SPEED]

Shallow and Deep History pseudostates example in executable statemachines

Ensuite, la configuration State actif comprend :

  • Turbine_01
  • Turbine_01.On
  • Turbine_01.En.haut.
Ceci s'applique à la fois à deepManager et à shallowManager.

Séquence Déclencheur : [SUIVANT]

Shallow and Deep History pseudostates example in executable statemachines

Cette séquence de traces peut être observée depuis la fenêtre Simulation (Simuler > Simulation Dynamique > Simulateur > Ouvrir la fenêtre Simulation ) :

01 peu profondManager [ShallowTurbineManager].StateMachine_Turbine_01_On_High SORTIE

02 peu profondManager [ShallowTurbineManager].StateMachine_Turbine_01_On EXIT

03 ShallowManager[ShallowTurbineManager].StateMachine_Turbine_01 SORTIE

04 effet de ShallowTurbineManager[ShallowTurbineManager].Turbine_01__TO__History2_105720_61730

05 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_02 ENTRÉE

06 gestionnaire peu profond [gestionnaire de turbine peu profond].StateMachine_Turbine_02 DO

       07 shallowManager[ShallowTurbineManager].History2_105720__TO__Off_61731 Effet

08 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_02_Off ENTRÉE

09 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_02_Off FAIRE

Note : étant donné que deepManager a exactement la même trace que shallowManager , la trace de deepManager est filtrée à partir de cette séquence.

Nous pouvons apprendre que :

  • La sortie d'un State composite commence par l' State le plus interne dans la configuration 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 State actif comprend :

  • Turbine_02
  • Turbine_02.Arrêt
Ceci s'applique à la fois à deepManager et à shallowManager.

Séquence Déclencheur : [NEXT, MODE]

Shallow and Deep History pseudostates example in executable statemachines

Cette séquence de traces peut être observée à partir de la fenêtre Simulation :

Déclencheur [SUIVANT]

01 ShallowManager[ShallowTurbineManager].StateMachine_Turbine_02_Off SORTIE

02 Gestionnaire peu profond [ Gestionnaire de turbines peu profondes ]. StateMachine_Turbine_02 SORTIE

03 effet de ShallowTurbineManager[ShallowTurbineManager].Turbine_02__TO__History3_105713_61725

04 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_03 ENTRÉE

05 gestionnaire peu profond [gestionnaire de turbine peu profond].StateMachine_Turbine_03 DO

         06 shallowManager[ShallowTurbineManager].Initial_105706__TO__Off_61718 Effet

07 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_03_Off ENTRÉE

08 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_03_Off FAIRE

Déclencheur [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 :

  • Comme 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.Marche.Basse
Ceci s'applique à la fois à deepManager et à shallowManager.

Entrée dans l'histoire 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.En.haut.
Turbine_02
  • Turbine_02.Arrêt
Turbine_03
  • Turbine_03.On
  • Turbine_03.Marche.Basse

Lorsque nous appuierons sur Déclencheur NEXT, Turbine_01 sera à nouveau activée.

Shallow and Deep History pseudostates example in executable statemachines

Cette séquence de traces peut être observée à partir de la fenêtre Simulation :

Pour le gestionnaire peu profond :

Déclencheur [SUIVANT]

01 shallowManager[ShallowTurbineManager].StateMachine_Turbine_03_On_Low SORTIE

02 peu profondManager [ShallowTurbineManager].StateMachine_Turbine_03_On EXIT

03 Gestionnaire peu profond [ Gestionnaire de turbines peu profondes ]. StateMachine_Turbine_03 SORTIE

04 effet de ShallowTurbineManager[ShallowTurbineManager].Turbine_03__TO__History1_105711_61732

05 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_01 ENTRÉE

06 gestionnaire peu profond [gestionnaire de turbine peu profond].StateMachine_Turbine_01 DO

        07 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_01_On ENTRÉE

08 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_01_On FAIRE

        09 effet de ShallowTurbineManager[ShallowTurbineManager].Initial_105721__TO__Low_61729

10 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_01_On_Low ENTRÉE

11 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_01_On_Low DO

Nous pouvons apprendre que :

  • Le nœud shallowHistory 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éclencheur [SUIVANT]

01 deepManager[DeepTurbineManager].StateMachine_Turbine_03_On_Low SORTIE

02 deepManager[DeepTurbineManager].StateMachine_Turbine_03_À la sortie

03 deepManager[DeepTurbineManager].StateMachine_Turbine_03 SORTIE

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éclencheur [NEXT] pour sortir de Turbine_01 et activer Turbine_02

Les deux shallowManager et deepManager activent Turbine_02.Off, qui est l'historique instantané lorsqu'ils sont sortis.

Déclencheur [NEXT] pour sortir de la Turbine_02 et activer la Turbine_03

Les fonctions shallowManager et deepManager activent toutes deux Turbine_03.On.Low. Cependant, les séquences de ces fonctions sont différentes.

Pour le gestionnaire de profondeur , le paramètre shallowHistory ne peut restaurer que jusqu'à Turbine_03.On. Étant donné qu'un nœud initial est défini dans Turbine_03.On, la transition provenant d' Initial sera activée et Turbine_03.On.Low sera atteinte.

01 ShallowManager[ShallowTurbineManager].StateMachine_Turbine_02_Off SORTIE

02 Gestionnaire peu profond [ Gestionnaire de turbines peu profondes ]. StateMachine_Turbine_02 SORTIE

03 effet de ShallowTurbineManager[ShallowTurbineManager].Turbine_02__TO__History3_105713_61725

04 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_03 ENTRÉE

05 gestionnaire peu profond [gestionnaire de turbine peu profond].StateMachine_Turbine_03 DO

06 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_03_On ENTRÉE

07 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_03_On FAIRE

        08 effet de ShallowTurbineManager[ShallowTurbineManager].Initial_105727__TO__Low_61728

09 peu profondManager[ShallowTurbineManager].StateMachine_Turbine_03_On_Low ENTRÉE

10 peu profondManager[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 SORTIE

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