SCXML son las siglas de State Chart XML: State Machine Notation for Control Abstraction. Es un lenguaje de marcado basado en XML que proporciona un entorno de ejecución genérico basado en máquina de estado basado en diagramas de estado de Harel .
Extensión de nombre de archivo | .scxml |
---|---|
Desarrollado por | Consorcio Mundial de la red |
Último lanzamiento | 1.0 (1 de septiembre de 2015) |
Tipo de formato | Lenguaje de marcado |
Extendido desde | XML |
Sitio web | http://www.w3.org/TR/scxml/ |
SCXML es capaz de describir máquinas complejas de estados finitos . Por ejemplo, es posible describir notaciones como subestados, estados paralelos, sincronización o concurrencia en SCXML.
Metas
El objetivo de este estándar es generalizar las notaciones de los diagramas de estado que ya se utilizan en otros contextos XML. Por ejemplo, se espera que las notaciones SCXML sustituyan a las notaciones de las máquinas de estado utilizadas en la próxima versión CCXML 2.0 (un estándar XML diseñado para proporcionar soporte telefónico a VoiceXML ). También podría usarse como lenguaje de control multimodal en la Actividad de Interacción Multimodal .
Uno de los objetivos de este lenguaje es asegurarse de que el lenguaje sea compatible con CCXML y que haya una ruta fácil para que los scripts CCXML existentes se conviertan a SCXML sin cambios importantes en el modelo de programación o la estructura del documento (por ejemplo, utilizando una transformación XSL ).
La versión actual de la especificación fue lanzada por el W3C en septiembre de 2015. [1]
Aplicaciones
De acuerdo con la especificación W3C SCXML, [2] SCXML es un lenguaje de máquina de estado basado en eventos de propósito general que se puede usar de muchas maneras, incluyendo:
- Como lenguaje de diálogo de alto nivel que controla los módulos de voz encapsulados de VoiceXML 3.0 (formulario de voz, lista de selección de voz, etc.)
- Como metalenguaje de aplicación de voz, donde además de la funcionalidad VoiceXML 3.0, también puede controlar el acceso a la base de datos y los módulos de lógica empresarial.
- Como lenguaje de control multimodal en el marco de interacción MultiModal, combina los diálogos VoiceXML 3.0 con diálogos en otras modalidades, incluidos el teclado y el ratón, tinta, visión, háptica, etc. También puede controlar modalidades combinadas como lectura de labios (reconocimiento de voz y visión combinados) entrada con teclado como respaldo y múltiples teclados para edición multiusuario.
- Como marco de la máquina de estado para una versión futura de CCXML.
- Como un lenguaje extendido de administración de centros de llamadas, combina la funcionalidad de control de llamadas CCXML con la integración de telefonía por computadora para centros de llamadas que integran llamadas telefónicas con pantallas emergentes de computadora, así como otros tipos de intercambio de mensajes como chats, mensajería instantánea, etc.
- Como lenguaje de control de proceso general en otros contextos que no implican procesamiento de voz.
El borrador de la especificación W3C VoiceXML 3.0 [3] incluye Gráfico de estado y Representación SCXML para definir la funcionalidad.
Aplicaciones multimodales
Los diseños de aplicaciones multimodales pueden usar diferentes modalidades (por ejemplo, voz frente a pantalla táctil frente a teclado y mouse) para diferentes partes de una comunicación que mejor se adapten a ella. Por ejemplo, la entrada de voz se puede utilizar para evitar tener que escribir en la pantalla pequeña de un teléfono móvil, pero la pantalla puede ser una forma más rápida de comunicar una lista o mapa, en comparación con escuchar descripciones largas de las opciones disponibles. SCXML facilita hacer varias cosas en paralelo, y la aplicación Interaction Manager SCXML mantendrá la sincronización entre los diálogos de voz y visuales.
El documento W3C Authoring Applications for the Multimodal Architecture [4] describe un sistema multimodal que implementa la Arquitectura Multimodal W3C y da un ejemplo de una aplicación multimodal simple creada usando varios lenguajes de marcado W3C, incluyendo SCXML, CCXML, VoiceXML 2.1 y HTML.
Implementaciones
- scxmlcc Un compilador de scxml a C ++ eficiente.
- Apache Commons SCXML , una biblioteca Java pura para analizar y ejecutar diagramas SCXML
- SCXMLgui Editor visual de Java para SCXML.
- SCION SCXML implementado en JavaScript portátil.
- JSSCxml una implementación de navegador web. Muy conforme, con buen soporte para eventos DOM. Solo es compatible con el modelo de datos ECMAScript.
- uSCXML C / C ++ intérprete y transformador / compilador con enlaces de lenguaje para Java y C #. Soporte completo de ECMAScript a través de JavaScriptCore o v8 de Google, modelos de datos adicionales de LUA y Prolog, solo soporte rudimentario para el modelo de datos XPath. Modelo de datos PROMELA para verificación formal con el verificador de modelos SPIN.
- Intérprete LXSC Lua XML StateChart: analiza y ejecuta máquinas de estado SCXML con un modelo de datos Lua.
- Qt SCXML Engine también implementado en C ++ y estrechamente integrado con su concepto Signals and Slots , con un editor visual integrado en Qt Creator .
- XState implementado en JavaScript.
Implementaciones inactivas
Las siguientes implementaciones están inactivas, es decir, el último cambio en su código fuente se realizó hace más de dos años:
- Interfaz web para una implementación SCXML experimental en el lenguaje de programación Oz.
- Legian Un motor SCXML implementado en Java utilizando Rhino como motor Javascript. También admite algunas características adicionales, como bibliotecas de etiquetas personalizadas e incluye. No es totalmente compatible con W3C.
- PySCXML una implementación de Python. Admite una amplia gama de tecnologías, incluidos websockets y SOAP. Altamente compatible con los estándares. También es compatible con el modelo de datos ECMAScript. (último empujón 2013)
- La consola PySCXML una consola SCXML interactiva basada en la web para ejecutar e interactuar con documentos SCXML. Admite el modelo de datos ECMAScript.
- SCXML4Flex Puerto parcial ActionScript / Flex de PySCXML .
Ver también
Referencias
- ^ "XML de gráfico de estado (SCXML): notación de máquina de estado para abstracción de control" . Consorcio World Wide Web . 1 de septiembre de 2015 . Consultado el 2 de marzo de 2016 .
- ^ XML de gráfico de estado (SCXML): Notación de máquina de estado para la especificación de abstracción de control
- ^ Especificación del lenguaje de marcado extensible de voz (VoiceXML) 3.0
- ^ Aplicaciones de autoría para la arquitectura multimodal
enlaces externos
- Especificación W3C SCXML 1.0
- Casos de uso de SCXML Commons: ejemplo de cronómetro