Pré. | Proc. |
Modélisation Statemachines Exécutables
La plupart du travail requis pour modéliser un Statemachine Exécutable est une modélisation standard basée sur UML des modélisation de classes et State , bien qu'il y ait quelques conventions qui doivent être respectées pour assurer une base de code bien formée. La seule nouvelle construction est l'utilisation d'un élément Artefact stéréotypé pour former la configuration d'une instance ou d'un scénario Statemachine Exécutable . L'artefact est utilisé pour spécifier des détails tels que :
- Le langage de code ( JavaScript , C# , Java, C++ dont C)
- Les Classes et Statemachines impliquées dans le scénario
- Les spécifications de l'instance, y compris l'état d'exécution ; note que cela pourrait inclure plusieurs instances de la même Statemachine , par exemple lorsqu'une classe 'Player' est utilisée deux fois dans une simulation de match de tennis
Outils et objets de modélisation de base pour Statemachines Exécutables des Modélisation
Ce sont les principaux éléments de modélisation utilisés lors de la construction des modélisation Statemachines Exécutables .
Type d'élément |
Description |
---|---|
Classes et Diagrammes de classes |
Les classes définissent les types d' object pertinents pour la ou les Statemachine d'état modélisées. Par exemple, dans un scénario de match de tennis simple, vous pouvez définir une classe pour chacun d'un joueur, d'un match, d'un Hit et d'un arbitre. Chacun aura sa propre Statemachine (s) et au moment de l'exécution sera représenté par des instances d' object pour chaque entité impliquée. Voir le Guide de Modélisation UML pour plus d'informations sur les Classes et les diagrammes de Classes. |
Statemachines |
Pour chaque classe que vous définissez et qui aura un comportement dynamique dans un scénario, vous définirez généralement une ou plusieurs Statemachines UML . Chaque Statemachine déterminera le comportement légal basé sur l'état approprié pour un aspect de la classe propriétaire. Par exemple, il est possible d'avoir une machine à Statemachine qui représente l'état émotionnel d'un joueur, une qui suit sa condition physique et ses niveaux d'énergie actuels et une qui représente son état de victoire ou de défaite. Toutes ces Statemachines seront initialisées et démarrées lorsque le scénario Statemachine commencera son exécution. |
Artefact Statemachine Exécutable |
Cet artefact stéréotypé est l'élément central utilisé pour spécifier les participants, la configuration et les conditions de démarrage d'un Statemachine Exécutable . Du point de vue du scénario, il est utilisé pour déterminer quelles instances (de classes) sont impliquées, quels événements elles peuvent se déclencher et s'envoyer, et dans quelles conditions de démarrage elles fonctionnent. Du point de vue de la configuration, l'artefact est utilisé pour configurer le lien vers un script d'analyseur qui déterminera le répertoire de sortie, le langage de code, le script de compilation, etc. Un clic droit sur l'Artefact vous permettra de générer, construire, compiler et visualiser l'exécution en temps réel de vos Statemachines . |
Constructions Statemachine prises en charge
Ce tableau détaille les constructions Statemachine prises en charge et toutes les limitations ou contraintes générales pertinentes pour chaque type.
Construction |
Description |
---|---|
Statemachines |
Activation par défaut : Lorsque la Statemachine commence à s'exécuter. Entrée du point d'entrée : transitions du point d'entrée aux sommets dans les régions contenues.
|
States |
|
Entrée d' State composite |
|
Sous-états |
|
Prise en Support transitions |
|
Déclencheur et Événements |
Un Statemachine Exécutable supporte la gestion des événements pour les signaux uniquement. Pour utiliser les types d'événement Call, Timing ou Change, vous devez définir un mécanisme externe pour générer des signaux basés sur ces événements. |
Signal |
Attributes peuvent être définis dans Signaux ; la valeur des attributs peut être utilisée comme argument d'événement dans Transition Gardes et Effets . Par exemple, voici le jeu de code dans l'effet d'une transition en C++ : if(signal->signalEnum == ENUM_SIGNAL2) { int xVal = ((Signal2*)signal)->myVal ; } Signal2 est généré comme ce code : classe Signal2 : Signal public{ Publique: Signal2(){} ; Signal2(std::vector<String>& lstArguments); int myVal; } ; Note : Plus de détails peuvent être trouvés en générant un Statemachine Exécutable et en se référant au fichier 'EventProxy' généré. |
Initial |
Un pseudo-état initial représente un point de départ pour une région. C'est la source d'au plus une transition ; il peut y avoir au plus un sommet initial dans une région. |
Régions |
Activation par défaut et activation explicite : Les transitions se terminent sur l' State contenant :
|
Choix |
Les contraintes de garde sur toutes les transitions sortantes sont évaluées dynamiquement, lorsque la traversée de la transition composée atteint ce pseudo-état. |
Jonction |
Branche conditionnelle statique : les contraintes de garde sont évaluées avant l'exécution de toute transition composée. |
Bifurquer / Rejoindre |
Sans thread, chaque région active se déplace alternativement d'une étape, sur la base d'un mécanisme de pool d'événements d'achèvement. |
Nœuds EntryPoint / ExitPoint |
Non-threadé pour Statemachine State ; chaque région active se déplace alternativement d'une étape, sur la base d'un mécanisme de pool d'événements d'achèvement. |
Nœuds d'historique |
|
Événements différés |
Dessinez une transition auto et changez le type de transition en Interne. Type 'différer();' dans le champ 'Effet' pour la transition. |
Références des points de connexion |
Une référence de point de connexion représente une utilisation (dans le cadre d'un State de sous-machine) d'un point d'entrée/sortie défini dans la Statemachine d'état référencée par l' State de sous-machine. Les références de point de connexion d'un State de sous-machine peuvent être utilisées comme sources et cibles de transitions. Ils représentent les entrées ou les sorties de la Statemachine référencées par la Submachine State . |
Comportements State |
Les comportements State 'entry', 'doActivity' et 'exit' sont définis comme des opérations sur un State . Par défaut, vous saisissez le code qui sera utilisé pour chaque comportement dans le champ Panneau 'Code' de la fenêtre Propriétés pour l'opération Comportement. Note que vous pouvez modifier cela pour saisir le code dans le panneau 'Comportement', en personnalisant le gabarit de génération . Le comportement 'doActivity' généré sera exécuter jusqu'à la fin avant de continuer. Le code n'est pas concurrent avec un autre comportement d'entrée ; le comportement 'doActivity' est implémenté en tant que comportement 'exécuter en séquence après entrée'. |
Références aux comportements dans d'autres contextes/classes
Si l' State de la sous-machine fait référence à des éléments de comportement en dehors du contexte ou de la classe actuelle, vous devez ajouter un connecteur <<import>> de la classe de contexte actuelle à la classe de contexte de conteneur. Par exemple:
State S1 de la sous-machine dans la classe 1 fait référence à la Statemachine d'état ST2 dans la classe 2
Par conséquent, nous ajoutons un connecteur <<import>> de Class1 à Class2 afin que la génération de code Statemachine Exécutable génère correctement le code pour Submachine State S1. (Sur la classe 1, cliquez sur la flèche Quick Linker et faites glisser jusqu'à la classe 2, puis sélectionnez "Importer" dans le menu des types de connecteurs.)
Réutiliser les artefacts Statemachine Exécutable
Vous pouvez créer plusieurs modèles ou versions d'un composant à l'aide d'un seul artefact exécutable. Un artefact représentant une résistance, par exemple, pourrait être réutilisé pour créer à la fois une résistance à feuille et une résistance bobinée. Cela est susceptible d'être le cas pour des objets similaires qui, bien que représentés par le même classifieur, présentent généralement des états exécuter différents. Une propriété nommée 'resistorType' prenant la valeur 'wire' plutôt que 'foil' pourrait modélisation du point de vue de la modélisation. Les mêmes Statemachines peuvent ensuite être réutilisées pour tester les changements de comportement qui pourraient résulter de la variance de l'état d'exécution. Voici la procédure :
Marcher |
Action |
---|---|
Créer ou ouvrir un diagramme de composants |
Ouvrez un diagramme de composants sur lequel travailler. Il peut s'agir du diagramme contenant votre artefact d'origine. |
Sélectionnez l' Statemachine Exécutable à copier |
Trouvez maintenant l'artefact original Statemachine Exécutable dans la fenêtre Navigateur . |
Créer le nouveau composant |
Tout en maintenant la touche enfoncée, faites glisser l'artefact d'origine sur votre diagramme . Deux questions vous seront posées. La réponse au premier est Object et au second Tout. Renommez l'artefact pour le différencier de l'original, puis procédez à la modification de ses valeurs de propriété. |