A JavaScript State Chart interpreter that fully implements the W3C's upcoming SCXML recommendation
JavaScript HTML CSS Shell
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
w3c_tests
.gitignore
LICENSE.txt
README.md
SCxml.js
SCxml.ugly.js
SCxmlConnect.js
SCxmlDatamodel.js
SCxmlDebug.js
SCxmlEvent.js
SCxmlExecute.js
SCxmlFetch.js
SCxmlInvoke.js
SCxmlMutation.js
SCxmlProcessors.js
SCxmlSpeak.js
SCxmlView.css
api.html
connect.html
delays.js
dom.html
event-stream.html
fetch.html
speak.html
structures.js
test.html
uglify.sh
uitest.scxml
viewer.html
xhr.js

README.md

JSSCxml

A JavaScript State Chart interpreter that fully implements the W3C's upcoming SCXML recommendation in Web browsers.

The name should be pronounced "JessieXML" or just "Jessie".

It is distributed under a MIT license.

Official website: jsscxml.org

Main Features:

Development status

Latest version: 0.9.1

See the version history and goals.

You can't <send> or receive remote events (of any type) with I/O Processors, but you can already use the included custom <fetch> and <invoke type="event-stream"> elements to get similar results in a client-server fashion.

As mentionned above, you can't <send> SCXML events over HTTP. But you can listen to remote events after invoking a connection with event-stream type.

Known issues

(that I'm not going to fix right now)

  • Variables whose name matched a predefined window variable are pre-declared in the datamodel. You should not delete them if you don't understand what it means and how the datamodel is implemented in JSSC.

  • The JavaScript expression in the location attribute of an <assign> element is currently being evaluated twice while executing the <assign>. That could cause a bug if it has side-effects. You should perform any such actions in a <script>, and use read-only expressions in location attributes. Or you can just write the whole assignment in a <script>, of course.

  • In ECMAScript content, the keyword "this" references a hidden window by default. You should only use it in constructors and object methods, never in a default context, unless you really know what you're doing.