Язык разметки на основе XML
SCXML означает State Chart XML: State Machine Notation for Control Abstraction. Это язык разметки на основе XML , который предоставляет общую среду выполнения на основе конечного автомата на основе диаграмм состояний Harel .
SCXML способен описывать сложные конечные автоматы . Например, в SCXML можно описывать такие нотации, как подсостояния, параллельные состояния, синхронизация или параллелизм.
Цели
Целью этого стандарта является обобщение нотаций диаграмм состояний , которые уже используются в других контекстах XML. Например, ожидается, что нотации SCXML заменят нотации конечных автоматов, используемые в следующей версии CCXML 2.0 (стандарт XML, разработанный для обеспечения поддержки телефонии VoiceXML ). Он также может использоваться как язык управления мультимодальными данными в Multimodal Interaction Activity .
Одной из целей этого языка является обеспечение совместимости языка с CCXML и обеспечение простого пути преобразования существующих скриптов CCXML в SCXML без существенных изменений в модели программирования или структуре документа (например, с помощью преобразования XSL ).
Текущая версия спецификации была выпущена W3C в сентябре 2015 года. [1]
Приложения
Согласно спецификации W3C SCXML, [2] SCXML — это универсальный язык программирования состояний, основанный на событиях, который можно использовать многими способами, включая:
- Как язык диалога высокого уровня, управляющий инкапсулированными речевыми модулями VoiceXML 3.0 (голосовая форма, список выбора голоса и т. д.)
- Как метаязык голосовых приложений, в котором в дополнение к функциональности VoiceXML 3.0 он также может управлять доступом к базе данных и модулями бизнес-логики.
- Как язык мультимодального управления в фреймворке MultiModal Interaction, объединяющий диалоги VoiceXML 3.0 с диалогами в других модальностях, включая клавиатуру и мышь, рукописный ввод, зрение, тактильные ощущения и т. д. Он также может управлять комбинированными модальностями, такими как чтение по губам (комбинированное распознавание речи и зрение), речевой ввод с клавиатурой в качестве резерва и несколько клавиатур для многопользовательского редактирования.
- В качестве структуры конечного автомата для будущей версии CCXML.
- Как расширенный язык управления колл-центром, объединяющий функциональность управления вызовами CCXML с интеграцией компьютерной телефонии для колл-центров, которые интегрируют телефонные звонки со всплывающими экранами компьютеров, а также другими типами обмена сообщениями, такими как чаты, мгновенные сообщения и т. д.
- В качестве общего языка управления процессами в других контекстах, не связанных с обработкой речи.
Проект спецификации W3C VoiceXML 3.0 [3] включает диаграмму состояний и представление SCXML для определения функциональности.
Мультимодальные приложения
Мультимодальные приложения могут использовать различные модальности (например, голос против сенсорного экрана против клавиатуры и мыши) для различных частей коммуникации, которые лучше всего подходят для этого. Например, голосовой ввод может использоваться, чтобы избежать необходимости печатать на маленьком экране мобильного телефона, но экран может быть более быстрым способом передачи списка или карты по сравнению с прослушиванием длинных описаний доступных опций. SCXML упрощает выполнение нескольких задач параллельно, а приложение Interaction Manager SCXML будет поддерживать синхронизацию между голосовыми и визуальными диалогами.
В документе W3C «Создание приложений для многомодальной архитектуры» [4] описывается многомодальная система, реализующая многомодальную архитектуру W3C, и приводится пример простого многомодального приложения, созданного с использованием различных языков разметки W3C, включая SCXML, CCXML, VoiceXML 2.1 и HTML.
Реализации
- scxmlcc Эффективный компилятор scxml в C++.
- Apache Commons SCXML, чистая библиотека Java для анализа и выполнения диаграмм SCXML
- SCXMLgui Визуальный редактор Java для SCXML.
- SCION SCXML, реализованный на переносимом JavaScript.
- JSSCxml — реализация веб-браузера. Высококонформный, с хорошей поддержкой событий DOM. Поддерживает только модель данных ECMAScript.
- uSCXML C/C++ интерпретатор и преобразователь/компилятор с языковыми привязками для Java и C#. Полная поддержка ECMAScript через JavaScriptCore или Google v8, дополнительные модели данных LUA и Prolog, только элементарная поддержка модели данных XPath. Модель данных PROMELA для формальной проверки с помощью средства проверки моделей SPIN.
- Интерпретатор LXSC Lua XML StateChart — анализирует и выполняет конечные автоматы SCXML с моделью данных Lua.
- Движок Qt SCXML также реализован на C++ и тесно интегрирован с концепцией сигналов и слотов , а визуальный редактор интегрирован в Qt Creator .
- XState реализован на TypeScript.
Неактивные реализации
Следующие реализации неактивны, т.е. последнее изменение в их исходном коде было сделано более двух лет назад:
- Веб-интерфейс к экспериментальной реализации SCXML на языке программирования Oz
- Legian Движок SCXML, реализованный на Java с использованием Rhino в качестве движка Javascript. Он также поддерживает некоторые дополнительные функции, такие как пользовательские библиотеки тегов и включения. Он не полностью соответствует W3C.
- PySCXML — реализация Python. Поддерживает широкий спектр технологий, включая веб-сокеты и SOAP. Полностью соответствует стандартам. Также поддерживает модель данных ECMAScript. (последний толчок 2013)
- Консоль PySCXML — интерактивная веб-консоль SCXML для запуска и взаимодействия с документами SCXML. Поддерживает модель данных ECMAScript.
- SCXML4Flex ActionScript/Flex частичный порт PySCXML.
Смотрите также
Ссылки
- ^ "State Chart XML (SCXML): Нотация конечного автомата для абстракции управления". Консорциум World Wide Web . 1 сентября 2015 г. Получено 2 марта 2016 г.
- ^ State Chart XML (SCXML): Нотация конечного автомата для спецификации абстракции управления
- ^ Спецификация Voice Extensible Markup Language (VoiceXML) 3.0
- ^ Разработка приложений для мультимодальной архитектуры
Внешние ссылки
- Спецификация W3C SCXML 1.0
- Примеры использования SCXML Commons — пример секундомера