diff options
Diffstat (limited to 'test/samples/apache/microwave-02.xml')
-rw-r--r-- | test/samples/apache/microwave-02.xml | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/test/samples/apache/microwave-02.xml b/test/samples/apache/microwave-02.xml new file mode 100644 index 0000000..c03fe05 --- /dev/null +++ b/test/samples/apache/microwave-02.xml @@ -0,0 +1,87 @@ +<?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 JSP 2.0 EL as the expressions language. +--> +<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 --> + <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> |