Articulo de referencia

SCXML

SCXML significa State Chart XML: State Machine Notation for Control Abstraction (Notación de máquina de estados XML para abstracción de control). Es un lenguaje de marcado basad...

SCXML significa State Chart XML: State Machine Notation for Control Abstraction (Notación de máquina de estados XML para abstracción de control). Es un lenguaje de marcado basado en XML que proporciona un entorno de ejecución genérico basado en máquinas de estados , utilizando 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 estado que ya se utilizan en otros contextos XML. Por ejemplo, se espera que las notaciones SCXML reemplacen las notaciones de máquinas de estado utilizadas en la próxima versión CCXML 2.0 (un estándar XML diseñado para brindar soporte de telefonía a VoiceXML ). También podría utilizarse como lenguaje de control multimodal en la actividad de interacción multimodal .

Uno de los objetivos de este lenguaje es asegurar que sea compatible con CCXML y que exista una forma sencilla de convertir los scripts CCXML existentes a SCXML sin realizar cambios importantes en el modelo de programación o la estructura del documento (por ejemplo, mediante el uso de 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 (formulario de voz, lista de selección de voz, etc.).
  • Como metalenguaje para aplicaciones de voz, además de la funcionalidad de 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, combina diálogos VoiceXML 3.0 con diálogos en otras modalidades, como teclado y ratón, tinta, visión, háptica, etc. También puede controlar modalidades combinadas, como la lectura de labios ( reconocimiento de voz combinado con visión), la entrada de voz con teclado como alternativa y varios teclados para la edición multiusuario.
  • Como marco de máquina de estados para una futura versión de CCXML.
  • Como lenguaje extendido de gestión de centros de llamadas, combina la funcionalidad de control de llamadas CCXML con la integración de telefonía informática para centros de llamadas que integran llamadas telefónicas con ventanas emergentes en la pantalla del ordenador, así como otros tipos de intercambio de mensajes como chats, mensajería instantánea, etc.
  • Como lenguaje general de control de procesos en otros contextos que no implican procesamiento del habla.

El borrador de la especificación VoiceXML 3.0 del W3C [ 3 ] incluye State Chart y SCXML Representation para definir la funcionalidad.

Aplicaciones multimodales

Los diseños de aplicaciones multimodales pueden utilizar diferentes modalidades (por ejemplo, voz, pantalla táctil o teclado y ratón) para las distintas partes de la comunicación, según la modalidad más adecuada. Por ejemplo, la entrada de voz permite 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 tareas en paralelo, y la aplicación Interaction Manager SCXML mantendrá la sincronización entre los diálogos de voz y visuales.

Una configuración multimodal

El documento del W3C Authoring Applications for the Multimodal Architecture [ 4 ] describe un sistema multimodal que implementa la arquitectura multimodal del W3C y proporciona 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. Cumple con los estándares y ofrece un buen soporte para eventos DOM. Solo admite el modelo de datos ECMAScript.
  • Intérprete y transformador/compilador de uSCXML C/C++ con enlaces de lenguaje para Java y C#. Compatibilidad total con ECMAScript mediante JavaScriptCore o la versión 8 de Google, modelos de datos adicionales para LUA y Prolog, y compatibilidad básica con el modelo de datos XPath. Modelo de datos PROMELA para verificación formal con el verificador de modelos SPIN.
  • Intérprete de diagramas de estados XML LXSC Lua: analiza y ejecuta máquinas de estados SCXML con un modelo de datos Lua.
  • El motor Qt SCXML también está implementado en C++ y está 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 es un motor SCXML implementado en Java que utiliza Rhino como motor JavaScript. También admite algunas funciones adicionales, como bibliotecas de etiquetas personalizadas e inclusiones. No cumple totalmente con los estándares W3C.
  • PySCXML es una implementación en Python. Admite una amplia gama de tecnologías, incluyendo websockets y SOAP. Cumple con los estándares más exigentes. También admite el modelo de datos ECMAScript. (Última actualización: 2013)
  • La consola PySCXML es una consola SCXML interactiva basada en 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

  1. "State Chart XML (SCXML): Notación de máquina de estados para abstracción de control" . Consorcio World Wide Web . 1 de septiembre de 2015. Consultado el 2 de marzo de 2016 .
  2. Diagrama de estados XML (SCXML): Notación de máquina de estados para la especificación de abstracción de control
  3. Especificación del lenguaje de marcado extensible de voz (VoiceXML) 3.0
  4. Autoría de aplicaciones para la arquitectura multimodal
  • Especificación SCXML 1.0 del W3C
  • Casos de uso comunes de SCXML: ejemplo de cronómetro