<!--
   Copyright 2005 The Apache Software Foundation

   Licensed 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.
-->
<html>
<head>
<title>Status File for Jakarta Commons "SCXML" Component</title>
</head>
<body bgcolor="white">


<div align="center">
<h1>The Jakarta Commons <em>SCXML</em> Component</h1>
$Id$<br />
<a href="#Introduction">[Introduction]</a>
<a href="#Dependencies">[Dependencies]</a>
<a href="#Release Info">[Release Info]</a>
<a href="#Committers">[Committers]</a>
<a href="#Action Items">[Action Items]</a>
<br /><br />
</div>


<a name="Introduction"></a>
<h3>1.  INTRODUCTION</h3>

<p>The World Wide Web Consortium (W3C) Voice Browser Working Group 
recently announced the publication of the first 
<a href="http://www.w3.org/TR/2005/WD-scxml-20050705/">Working Draft of 
State Chart XML</a> (SCXML). SCXML provides a generic state-machine 
based execution environment based on CCXML and Harel State Tables. 
<em>Commons SCXML</em> is a reference implementation SCXML engine.
</p>


<a name="Dependencies"></a>
<h3>2.  DEPENDENCIES</h3>

<p>The <em>SCXML</em> component is dependent upon the following external
components for development and use:</p>
<ul>
<li>Apache Jakarta 
<a href="http://jakarta.apache.org/commons/digester/">Commons 
Digester</a></li>
<li>Apache Jakarta 
<a href="http://jakarta.apache.org/commons/logging/">Commons 
Logging</a></li>
<li><a href="http://java.sun.com/j2se">Java Development Kit</a> 
(Version 1.4 or later)</li>
</ul>

<p>JUnit is used as the testing framework</p>
<ul>
<li><a href="http://www.junit.org">JUnit Testing Framework</a>
(Version 3.7 or later) - for unit tests only, not required
for deployment</li>
</ul>

<p>Expression evaluation in SCXML documents is environment specific, 
the expression evaluator and context of evaluation is envisioned to be 
&quot;pluggable&quot;. The existing code provides an example for the 
servlet/JSP environment which needs: </p>
<ul>
<li>Apache Jakarta 
<a href="http://jakarta.apache.org/commons/el/">Commons EL</a></li>
<li><a href="http://java.sun.com/products/servlet/">Servlet 2.4</a></li>
<li><a href="http://java.sun.com/products/jsp/">JSP 2.0</a></li>
</ul>
</p>

<a name="Release Info"></a>
<h3>3.  RELEASE INFO</h3>

<p>Current Release: SCXML is yet to be released.</p>

<p>Planned Next Release:  See the
<a href="#Action Items">Action Items</a> list for tasks that need to be
completed prior to this release.</p>


<a name="Committers"></a>
<h3>4.  COMMITTERS</h3>

<p>The following individuals are the primary developers and maintainers of this
component.  Developers who plan to use <em>SCXML</em> in their own
projects are encouraged to collaborate on the future development of this
component to ensure that it continues to meet a variety of needs.</p>
<ul>
  <li><a href="mailto:rahul AT apache.org">Rahul Akolkar</a></li>
  <li><a href="mailto:martinc AT apache.org">Martin Cooper</a></li>
  <li>Fancy volunteering?  We need you!</li>
</ul>


<a name="Action Items"></a>
<h3>5.  ACTION ITEMS</h3>

<p>The SCXML engine implementation is under development. The major items that are 
yet unimplemented are (Section numbers from Working Draft above):</p>

<ul> 
<li>Multiple (simultaneous) targets for a single transition (Section 3.3.1) </li>
<li>JOIN (Section 4.3) </li>
<li>SYNCH (Section 4.4) </li>
</ul>

</body>
</html>
