SCXML: Difference between revisions

Content deleted Content added
Remove possible copyright violation. http://commons.apache.org/proper/commons-scxml/usecases/scxml-stopwatch.html says: Copyright © 2005-2015 The Apache Software Foundation. All Rights Reserved.
m compound modifier
 
(9 intermediate revisions by 8 users not shown)
Line 1:
{{Short description|XML-based markup language}}
{{Use mdy dates|date=June 2013}}
{{Infobox file format
Line 20 ⟶ 21:
| url = [http://www.w3.org/TR/scxml/ http://www.w3.org/TR/scxml/]
}}
 
'''SCXML''' stands for State Chart XML: State Machine Notation for Control Abstraction. It is an [[XML]]-based [[markup language]] that provides a generic [[state-machine]]-based execution environment based on [[Harel statechart]]s.
 
SCXML is able to describe complex [[finite -state machine]]s. For example, it is possible to describe notations such as sub-states, parallel states, synchronization, or concurrency, in SCXML.
 
==Goals==
Line 36 ⟶ 38:
| accessdate=2016-03-02}}</ref>
 
==ExamplesApplications==
 
According to the W3C SCXML specification,<ref>[http://www.w3.org/TR/scxml/ State Chart XML (SCXML): State Machine Notation for Control Abstraction specification]</ref> SCXML is a general-purpose event-based state machine language that can be used in many ways, including:
Line 42 ⟶ 44:
*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.
Line 49 ⟶ 51:
The draft W3C [[VoiceXML]] 3.0 specification<ref>[http://www.w3.org/TR/voicexml30/ Voice Extensible Markup Language (VoiceXML) 3.0 specification]</ref> includes State Chart and SCXML Representation to define functionality.
 
===Multimodal applications===
----
 
TrulyMultimodal multimodalapplication applicationsdesigns shouldcan allowuse thedifferent usermodalities to(for communicateexample, throughvoice thevs. interfacetouchscreen mostvs. keyboard and suitablemouse) for thedifferent contextparts of thea interaction.communication Considerbest ansuited applicationto thatit. hasFor example, voice asinput wellcan asbe theused mobileto phonesavoid displayhaving andto keyboardtype ason interfaces.the Thesmall userscreen willof favora themobile mostphone, effectivebut interfacethe andscreen canmay makebe a voicefaster requestway toof avoid excessive typing and then “click” oncommunicating a list or map, oncompared the display instead ofto 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.
 
[[File:Multimodal2.png|A multimodal configuration]]
 
The W3C document Authoring Applications for the Multimodal Architecture<ref>[http://www.w3.org/TR/mmi-auth/ Authoring 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==
*[http://scxmlcc.org scxmlcc] An efficient scxml to C++ compiler.
*[http://jakarta.apache.org/commons/scxml/ Apache Commons SCXML], a pure Java library to parse and execute SCXML diagrams
*[https://github.com/fmorbini/scxmlgui SCXMLgui] Java Visual Editor for SCXML.
*[https://scion.scxml.io SCION] SCXML implemented in portable JavaScript.
*[https://github.com/Touffy/JSSCxml JSSCxml] a Web browser implementation under active development. Highly conformant, with good support for DOM Events. Only supports the ECMAScript datamodel.
*[https://github.com/tklab-tud/uscxml 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.
*[https://github.com/Phrogz/LXSC LXSC] Lua XML StateChart interpreter - parses and executes SCXML state machines with a Lua data model.
*[http://code.qt.io/cgit/qt/qtscxml.git Qt SCXML Engine] implemented in C++ as well and tightly integrated with their [[Signals and slots|Signals and Slots]] concept, with a visual editor integrated in [[Qt Creator]].
*[https://xstate.js.org XState] implemented in TypeScript.
 
== Inactive implementations ==
Line 73 ⟶ 77:
*[http://pyscxml.spyderbrain.com The PySCXML Console] a web-based interactive SCXML console for running and interacting with SCXML documents. Supports the ECMAScript datamodel.
*[https://code.google.com/archive/p/scxml4flex/ SCXML4Flex] ActionScript/Flex partial port of [https://github.com/jroxendal/PySCXML PySCXML].
*[https://github.com/fmorbini/scxmlgui SCXMLgui] Java Visual Editor for SCXML.
 
==See also==