diff options
author | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2012-09-08 23:26:39 (GMT) |
---|---|---|
committer | Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de> | 2012-09-08 23:26:39 (GMT) |
commit | aa6c3a1257a29cc5bcf8b94893732ee553f27582 (patch) | |
tree | 625adb1a353a17ffed2c7e0bac686d705aaec93f /test/samples/apache/microwave-04.xml | |
download | uscxml-aa6c3a1257a29cc5bcf8b94893732ee553f27582.zip uscxml-aa6c3a1257a29cc5bcf8b94893732ee553f27582.tar.gz uscxml-aa6c3a1257a29cc5bcf8b94893732ee553f27582.tar.bz2 |
Initial upload
Still somewhat quirky to build but fairly feature complete
Diffstat (limited to 'test/samples/apache/microwave-04.xml')
-rw-r--r-- | test/samples/apache/microwave-04.xml | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/test/samples/apache/microwave-04.xml b/test/samples/apache/microwave-04.xml new file mode 100644 index 0000000..96656dd --- /dev/null +++ b/test/samples/apache/microwave-04.xml @@ -0,0 +1,90 @@ +<?xml version="1.0"?> +<!-- + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +--> +<!-- + This document uses Commons JEXL as the expressions language. + Needs SCXMLParser. +--> +<scxml xmlns="http://www.w3.org/2005/07/scxml" + xmlns:cs="http://commons.apache.org/scxml" + version="1.0" + initialstate="microwave"> + + <!-- trivial microwave oven example --> + <!-- using parallel and In() predicate --> + + <parallel id="microwave"> + + <state id="oven"> + <initial> + <transition target="off"/> + </initial> + + <state id="off"> + <!-- off state --> + <transition event="turn_on" target="on"/> + </state> + + <state id="on"> + <initial> + <transition target="idle"/> + </initial> + + <!-- on/pause state --> + <onentry> + <!-- we assume the cook_time is passed in as a context parameter --> + <if cond="empty(cook_time)"> + <!-- default setting, note namespace of this custom action --> + <cs:var name="cook_time" expr="5"/> + </if> + <!-- timer variable --> + <cs:var name="timer" expr="0"/> + </onentry> + + <transition event="turn_off" target="off"/> + + <transition cond="timer ge cook_time" target="off"/> + + <state id="idle"> + <transition cond="In('closed')" target="cooking"/> + </state> + + <state id="cooking"> + <transition cond="not In('closed')" target="idle"/> + + <transition event="time" target="cooking"> + <assign name="timer" expr="timer + 1"/> + </transition> + </state> + </state> + </state> + + <state id="door"> + <initial> + <transition target="closed"/> + </initial> + <state id="closed"> + <transition event="door_open" target="open"/> + </state> + <state id="open"> + <transition event="door_close" target="closed"/> + </state> + </state> + + </parallel> + +</scxml> |