Sur cette page

ScxmlStateMachine QML Type

Fournit une interface aux machines à états créées à partir de fichiers SCXML. Plus d'informations...

Import Statement: import QtScxml 6.11
In C++: QScxmlStateMachine

Propriétés

Signaux

Méthodes

Description détaillée

Le type ScxmlStateMachine est une implémentation du State Chart XML (SCXML).

Tous les états définis dans le fichier SCXML sont accessibles en tant que propriétés de ce type. Ces propriétés sont des valeurs booléennes qui indiquent si l'état est actif ou inactif.

Documentation sur les propriétés

dataModel : ScxmlDataModel

Le modèle de données à utiliser pour cette machine d'état.

Les modèles de données SCXML sont décrits dans la spécification SCXML - 5 Modèle de données et manipulation des données. Pour plus d'informations sur les modèles de données pris en charge, voir Conformité SCXML.

La modification du modèle de données lorsque l'automate d'état a été initialized n'est pas spécifiée dans la norme SCXML et entraîne un comportement non défini.

Voir également QScxmlDataModel, QScxmlNullDataModel, et QScxmlCppDataModel.

initialValues : var

Les valeurs initiales à utiliser pour la mise en place du modèle de données.

initialized : bool [read-only]

Cette propriété en lecture seule a pour valeur true si la machine à états a été initialisée, false dans le cas contraire.

invoked : bool [read-only]

Indique si l'automate à états a été invoqué à partir d'un automate à états extérieur.

Cette propriété en lecture seule a pour valeur true lorsque la machine à états a été lancée en tant que service avec l'élément <invoke>, et false dans le cas contraire.

invokedServices : list [read-only]

Liste des services SCXML qui ont été invoqués à partir de la machine d'état principale (éventuellement de manière récursive).

loader : Loader

Le chargeur actuellement utilisé pour résoudre et charger les URI de la machine d'état.

name : string [read-only]

Le nom de la machine d'état tel qu'il est défini par l'attribut name de la balise <scxml>.

parseErrors : var [read-only]

La liste des erreurs d'analyse survenues lors de la création d'une machine à états à partir d'un fichier SCXML.

running : bool

L'état de fonctionnement de cette machine à états.

sessionId : string [read-only]

L'identifiant de session de l'automate d'état actuel.

L'identifiant de session est utilisé pour l'acheminement des messages entre les machines d'état parent et enfant. Si une machine à états est démarrée par un élément <invoke>, tout événement qu'elle envoie aura pour champ invokeid l'identifiant de session. L'automate d'état utilisera l'origine d'un événement (définie par l'attribut target ou targettexpr d'un élément <send> ) pour envoyer des messages à l'automate d'état enfant approprié.

Documentation sur les signaux

finished()

Ce signal est émis lorsque l'automate d'état atteint un état final de premier niveau.

Le gestionnaire de signal correspondant est onFinished().

Note : Le gestionnaire correspondant est onFinished.

log(string label, string msg)

Ce signal est émis si une balise <log> est utilisée dans le SCXML. label est la valeur de l'attribut label de la balise <log>. msg est la valeur de l'attribut expr évalué de la balise <log>. S'il n'y a pas d'attribut expr, une chaîne nulle sera renvoyée.

Le gestionnaire de signal correspondant est onLog().

Note : Le gestionnaire correspondant est onLog.

reachedStableState()

Ce signal est émis lorsque la file d'attente des événements est vide à la fin d'une étape de la macro ou lorsqu'un état final est atteint.

Le gestionnaire de signal correspondant est onreachedStableState().

Note : Le gestionnaire correspondant est onReachedStableState.

Documentation de la méthode

list<string> activeStateNames(bool compress)

Récupère une liste de noms de tous les états actifs.

Lorsqu'un état est actif, tous ses états parents sont actifs par définition. Lorsque compress est true (par défaut), les états parents sont filtrés et seuls les états feuilles sont renvoyés. Lorsque la valeur est false, la liste complète des états actifs est renvoyée.

void cancelDelayedEvent(string sendId)

Annule un événement retardé avec l'adresse sendId.

bool init()

Initialise la machine à états en définissant les valeurs initiales des éléments <data> et en exécutant toutes les balises <script> de la balise <scxml>. Les valeurs initiales des données proviennent de la propriété initialValues.

Renvoie false en cas d'erreur d'analyse ou d'échec de l'une des étapes d'initialisation. Sinon, il renvoie true.

bool isActive(string scxmlStateName)

Renvoie true si l'état spécifié par scxmlStateName est actif, false sinon.

bool isDispatchableTarget(string target)

Renvoie true si un message destiné à target peut être envoyé par cette machine d'état.

Les cibles valides sont

  • #_parent pour l'automate d'état parent si l'automate d'état actuel est démarré par <invoke>
  • #_internal pour l'automate d'état actuel
  • #_scxml_sessionidsessionid est l'identifiant de session de l'automate à états actuel
  • #_servicenamepour la machine à états actuelle , où servicename est l'ID ou le nom d'un service démarré avec <invoke> par cette machine à états

void start()

Démarre cette machine d'état. La machine réinitialise sa configuration et passe à l'état initial. Lorsqu'un état final de niveau supérieur est atteint, la machine émet le signal finished().

Voir également stop() et finished().

list<string> stateNames(bool compress)

Récupère une liste de noms d'états de tous les états.

Lorsque compress est true (par défaut), les états qui contiennent des états enfants sont filtrés et seuls les états feuilles sont renvoyés. Lorsque la valeur est false, la liste complète de tous les états est renvoyée.

La liste renvoyée ne contient pas les états d'éventuelles machines à états imbriquées.

Remarque : l'ordre des noms d'états dans la liste correspond à l'ordre dans lequel les états apparaissent dans le document SCXML.

void stop()

Arrête cette machine à états. La machine n'exécutera plus de transitions d'état. Sa propriété running est définie sur false.

Voir également start() et finished().

void submitEvent(event)

Soumet l'événement SCXML event à la file d'attente d'événements interne ou externe en fonction de la priorité de l'événement.

Lorsqu'un délai est défini, l'événement est mis en file d'attente pour livraison une fois le délai écoulé. La machine d'état prend possession de l'événement et le supprime après traitement.

Voir aussi QScxmlEvent.

void submitEvent(string eventName, var data)

Méthode utilitaire permettant de créer et de soumettre un événement externe dont le nom est eventName et les données de la charge utile data (facultatif).

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.