Skip to content

Latest commit

 

History

History
28 lines (26 loc) · 1.68 KB

Conformance.adoc

File metadata and controls

28 lines (26 loc) · 1.68 KB

This library attempts to conform to the https://www.w3.org/TR/scxml standard and suggested implementation.

It diverges in the following places:

  • All machine element names have been hyphenated for easier reading (e.g. donedatadone-data)

    • Some element arguments support a clojure-like notation (e.g. autoforwardauto-forward?); However, for ease of translation from the SCXML spec these elements SHOULD still honor the non-modified name (i.e. autoforward).

  • The specification is vague about "Document Order". The default in this library is "depth first" document order (since that is element physical order in reading order), but you can choose "breadth first" when creating the machine to prefer a structural interpretation. This should only have a visible difference in parallel nodes that have nested structure deeper than one.

  • Some sub-element types are not defined as elements, and are instead encompassed by attributes of the (would-be) parent.

  • The specification requires certain XML-style things (such as supporting the explicit type "http://www.w3.org/TR/scxml/#SCXMLEventProcessor" for <send>). Things like URLs may be replaced by an equivalently-functional thing.

  • done-data element uses an expr attribute instead of children.

  • The specification says the _event should be placed in the data model at various execution points, but is a bit unclear if it should be contextual. This implementation:

    • Always places the :_event at the location path [:ROOT :_event], which is meant to tell the data model to store the event in the top-level context (on the root element, the machine).

    • The data model keeps this value until the next event is processed.