<?xml version="1.0" encoding="UTF-8"?>
<!--
 * 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.
-->

<document>

 <properties>
  <title>Commons SCXML Usecases</title>
  <author email="dev@commons.apache.org">Commons Documentation Team</author>
 </properties>

 <body>

 <section name="Commons SCXML Usecases">

  <p>
   <i>Q: Whats a library without usecases?</i><br/>
   <i>A:</i>
  </p>

  <subsection name="Introduction">
   <p>
   There are numerous use cases for an engine like Commons SCXML. Any process
   that can be represented as a UML state chart, for example, business process 
   flows, view navigation bits, interaction or dialog management etc. (this is,
   by no means, a comprehensive list), can leverage the Commons SCXML engine
   library. We illustrate just a few sample usecases as illustrations.
   </p>
  </subsection>

  <subsection name="Samples">
   <p>Simple usecases, and beyond:</p>
   <subsection name="Simple">
    <p>These are "standalone" usecases, which do not require any knowledge
       beyond beginner Java and beginner XML.
       <ul>
        <li><a href="usecases/scxml-stopwatch.html">Usecase 1</a> -
        Using Commons SCXML to model and implement behavior of stateful
        objects (SCXML stopwatch example).</li>
       </ul>
    </p>
   </subsection>
   <subsection name="Advanced">
    <p>These are usecases within frameworks available in the open source
       community, and are labeled advanced since they require some additional
       knowledge about the framework relevant to the particular usecase.
       <ul>
        <li><a href="usecases/scxml-in-rdc-group.html">Usecase 2</a> - Use in
        <a href="http://jakarta.apache.org/taglibs/doc/rdc-doc/intro.html">
        Reusable Dialog Components (RDC) Framework</a> &lt;group&gt;
        container.</li>
        <li><a href="usecases/scxml-in-shale-dialogs.html">Usecase 3</a> -
        Use in <a href="http://shale.apache.org/">Shale</a> dialogs</li>
       </ul>
    </p>
   </subsection>
   <p>If you know of another usecase we should list or if you are interesting
   in seeing if SCXML fits a usecase you have in mind, contact us via the
   <a href="mail-lists.html">mailing lists</a>.
   </p>
  </subsection>

 </section>

 </body>

</document>
