Тип QML ScxmlStateMachine
Предоставляет интерфейс к состояниям автомата, созданным из файлов SCXML. Подробнее...
| Заявление импорта: | import QtScxml |
| С: | Qt 5.7 |
| Инициализирует: | QScxmlStateMachine |
Свойства
- dataModel : ScxmlDataModel
- initialValues : var
- initialized : bool
- invoked : bool
- invokedServices : list
- loader : Loader
- name : string
- parseErrors : var
- running : bool
- sessionId : string
Сигналы
- finished()
- log(string label, string msg)
- reachedStableState()
Методы
- activeStateNames(bool compress)
- cancelDelayedEvent(string sendId)
- init()
- isActive(string scxmlStateName)
- isDispatchableTarget(string target)
- start()
- stateNames(bool compress)
- stop()
- submitEvent(string eventName, var data)
- submitEvent(event)
Подробное описание
Тип ScxmlStateMachine является реализацией State Chart XML (SCXML).
Все состояния, определённые в файле SCXML, доступны в качестве свойств этого типа. Эти свойства — булевы значения, указывающие, активно или неактивно состояние.
Документация по свойствам
dataModel : ScxmlDataModel
Модель данных, используемая для этого автомата состояний.
SCXML модели данных описаны в Спецификации SCXML — 5 Модель данных и работа с данными. Подробнее о поддерживаемых моделях данных см. Соответствие SCXML.
Изменение модели данных, когда автомат состояний уже инициализирован, не оговорено в стандарте SCXML и приводит к неопределённому поведению.
См. также QScxmlDataModel, QScxmlNullDataModel и QScxmlCppDataModel.
initialValues : var
Начальные значения, используемые для настройки модели данных.
initialized : bool
Это только для чтения свойство установлено в true если автомат состояний инициализирован, false в противном случае.
invoked : bool
Вызван ли автомат состояний из внешнего автомата состояний.
Это только для чтения свойство установлено в true когда автомат состояний был запущен как служба с элементом <invoke>, false в противном случае.
invokedServices : list
Список SCXML-сервисов, которые были вызваны из основного автомата состояний (возможно, рекурсивно).
loader : Loader
Загрузчик, который используется в данный момент для разрешения и загрузки URL-адресов для автомата состояний.
name : string
Имя автомата состояний, заданное атрибутом name тега <scxml>.
parseErrors : var
Список ошибок разбора, произошедших во время создания автомата состояний из файла SCXML.
running : bool
Состояние работы этого автомата состояний.
sessionId : string
Идентификатор сессии текущего автомата состояний.
Идентификатор сессии используется для маршрутизации сообщений между родительским и дочерним автоматами состояний. Если автомат состояний запущен с элементом <invoke>, все отправляемые им события будут иметь поле invokeid установленное в идентификатор сессии. Автомат состояний будет использовать источник события (который задаётся атрибутом target или targetexpr в элементе <send>), чтобы отправлять сообщения в правильный дочерний автомат состояний.
Документация по сигналам
finished()
Этот сигнал испускается, когда автомат состояний достигает конечного состояния верхнего уровня.
Соответствующий обработчик сигналов — onFinished().
Примечание: Соответствующий обработчик — onFinished.
log(string label, string msg)
Этот сигнал испускается, если используется тег <log> в SCXML. label — значение атрибута label тега <log>. msg — значение вычисленного атрибута expr тега <log>. Если атрибут expr отсутствует, возвращается пустая строка.
Соответствующий обработчик сигналов — onLog().
Примечание: Соответствующий обработчик — onLog.
reachedStableState()
Этот сигнал испускается, когда очередь событий пуста в конце шага макроса или когда достигнуто конечное состояние.
Соответствующий обработчик сигналов — onreachedStableState().
Примечание: Соответствующий обработчик — onReachedStableState.
Документация по методам
activeStateNames(bool compress)
Возвращает список имён состояний всех активных состояний.
Когда состояние активно, все его родительские состояния по определению также активны. Когда compress — true (по умолчанию), родительские состояния отфильтровываются, и возвращаются только листовые состояния. Когда оно false, возвращается полный список активных состояний.
cancelDelayedEvent(string sendId)
Отменяет отложенное событие с указанным sendId.
init()
Инициализирует автомат состояний, устанавливая начальные значения для элементов <data> и выполняя любые теги <script> тега <scxml>. Начальные значения данных берутся из свойства initialValues.
Возвращает false если произошли ошибки разбора или какой-либо из шагов инициализации завершился неудачно. Возвращает true в противном случае.
isActive(string scxmlStateName)
Возвращает true если состояние, заданное scxmlStateName, активно, false в противном случае.
isDispatchableTarget(string target)
Возвращает true если сообщение в target может быть отправлено этим автоматом состояний.
Допустимые целевые адреса:
-
#_parentдля родительского автомата состояний, если текущий автомат состояний запущен элементом<invoke> -
#_internalдля текущего автомата состояний -
#_scxml_sessionid, гдеsessionid— идентификатор сессии текущего автомата состояний -
#_servicename, гдеservicename— идентификатор или имя службы, запущенной с помощью<invoke>этим автоматом состояний
start()
Запускает этот автомат состояний. Автомат сбрасывает свою конфигурацию и переходит в начальное состояние. Когда введено конечное состояние верхнего уровня, автомат испускает сигнал finished().
См. также stop() и finished().
stateNames(bool compress)
Возвращает список имён всех состояний.
Когда compress имеет значение true (по умолчанию), состояния, содержащие дочерние состояния, отфильтровываются, и возвращаются только листовые состояния. Когда оно равно false, возвращается полный список всех состояний.
Возвращаемый список не содержит состояний возможных вложенных автоматов состояний.
Примечание: Порядок имен состояний в списке соответствует порядку их появления в документе SCXML.
stop()
Останавливает этот автомат состояний. Автомат больше не будет выполнять дальнейшие переходы состояний. Его свойство running устанавливается в значение false.
См. также start() и finished().
submitEvent(строка eventName, переменная data)
Утилитарный метод для создания и отправки внешнего события с заданным именем eventName и данными data в качестве полезной нагрузки (необязательно).
submitEvent(event)
Отправляет событие SCXML event во внутреннюю или внешнюю очередь событий в зависимости от приоритета события.
Если установлен задержки, событие будет помещено в очередь для доставки после истечения таймаута. Автомат состояний берет событие на себя и удаляет его после обработки.
См. также QScxmlEvent.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qml-qtscxml-scxmlstatemachine.html