Conformance

The interpreter is tested against the W3C SCXML 1.0 Implementation Report Plan test suite, converted to the ECMAScript data model. The converted suite is vendored in conformance/ (W3C licence in conformance/LICENSE-W3C), so running it needs no network. A test passes when its session reaches the top-level <final id="pass">. Time is virtual, so delayed events fire instantly and the whole suite runs in well under a second per data model.

Reproduce: mise run conformance (sandboxed), mise run conformance:trusted (trusted), mise run docs:conformance (this page). bun test runs the suite too, in both data models.

Summary#

Sandboxed (QuickJS) Trusted (host engine)
Mandatory tests 160/160 160/160
Optional tests 21/33 21/33
Manual tests see below see below

Every test that doesn't pass is optional and needs the Basic HTTP Event I/O Processor, which isn't included: 201, 509, 510, 518, 519, 520, 522, 531, 532, 534, 567, 577. See deviations.

Manual tests#

9 tests are marked manual: a person reads the output and decides. The verdicts, with the evidence for each, are in conformance/MANUAL.md: 8 pass, and 513 is not applicable (it needs the Basic HTTP processor). The mechanically checkable ones are also pinned in conformance/conformance.test.ts.

Deviations#

Where the interpreter deliberately differs from the specification, or leaves something out, is listed in deviations.md, each item pinned by a test.

All automatic tests#

Sorted by specification section. Descriptions are the W3C's, shortened.

