Lenguaje de marcado basado en XML
SCXML significa 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áquinas de estados basado en diagramas de estados de Harel .
SCXML permite describir máquinas de estados finitos complejas . Por ejemplo, es posible describir notaciones como subestados, estados paralelos, sincronización o concurrencia en SCXML.
Objetivos
El objetivo de este estándar es generalizar las notaciones de diagramas de estados que ya se utilizan en otros contextos XML. Por ejemplo, se espera que las notaciones SCXML reemplacen las notaciones de máquinas de estados utilizadas en la próxima versión CCXML 2.0 (un estándar XML diseñado para brindar soporte telefónico a VoiceXML ). También podría usarse como un lenguaje de control multimodal en la Actividad de interacción multimodal .
Uno de los objetivos de este lenguaje es garantizar que el lenguaje sea compatible con CCXML y que exista un camino 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 publicada por el W3C en septiembre de 2015. [1]
Aplicaciones
Según la especificación SCXML del W3C, [2] SCXML es un lenguaje de máquina de estados basado en eventos de propósito general que se puede utilizar de muchas maneras, entre ellas:
- Como lenguaje de diálogo de alto nivel que controla los módulos de voz encapsulados de VoiceXML 3.0 (formato 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 bases de datos y módulos de lógica empresarial.
- Como lenguaje de control multimodal en el marco de interacción multimodal, que combina diálogos de VoiceXML 3.0 con diálogos en otras modalidades, incluidos teclado y mouse, tinta, visión, háptica, etc. También puede controlar modalidades combinadas como lectura de labios ( reconocimiento de voz y visión combinados), entrada de voz con teclado como respaldo y múltiples teclados para edición multiusuario.
- Como marco de máquina de estados para una futura versión de CCXML.
- Como lenguaje extendido para gestión de call center, que combina la funcionalidad de control de llamadas CCXML con la integración de telefonía y computadora para call center que integran llamadas telefónicas con ventanas emergentes en la pantalla de la computadora, así como otros tipos de intercambio de mensajes como chats, mensajería instantánea, etc.
- Como lenguaje de control de procesos generales en otros contextos que no implican procesamiento de voz.
El borrador de la especificación W3C VoiceXML 3.0 [3] incluye un diagrama de estados y una representación SCXML para definir la funcionalidad.
Aplicaciones multimodales
Los diseños de aplicaciones multimodales pueden utilizar distintas modalidades (por ejemplo, voz, pantalla táctil, teclado y ratón) para las distintas partes de una comunicación que mejor se adapten a ellas. Por ejemplo, la entrada de voz se puede utilizar para evitar tener que escribir en la pequeña pantalla de un teléfono móvil, pero la pantalla puede ser una forma más rápida de comunicar una lista o un mapa, en comparación con escuchar largas descripciones de las opciones disponibles. SCXML facilita la realización de varias cosas en paralelo, y la aplicación SCXML de Interaction Manager mantendrá la sincronización entre los diálogos de voz y visuales.
El documento del W3C Aplicaciones de creación para la arquitectura multimodal [4] describe un sistema multimodal que implementa la arquitectura multimodal del W3C y ofrece un ejemplo de una aplicación multimodal simple creada utilizando varios lenguajes de marcado del W3C, incluidos SCXML, CCXML, VoiceXML 2.1 y HTML.
Implementaciones
- scxmlcc Un compilador eficiente de scxml a C++.
- Apache Commons SCXML, una biblioteca Java pura para analizar y ejecutar diagramas SCXML
- SCXMLgui Editor visual Java para SCXML.
- SCION SCXML implementado en JavaScript portable.
- JSSCxml es una implementación para navegadores web. Muy compatible con la normativa y con buen soporte para eventos DOM. Solo admite el modelo de datos ECMAScript.
- Intérprete y transformador/compilador de C/C++ uSCXML con enlaces de lenguaje para Java y C#. Soporte completo para ECMAScript a través de JavaScriptCore o v8 de Google, modelos de datos LUA y Prolog adicionales, soporte solo 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.
- Motor SCXML de Qt implementado también en C++ y estrechamente integrado con su concepto de señales y ranuras , con un editor visual integrado en Qt Creator .
- XState implementado en TypeScript.
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 experimental de SCXML en el lenguaje de programación Oz
- Legian Un motor SCXML implementado en Java que utiliza Rhino como motor de Javascript. También admite algunas funciones adicionales, como bibliotecas de etiquetas personalizadas e inclusiones. No es totalmente compatible con W3C.
- PySCXML es una implementación de Python. Admite una amplia gama de tecnologías, incluidos websockets y SOAP. Cumple con los estándares más exigentes. También admite el modelo de datos ECMAScript. (Última actualización en 2013)
- La consola PySCXML es una consola SCXML interactiva basada en la Web para ejecutar e interactuar con documentos SCXML. Admite el modelo de datos ECMAScript.
- SCXML4Flex ActionScript/Flex puerto parcial de PySCXML.
Véase también
Referencias
- ^ "State Chart XML (SCXML): notación de máquina de estados para la abstracción de control". Consorcio World Wide Web . 1 de septiembre de 2015. Consultado el 2 de marzo de 2016 .
- ^ Diagrama de estados XML (SCXML): especificación de la notación de máquina de estados para la abstracción de control
- ^ Especificación del lenguaje de marcado extensible por voz (VoiceXML) 3.0
- ^ Creación de aplicaciones para la arquitectura multimodal
Enlaces externos
- Especificación SCXML 1.0 del W3C
- Casos de uso de SCXML Commons: ejemplo de cronómetro