JSSCxml

Welcome to the new JSSCxml home page! JSSCxml (you can call it "JSSC", pronounced "Jessie") is a JavaScript State Chart interpreter that fully implements the W3C's upcoming SCXML recommendation in Web browsers.

It is distributed under a MIT license and the source is hosted at GitHub.

The thesis

I have written my Master's thesis about JSSC. Read it here (HTML, requires a recent WebKit browser) or download as a PDF (no interactive features).

Getting started

Download the one-file package (please do not just copy that link) and include it in your HTML document (preferably in the head):

<head>
…
<script src="SCxml.ugly.js"></script>

Wherever you like, insert scxml tags with their src attribute pointing to the SCXML file you want to run, and, near the end of your HTML document's body, add a little script to parse that:

<scxml src="test.scxml"></scxml>

…
<script> SCxml.parseSCXMLTags() </script>
</body>
</html>

The SCXML debugger

The SCXML viewer shows you your State Chart in action, rendered as HTML and SVG, with slow-motion and pause/resume. It uses JSSCxml internally, but JSSC is highly conformant so you can look at basically any standard SCXML document.

Development status

Warning: some APIs used by JSSC are currently only implemented in WebKit browsers. Other standards-compliant browsers should catch up soon.

See for yourself how many W3C tests it already passes.

The debugger still has a long way to go, but it is already very helpful. Use it!

Platform-Specific documentation

You will need to read these in addition to the SCXML recommendation.

the JavaScript API
tells you how to embed SCXML sessions in your Web page and how to interact with it through API calls and DOM events.
the <fetch> specification
will detail a new executable content element that lets SCXML send HTTP requests and access the response.
the Web Speech API integration spec
describes JSSCxml extensions dealing with speech synthesis and (not yet) recognition.
the connection-like invoke extension
proposes an extension to invocation semantics to let the SCXML session open connections to send/receive events.
the event-stream specification
explains JSSC's built-in event-stream <invoke> connection type