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