Test Section Sandboxed Trusted What it checks
355 3.2 M pass pass At system initialization time, if the 'initial' attribute is not present, the Processor MUST enter the first state in document order.
576 3.2 M pass pass At system initialization time, the SCXML Processor MUST enter the states specified by the 'initial' attribute, if it is present.
364 3.3 M pass pass Definition: The default initial state(s) of a compound state are those specified by the 'initial' attribute or initial element, if either is present.…
372 3.7 M pass pass When the state machine enters the final child of a state element, the SCXML processor MUST generate the event done.state.id after completion of the o…
570 3.7 M pass pass Immediately after generating done.state.id upon entering a final child of state, if the parent state is a child of a parallel element, and all of the…
375 3.8 M pass pass The SCXML processor MUST execute the onentry handlers of a state in document order when the state is entered.
376 3.8 M pass pass The SCXML processor MUST treat each [onentry] handler as a separate block of executable content.
377 3.9 M pass pass The SCXML processor MUST execute the onexit handlers of a state in document order when the state is exited.
378 3.9 M pass pass The SCXML processor MUST treat each [onexit] handler as a separate block of executable content.
387 3.10 M pass pass Before the parent state has been visited for the first time, if a transition is executed that takes the history state as its target, the SCXML proces…
388 3.10 M pass pass After the parent state has been visited for the first time, if a transition is executed that takes the history state as its target, the SCXML process…
579 3.10 M pass pass Before the parent state has been visited for the first time, if a transition is executed that takes the history state as its target, the SCXML proces…
580 3.10 M pass pass It follows from the semantics of history states that they never end up in the state configuration
396 3.12 M pass pass The SCXML processor MUST use this same name value [the one reflected in the event variable] to match against the 'event' attribute of transitions.
399 3.12 M pass pass [Definition: A transition matches an event if at least one of its event descriptors matches the event's name. ] [Definition: An event descriptor matc…
401 3.12 M pass pass The processor MUST place these [error] events in the internal event queue.
402 3.12 M pass pass The processor MUST process them [error events] like any other event.
403a 3.13 M pass pass To execute a microstep, the SCXML Processor MUST execute the transitions in the corresponding optimal enabled transition set, where the optimal trans…
403b 3.13 M pass pass To execute a microstep, the SCXML Processor MUST execute the transitions in the corresponding optimal enabled transition set, where the optimal trans…
403c 3.13 M pass pass To execute a microstep, the SCXML Processor MUST execute the transitions in the corresponding optimal enabled transition set, where the optimal trans…
404 3.13 M pass pass To execute a set of transitions, the SCXML Processor MUST first exit all the states in the transitions' exit set in exit order.
405 3.13 M pass pass [the SCXML Processor executing a set of transitions] MUST then [after the onexits] execute the executable content contained in the transitions in doc…
406 3.13 M pass pass [the SCXML Processor executing a set of transitions] MUST then [after the exits and the transitions] enter the states in the transitions' entry set i…
407 3.13 M pass pass To exit a state, the SCXML Processor MUST execute the executable content in the state's onexit handler.
409 3.13 M pass pass Finally [after the onexits and canceling the invocations], the Processor MUST remove the state from the active state's list.
411 3.13 M pass pass To enter a state, the SCXML Processor MUST add the state to the active state's list. Then it MUST execute the executable content in the state's onent…
412 3.13 M pass pass If the state is a default entry state and has an initial child, the SCXML Processor MUST then [after doing the active state add and the onentry handl…
413 3.13 M pass pass At startup, the SCXML Processor MUST place the state machine in the configuration specified by the 'initial' attribute of the scxml element.
416 3.13 M pass pass If it [the SCXML processor] has entered a final state that is a child of a compound state [during the last microstep], it MUST generate the event don…
417 3.13 M pass pass If the compound state [which has the final element that we entered this microstep] is itself the child of a parallel element, and all the parallel el…
419 3.13 M pass pass After checking the state configuration, the Processor MUST select the optimal transition set enabled by NULL in the current configuration. If the [op…
421 3.13 M pass pass If the set (of eventless transitions) is empty, the Processor MUST remove events from the internal event queue until the queue is empty or it finds a…
422 3.13 M pass pass After completing a macrostep, the SCXML Processor MUST execute in document order the invoke handlers in all states that have been entered (and not ex…
423 3.13 M pass pass Then [after invoking the new invoke handlers since the last macrostep] the Processor MUST remove events from the external event queue, waiting till e…
503 3.13 M pass pass If the transition does not contain a 'target', its exit set is empty.
504 3.13 M pass pass if [a transition's] 'type' is "external", its exit set consists of all active states that are proper descendents of the Least Common Compound Ancesto…
505 3.13 M pass pass Otherwise, if the transition has 'type' "internal", its source state is a compound state and all its target states are proper descendents of its sour…
506 3.13 M pass pass If a transition has 'type' of "internal", but its source state is not a compound state or its target states are not all proper descendents of its sou…
533 3.13 M pass pass If a transition has 'type' of "internal", but its source state is not a compound state, its exit set is defined as if it had 'type' of "external".
144 4.2 M pass pass The SCXML processor MUST place the event that is generated by the raise element at the rear of the session's internal event queue.
147 4.3 M pass pass When the if element is executed, the SCXML processor MUST execute the first partition in document order that is defined by a tag whose 'cond' attribu…
148 4.3 M pass pass When the if element is executed, if no 'cond'attribute evaluates to true, the SCXML Processor must execute the partition defined by the else tag, if…
149 4.3 M pass pass When it executes an if element, if no 'cond' attribute evaluates to true and there is no else element, the SCXML processor must not evaluate any exec…
150 4.6 M pass pass In the foreach element, the SCXML processor MUST declare a new variable if the one specified by 'item' is not already defined.
151 4.6 M pass pass In the foreach element, if 'index' is present, the SCXML processor MUST declare a new variable if the one specified by 'index' is not already defined.
152 4.6 M pass pass In the foreach element, if 'array' does not evaluate to a legal iterable collection, or if 'item' does not specify a legal variable name, the SCXML p…
153 4.6 M pass pass When evaluating foreach, the SCXML processor MUST start with the first item in the collection and proceed to the last item in the iteration order tha…
155 4.6 M pass pass when evaluating foreach, for each item, after making the assignment, the SCXML processor MUST evaluate its child executable content. It MUST then pro…
156 4.6 M pass pass If the evaluation of any child element of foreach causes an error, the processor MUST cease execution of the foreach element and the block that conta…
525 4.6 M pass pass The SCXML processor MUST act as if it has made a shallow copy of the collection produced by the evaluation of 'array'. Specifically, modifications to…
158 4.9 M pass pass The SCXML processor MUST execute the elements of a block of executable contentin document order.
159 4.9 M pass pass If the processing of an element of executable content causes an error to be raised, the processor MUST NOT process the remaining elements of the bloc…
276 5.3 M pass pass The SCXML Processor MUST allow the environment to provide values for top-level data elements at instantiation time. (Top-level data elements are thos…
277 5.3 M pass pass If the value specified for a data element (by 'src', children, or the environment) is not a legal data value, the SCXML Processor MUST raise place er…
279 5.3 M pass pass When 'binding' attribute on the scxml element is assigned the value "early" (the default), the SCXML Processor MUST create all data elements and assi…
280 5.3 M pass pass When 'binding' attribute on the scxml element is assigned the value "late", the SCXML Processor MUST create the data elements at document initializat…
550 5.3 M pass pass If the 'expr' attribute is present, the Platform MUST evaluate the corresponding expression at the time specified by the 'binding' attribute of scxml…
551 5.3 M pass pass f child content is specified, the Platform MUST assign it as the value of the data element at the time specified by the 'binding' attribute of scxml.
552 5.3 M pass pass If the 'src' attribute is present, the Platform MUST fetch the specified object at the time specified by the 'binding' attribute of scxml and MUST as…
286 5.4 M pass pass If the location expression of an assign does not denote a valid location in the datamodel the processor MUST place the error error.execution in the i…
287 5.4 M pass pass If the location expression of an assign denotes a valid location in the datamodel and if the value specified by 'expr' is a legal value for the locat…
487 5.4 M pass pass If the value specified (by 'expr' or children) is not a legal value for the location specified, the processor MUST place the error error.execution in…
294 5.5 M pass pass In cases where the SCXML Processor generates a 'done' event upon entry into the final state, it MUST evaluate the donedata elements param or content…
527 5.6 M pass pass When the SCXML Processor evaluates the content element, if the 'expr' value expression is present, the Processor MUST evaluate it and use the result…
528 5.6 M pass pass f the evaluation of 'expr' produces an error, the Processor MUST place error.execution in the internal event queue and use the empty string as the ou…
529 5.6 M pass pass If the 'expr' attribute is not present, the Processor MUST use the children of content as the output.
298 5.7 M pass pass If the 'location' attribute on a param element does not refer to a valid location in the data model, the processor MUST place the error error.executi…
343 5.7 M pass pass If the 'location' attribute on a param element does not refer to a valid location in the data model, or if the evaluation of the 'expr' produces an e…
488 5.7 M pass pass if the evaluation of the 'expr' produces an error, the processor MUST place the error error.execution on the internal event queue.
302 5.8 M pass pass The SCXML Processor MUST evaluate any script element that is a child of scxml at document load time. N.B. This test is valid only for datamodels that…
303 5.8 M pass pass The SCXML Processor MUST evaluate all script elements not children of scxml as part of normal executable content evaluation. N.B. This test is valid…
304 5.8 M pass pass In a conformant SCXML document, the name of any script variable MAY be used as a location expression. N.B. This test is valid only for datamodels tha…
309 5.9 M pass pass If a conditional expression cannot be evaluated as a boolean value ('true' or 'false') or if its evaluation causes an error, the SCXML processor MUST…
310 5.9 M pass pass All datamodels MUST support the 'In()' predicate, which takes a stateID as its argument and returns true if the state machine is in that state.
311 5.9 M pass pass If a location expression cannot be evaluated to yield a valid location, the SCXML processor MUST place the error error.execution in the internal even…
312 5.9 M pass pass If a value expression does not return a legal data value, the SCXML processor MUST place the error error.execution in the internal event queue.
344 5.9 M pass pass If a conditional expression cannot be evaluated as a boolean value ('true' or 'false') or if its evaluation causes an error, the SCXML processor MUST…
318 5.10 M pass pass The SCXML Processor MUST bind the _event variable when an event is pulled off the internal or external event queue to be processed, and MUST keep the…
319 5.10 M pass pass The SCXML Processor MUST NOT bind _event at initialization time until the first event is processed.
321 5.10 M pass pass The Processor MUST bind the variable _sessionid at load time to the system-generated id for the current SCXML session.
322 5.10 M pass pass The Processor MUST keep the _sessionid variable bound to the system-generated id until the session terminates.
323 5.10 M pass pass The Processor MUST bind the variable _name at load time to the value of the 'name' attribute of the scxml element. a
324 5.10 M pass pass The Processor MUST keep the _name variable bound to the value of the 'name' attribute of the scxml element until the session terminates.
325 5.10 M pass pass The Processor MUST bind the variable _ioprocessors to a set of values, one for each Event I/O Processor that it supports.
326 5.10 M pass pass The Processor MUST keep the _ioprocessors variable bound to its set of values until the session terminates.
329 5.10 M pass pass The Processor MUST cause any attempt to change the value of a system variable to fail.
330 5.10 M pass pass The SCXML Processor MUST insure that the following fields (name, type, sendid, origin, origintype, invokeid, data) are present in all events (_event…
331 5.10 M pass pass The SCXML Processor MUST set the type property of _event to: "platform" (for events raised by the platform itself, such as error events), "internal"…
332 5.10 M pass pass If the sending entity has specified a value for this, the Processor MUST set this field to that value. Otherwise, in the case of error events trigger…
333 5.10 M pass pass For events other than error events triggered by a failed attempt to send an event, if the sending entity did not specify a value for the sendid field…
335 5.10 M pass pass If an event was not received from an external entity, the Processor MUST leave the origin field blank.
336 5.10 M pass pass For external events, the SCXML Processor SHOULD set the origintype field to a value which, in combination with the 'origin' field, will allow the rec…
337 5.10 M pass pass For internal and platform events, the Processor MUST leave the origintype field blank.
338 5.10 M pass pass If an event is generated from an invoked child process, the Processor MUST set the invokeid field to the invoke id of the invocation that triggered t…
339 5.10 M pass pass If an event is not generated from an invoked child process, the Processor MUST leave the invokeid field blank.
342 5.10 M pass pass The SCXML Processor MUST set the name field (of the _event variable) to the name of the event.
346 5.10 M pass pass The Processor MUST place the error error.execution on the internal event queue when any attempt to change the value of a system variable is made.
172 6.2 M pass pass If 'eventexpr' is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been ente…
173 6.2 M pass pass If 'targetexpr' is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been ent…
174 6.2 M pass pass If 'typexpr' is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been entere…
175 6.2 M pass pass If 'delayexpr' is present, the SCXML Processor MUST evaluate it when the parent send element is evaluated and treat the result as if it had been ente…
176 6.2 M pass pass The SCXML Processor MUST evaluate param when the parent send element is evaluated and pass the resulting data unmodified to the external service when…
179 6.2 M pass pass The SCXML Processor MUST evaluate the content element when the parent send element is evaluated and pass the resulting data unmodified to the externa…
183 6.2 M pass pass If 'idlocation' is present, the SCXML Processor MUST generate an id when the parent send element is evaluated and store it in this location
185 6.2 M pass pass If a delay is specified via 'delay' or 'delayexpr', the SCXML Processor MUST interpret the character string as a time interval. the SCXML Processor M…
186 6.2 M pass pass The Processor MUST evaluate all arguments to send when the send element is evaluated, and not when the message is actually dispatched.
187 6.2 M pass pass If the SCXML session terminates before the delay interval has elapsed, the SCXML Processor MUST discard the message without attempting to deliver it.
194 6.2 M pass pass If the value of the 'target' or 'targetexpr' attribute is not supported or invalid, the Processor MUST place the error error.execution on the interna…
198 6.2 M pass pass If neither the 'type' nor the 'typeexpr' is defined, the SCXML Processor MUST assume the default value of http://www.w3.org/TR/scxml/#SCXMLEventProce…
199 6.2 M pass pass f the SCXML Processor does not support the type that is specified, it MUST place the event error.execution on the internal event queue.
200 6.2 M pass pass SCXML Processors MUST support the type http://www.w3.org/TR/scxml/#SCXMLEventProcessor
201 6.2 O fail fail Processors that support HTTP POST must use the value http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor for the "type" attribute
205 6.2 M pass pass The sending SCXML Interpreter MUST not alter the content of the send and include it in the message that it sends to the destination specified in the…
521 6.2 M pass pass f the Processor cannot dispatch the event, it MUST place the error error.communication on the internal event queue of the session that attempted to s…
553 6.2 M pass pass If the evaluation of send's arguments produces an error, If the evaluation of send's arguments produces an error, the Processor MUST discard the mess…
207 6.3 M pass pass The SCXML Processor MUST NOT allow cancel to affect events that were not raised in the same session.
208 6.3 M pass pass The Processor SHOULD make its best attempt to cancel all delayed events with the specified id.
210 6.3 M pass pass If the 'sendidexpr' attribute is present, the SCXML Processor MUST evaluate it when the parent cancel element is evaluated and treat the result as if…
215 6.4 M pass pass If the typeexpr attribute is present, the SCXML Processor MUST evaluate it when the parent invoke element is evaluated and treat the result as if it…
216 6.4 M pass pass If the srcexpr attribute is present, the SCXML Processor MUST evaluate it when the parent invoke element is evaluated and treat the result as if it h…
220 6.4 M pass pass Platforms MUST support http://www.w3.org/TR/scxml/, as a value for the 'type' attribute
223 6.4 M pass pass If the 'idlocation' attribute is present, the SCXML Processor MUST generate an id automatically when the invoke element is evaluated and store it in…
224 6.4 M pass pass When the platform generates an identifier for 'idlocation', the identifier MUST have the form stateid.platformid, where stateid is the id of the stat…
225 6.4 M pass pass n the automatically generated invoke identifier, platformid MUST be unique within the current session
226 6.4 M pass pass When the invoke element is executed, the SCXML Processor MUST start a new logical instance of the external service specified in 'type' or 'typexpr',…
228 6.4 M pass pass the Processor MUST keep track of the unique invokeid and insure that it is included in all events that the invoked service returns to the invoking se…
229 6.4 M pass pass When the 'autoforward' attribute is set to true, the SCXML Processor MUST send an exact copy of every external event it receives to the invoked proce…
232 6.4 M pass pass he invoked external service MAY return multiple events while it is processing
233 6.4 M pass pass If there is a finalize handler in the instance of invoke that created the service that generated the event, the SCXML Processor MUST execute the code…
234 6.4 M pass pass t MUST NOT execute the finalize handler in any other instance of invoke besides the one in the instance of invoke that created the service that gener…
235 6.4 M pass pass Once the invoked external service has finished processing it MUST return a special event 'done.invoke.id' to the external event queue of the invoking…
236 6.4 M pass pass The external service MUST NOT generate any other events after the invoke.done.invokeid event.
237 6.4 M pass pass If the invoking session takes a transition out of the state containing the invoke before it receives the 'done.invoke.id' event, the SCXML Processor…
239 6.4 M pass pass Invoked services of type http://www.w3.org/TR/scxml/, http://www.w3.org/TR/ccxml/, http://www.w3.org/TR/voicexml30/, or http://www.w3.org/TR/voicexml…
240 6.4 M pass pass Invoked services of type http://www.w3.org/TR/scxml/, http://www.w3.org/TR/ccxml/, http://www.w3.org/TR/voicexml30/, or http://www.w3.org/TR/voicexml…
241 6.4 M pass pass Invoked services MUST treat values specified by param and namelist identically.
242 6.4 M pass pass Invoked services MUST also treat values specified by 'src' and content identically.
243 6.4 M pass pass If the invoked process is of type http://www.w3.org/TR/scxml/ and 'name' of a param element in the invoke matches the 'id' of a data element in the t…
244 6.4 M pass pass If the invoked process is of type http://www.w3.org/TR/scxml/ and the key of namelist item in the invoke matches the 'id' of a data element in the to…
245 6.4 M pass pass If the invoked process is of type http://www.w3.org/TR/scxml/, and the name of a param element or the key of of a namelis item do not match the name…
247 6.4 M pass pass If the invoked state machine is of type http://www.w3.org/TR/scxml/ and it reaches a top-level final state, the Processor MUST place the event done.i…
252 6.4 M pass pass Once it cancels an invoked session, the Processor MUST NOT insert any events it receives from the invoked session into the external event queue of th…
253 6.4 M pass pass When the invoked session is of type http://www.w3.org/TR/scxml/, The SCXML Processor MUST support the use of SCXML Event/IO processor (E.1 SCXML Even…
530 6.4 M pass pass The SCXML Processor MUST evaluate a child content element when the parent invoke element is evaluated and pass the resulting data to the invoked serv…
554 6.4 M pass pass if the evaluation of the invoke element's arguments arguments produces an error, the SCXML Processor MUST terminate the processing of the element wit…
436 B.1 M pass pass When the "datamodel" attribute of the scxml element has the value "null", the In() predicate must return 'true' if and only if that state is in the c…
278 B.2 O pass pass In the ECMAScript data model, the SCXML processor MUST allow any data element to be accessed from any state.
444 B.2 O pass pass In the ECMAScript datamodel, for each data element in the document, the SCXML Processor must create an ECMAScript variable object whose name is the v…
445 B.2 O pass pass In the ECMAScript datamodel for each data element in the document, if the variable object associated with the element is not assigned at the time ind…
446 B.2 O pass pass In the ECMAScript data model, if either the 'src' attribute or in-line content is provided in the data elemenet, then if the content (whether fetched…
448 B.2 O pass pass In the ECMAScript datamodel, the SCXML Processor must place all variables in a single global ECMAScript scope.
449 B.2 O pass pass In the ECMAScript datamodel, the SCXML Processor must convert ECMAScript expressions used in conditional expressions into their effective boolean val…
451 B.2 O pass pass In the ECMAScript datamodel, the SCXML Processor must add an ECMAScript function 'In()' to the SCXML namespace that takes a stateID as its argument a…
452 B.2 O pass pass In the ECMAScript datamodel, the SCXML Processor must accept any ECMAScript left-hand-side expression as a location expression.
453 B.2 O pass pass In the ECMAScript datamodel, the SCXML Processor must accept any ECMAScript expression as a value expression.
456 B.2 O pass pass the SCXML Processor must accept any ECMAScript program as defined in Section 14 of [ECMASCRIPT-262] as the content of a script element.
457 B.2 O pass pass In the ECMAScript data model, the legal iterable collections are arrays, namely objects that satisfy instanceof(Array) in ECMAScript. The legal value…
459 B.2 O pass pass In the ECMAScript data model, the iteration order for the foreach element is the order of the underlying ECMAScript array, and goes from an index of…
460 B.2 O pass pass In the ECMAScript data model, since shallow copy is required for the foreach element, foreach assignment is equivalent to item = array_name[index] in…
557 B.2 O pass pass In the ECMAScript data model, if either the 'src' attribute or in-line content is provided in the data element, then if the content (whether fetched…
558 B.2 O pass pass In the ECMAScript datamodel, if either the 'src' attribute or in-line content is provided in the data element, and the content (whether fetched or pr…
560 B.2 O pass pass In the ECMAScript data model, if the content provided to populate _event.data can be interpeted as key-value pairs, then for each unique key, the SCX…
561 B.2 O pass pass In the ECMAScript data model, if the content provided to populate _event.data can be interpreted as a valid XML document (and cannot be interpreted a…
562 B.2 O pass pass In the ECMAScript data model, if the content provided to populate _event.data is neither key-value pairs nor JSON nor a valid XML document, the Proce…
569 B.2 O pass pass For the _ioprocessors system variable in the ECMAScript datamodel the Processor MUST create an array with an object for each Event I/O processor that…
578 B.2 O pass pass In the ECMAScript data model, if the content provided to populate _event.data cannot be interpreted as key value pairs and can be interpeted as JSON…
189 C.1 M pass pass When using the scxml event i/o processor] If the target is the special term '#_internal', the Processor MUST add the event to the internal event queu…
190 C.1 M pass pass [When using the scxml event i/o processor] If the target is the special term '#_scxml_sessionid', where sessionid is the id of an SCXML session that…
191 C.1 M pass pass [When using the scxml event i/o processor] If the target is the special term '#_parent', the Processor MUST add the event to the external event queue…
192 C.1 M pass pass [When using the scxml event i/o processor] If the target is the special term '#_invokeid', where invokeid is the invokeid of an SCXML session that th…
193 C.1 O pass pass [When using the scxml event i/o processor] If neither the 'target' nor the 'targetexpr' attribute is specified, the SCXML Processor MUST add the even…
347 C.1 M pass pass SCXML Processors MUST support sending messages to and receiving messages from other SCXML sessions using the SCXML Event I/O Processor.
348 C.1 M pass pass name'. The sending SCXML Processor MUST take the value of this attribute from the 'event' attribute of the send element. The receiving SCXML Processo…
349 C.1 M pass pass source'. The sending SCXML Processor MUST populate this attribute with a URI that the receiving processor can use to reply to the sending processor.…
350 C.1 M pass pass target'. The sending SCXML Processor MUST take the value of this attribute from the 'target' attribute of the send element. The receiving SCXML Proce…
351 C.1 M pass pass sendid'. the sending SCXML Processor MUST populate this attribute with the identifier specified in the 'id' attribute or automatically generated by t…
352 C.1 M pass pass 'sourcetype'. The sending SCXML Processor MUST assign this attribute the value "scxml". (Note that other types of senders will assign different value…
354 C.1 M pass pass The 'data' field of the event raised in the receiving session MUST contain a copy of the data specified in the 'namelist' attribute or in param or co…
495 C.1 M pass pass If no errors occur, the receiving Processor MUST convert the message into an SCXML event, using the mapping defined above and insert it into the appr…
496 C.1 M pass pass If the sending SCXML session specifies a session that does not exist or is inaccessible, the SCXML Processor MUST place the error error.communication…
500 C.1 M pass pass SCXML Processors that support the BasicHTTP Event I/O Processor MUST maintain a 'scxml' entry in the _ioprocessors system variable. The Processor MUS…
501 C.1 M pass pass The 'location' field inside the entry for the SCXML Event I/O Processor in the _ioprocessors system variable MUST hold an address that external entit…
509 C.2 O fail fail An SCXML Processor that supports the Basic HTTP Event I/O Processor MUST accept messages at the access URI as HTTP POST requests
510 C.2 O fail fail The SCXML Processor MUST validate the message it receives [via the Basic HTTP Event I/O Processor] and then MUST build the appropriate SCXML event an…
518 C.2 O fail fail If the namelist attribute is defined [in send], the SCXML Processor MUST map its variable names and values to HTTP POST parameters
519 C.2 O fail fail If one or more param children are present [in send], the SCXML Processor MUST map their names (i.e. name attributes) and values to HTTP POST paramete…
520 C.2 O fail fail If a content child is present, the SCXML Processor MUST use its value as the body of the message.
522 C.2 O fail fail SCXML Processors that support the BasicHTTP Event I/O Processor MUST maintain a 'basichttp' entry in the _ioprocessors system variable. The Processor…
531 C.2 O fail fail If a single instance of the parameter '_scxmleventname' is present, the SCXML Processor MUST use its value as the name of the SCXML event that it rai…
532 C.2 O fail fail If _scxmleventname is not present, the Processor MUST the name of the HTTP method that was used to deliver the event as name of the SCXML event that…
534 C.2 O fail fail If the 'event' parameter of send is defined, the SCXML Processor MUST use its value as the value of the HTTP POST parameter _scxmleventname
567 C.2 O fail fail The processor MUST use any message content other than '_scxmleventname' to populate _event.data.
577 C.2 O fail fail If neither the 'target' nor the 'targetexpr' attribute is specified, the SCXML Processor MUST add the event error.communication to the internal event…

M = mandatory, O = optional.