HOME

TheInfoList



OR:

SCXML stands for State Chart XML: State Machine Notation for Control Abstraction. It is an
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable ...
-based markup language that provides a generic
state-machine A finite-state machine (FSM) or finite-state automaton (FSA, plural: ''automata''), finite automaton, or simply a state machine, is a mathematical model of computation. It is an abstract machine that can be in exactly one of a finite number o ...
-based execution environment based on Harel statecharts. SCXML is able to describe complex
finite state machine A finite-state machine (FSM) or finite-state automaton (FSA, plural: ''automata''), finite automaton, or simply a state machine, is a mathematical model of computation. It is an abstract machine that can be in exactly one of a finite number o ...
s. For example, it is possible to describe notations such as sub-states, parallel states, synchronization, or concurrency, in SCXML.


Goals

The objective of this standard is to genericize
state diagram A state diagram is a type of diagram used in computer science and related fields to describe the behavior of systems. State diagrams require that the system described is composed of a finite number of states; sometimes, this is indeed the case, ...
notations that are already used in other XML contexts. For example, it is expected that SCXML notations will replace the State machines notations used in the next
CCXML Call Control eXtensible Markup Language (CCXML) is an XML standard designed to provide asynchronous event-based telephony support to VoiceXML. Its current status is a W3C recommendation, adopted May 10, 2011. Whereas VoiceXML is designed to provid ...
2.0 version (an XML standard designed to provide
telephony Telephony ( ) is the field of technology involving the development, application, and deployment of telecommunication services for the purpose of electronic transmission of voice, fax, or data, between distant parties. The history of telephony is i ...
support to
VoiceXML VoiceXML (VXML) is a digital document standard for specifying interactive media and voice dialogs between humans and computers. It is used for developing audio and voice response applications, such as banking systems and automated customer service ...
). It could also be used as a multimodal control language in the Multimodal Interaction Activity. One of the goals of this language is to make sure that the language is compatible with CCXML and that there is an easy path for existing CCXML scripts to be converted to SCXML without major changes to the programming model or document structure (for example, by using an XSL Transformation). The current version of the specification was released by the W3C in September 2015.


Applications

According to the W3C SCXML specification, SCXML is a general-purpose event-based state machine language that can be used in many ways, including: *As a high-level dialog language controlling VoiceXML 3.0's encapsulated speech modules (voice form, voice picklist, etc.) *As a voice application metalanguage, where in addition to VoiceXML 3.0 functionality, it may also control database access and business logic modules. *As a multimodal control language in the MultiModal Interaction framework, combining VoiceXML 3.0 dialogs with dialogs in other modalities including keyboard and mouse, ink, vision, haptics, etc. It may also control combined modalities such as lipreading (combined speech recognition and vision) speech input with keyboard as fallback, and multiple keyboards for multi-user editing. *As the state machine framework for a future version of CCXML. *As an extended call center management language, combining CCXML call control functionality with computer-telephony integration for call centers that integrate telephone calls with computer screen pops, as well as other types of message exchange such as chats, instant messaging, etc. *As a general process control language in other contexts not involving speech processing. The draft W3C
VoiceXML VoiceXML (VXML) is a digital document standard for specifying interactive media and voice dialogs between humans and computers. It is used for developing audio and voice response applications, such as banking systems and automated customer service ...
3.0 specification includes State Chart and SCXML Representation to define functionality.


Multimodal applications

Multimodal application designs can use different modalities (for example, voice vs. touchscreen vs. keyboard and mouse) for different parts of a communication best suited to it. For example, voice input can be used to avoid having to type on the small screen of a mobile phone, but the screen may be a faster way of communicating a list or map, compared to listening to long descriptions of available options. SCXML makes it easy to do several things in parallel, and the Interaction Manager SCXML application will maintain the synchronization between Voice and Visual dialogues. The W3C document Authoring Applications for the Multimodal ArchitectureAuthoring Applications for the Multimodal Architecture
/ref> describes a multimodal system that implements the W3C Multimodal Architecture and gives an example of a simple multimodal application authored using various W3C markup languages, including SCXML, CCXML, VoiceXML 2.1 and HTML.


Implementations


scxmlcc
An efficient scxml to C++ compiler.
Apache Commons SCXML
a pure Java library to parse and execute SCXML diagrams
SCXMLgui
Java Visual Editor for SCXML.
SCION
SCXML implemented in portable JavaScript.
JSSCxml
a Web browser implementation. Highly conformant, with good support for DOM Events. Only supports the ECMAScript datamodel.
uSCXML
C/C++ interpreter and transformer/compiler with language bindings for Java and C#. Full ECMAScript support via JavaScriptCore or Google's v8, additional LUA and Prolog datamodels, only rudimentary support for XPath datamodel. PROMELA datamodel for formal verification with the SPIN model-checker.
LXSC
Lua XML StateChart interpreter - parses and executes SCXML state machines with a Lua data model.
Qt SCXML Engine
implemented in C++ as well and tightly integrated with their
Signals and Slots Signals and slots is a language construct introduced in Qt for communication between objects which makes it easy to implement the observer pattern while avoiding boilerplate code. The concept is that GUI widgets can send signals containing event ...
concept, with a visual editor integrated in
Qt Creator Qt Creator is a cross-platform C++, JavaScript and QML integrated development environment (IDE) which simplifies GUI application development. It is part of the SDK for the Qt GUI application development framework and uses the Qt API, which e ...
.
XState
implemented in TypeScript.


Inactive implementations

The following implementations are inactive, i.e., the last change to their source code was made more than two years ago:
Web interface to an experimental SCXML implementation in the Oz programming languageLegian
An SCXML engine implemented in Java using Rhino as a Javascript engine. It also supports some additional features such as custom tag libraries and includes. It is not fully W3C compliant.
PySCXML
a Python-implementation. Supports a wide range of technologies, including websockets and SOAP. Highly standards-compliant. Also supports the ECMAScript datamodel. (last push 2013)
The PySCXML Console
a web-based interactive SCXML console for running and interacting with SCXML documents. Supports the ECMAScript datamodel.
SCXML4Flex
ActionScript/Flex partial port o
PySCXML


See also

*
VoiceXML VoiceXML (VXML) is a digital document standard for specifying interactive media and voice dialogs between humans and computers. It is used for developing audio and voice response applications, such as banking systems and automated customer service ...
*
CCXML Call Control eXtensible Markup Language (CCXML) is an XML standard designed to provide asynchronous event-based telephony support to VoiceXML. Its current status is a W3C recommendation, adopted May 10, 2011. Whereas VoiceXML is designed to provid ...


References


External links


W3C SCXML specification 1.0
{{DEFAULTSORT:Scxml World Wide Web Consortium standards XML-based standards