summaryrefslogtreecommitdiffstats
path: root/test/uscxml/test-postpone-element.scxml
diff options
context:
space:
mode:
Diffstat (limited to 'test/uscxml/test-postpone-element.scxml')
-rw-r--r--test/uscxml/test-postpone-element.scxml41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/uscxml/test-postpone-element.scxml b/test/uscxml/test-postpone-element.scxml
new file mode 100644
index 0000000..185f367
--- /dev/null
+++ b/test/uscxml/test-postpone-element.scxml
@@ -0,0 +1,41 @@
+<scxml datamodel="ecmascript" name="postpone">
+ <script src="http://uscxml.tk.informatik.tu-darmstadt.de/scripts/dump.js" />
+ <script>
+ var blocked = true;
+ </script>
+ <state id="idle">
+
+ <!-- request will be postponed until someone unblocks -->
+ <transition event="http" target="idle" cond="_event.data.pathComponent[1] == 'block'">
+ <if cond="blocked">
+ <log expr="'Postponing'" />
+ <postpone until="blocked == false;" />
+ <else>
+ <response status="200" requestexpr="_event.origin">
+ <content expr="blocked" />
+ </response>
+ </else>
+ </if>
+ </transition>
+
+ <!-- unblock - this triggers all postponed events -->
+ <transition event="http" target="idle" cond="_event.data.pathComponent[1] == 'unblock'">
+ <log expr="'Unblocking'" />
+ <script>blocked = false;</script>
+ <response status="200" requestexpr="_event.origin">
+ <content expr="blocked" />
+ </response>
+ </transition>
+
+ <!-- default -->
+ <transition event="http" target="idle" cond="
+ _event.data.pathComponent[1] != 'unblock' &amp;&amp;
+ _event.data.pathComponent[1] != 'block'
+ ">
+ <script>dump(_event);</script>
+ <response status="200" requestexpr="_event.origin" />
+ </transition>
+
+ </state>
+ <state id="final" final="true" />
+</scxml> \ No newline at end of file