Proposal for Commons SCXML
[I] Rationale:
The World Wide Web Consortium (W3C) Voice Browser Working Group recently announced the publication of the first Working Draft of State Chart XML (SCXML) [1]. SCXML provides a generic state-machine based execution environment based on CCXML and Harel State Tables. SCXML is a candidate for the control language within multiple markup languages coming out of the W3C (see Working Draft for details). There are potential use cases for SCXML within Apache projects. The availability of an SCXML engine as a Jakarta Commons library will be of much benefit.
No such library exists in Jakarta Commons (or anywhere else, AFAIK, under ASF license).
[II] Scope:
The package shall create and maintain an SCXML engine, capable of executing a state machine defined using a SCXML document, while abstracting out the environment interfaces. The codebase will be in Java, distributed under the ASF license.
[III] Dependencies:
The SCXML codebase has the following dependencies:
a) Commons Digester
b) Commons Logging
Expression evaluation in SCXML documents is environment specific, the expression evaluator and context of evaluation is envisioned to be "pluggable", and the project possibly producing a commons-scxml-core.jar and adapters for various environments. The existing code provides an example for the servlet/JSP environment using:
c) Commons EL
The minimum JDK version shall be 1.4
[IV] Code Provenance:
The authors of this original work are Jaroslav Gergic and Rahul Akolkar, and the code was contributed to Jakarta Taglibs, as part of the RDC Taglib [2]. The code is already distributed under the Apache license, in the RDC nightlies.
Source is available for viewing [3]
Javadoc is available as part of the RDC Javadoc [4]
[V] Naming, Resources and Conventions:
The base name for the proposed package will be:
org.apache.commons.scxml
The project will use the Jakarta Commons user and dev mailing lists, will create a component repository named "scxml" (lower case) in SVN under commons-sandbox and will be listed as "SCXML" (upper case) in the component list under the Jakarta-Commons Bugzilla entry. Sun Java conventions shall be used for coding style.
[VI] Committer Interest:
The following Apache committers have expressed interest in the creation of this Commons Sandbox component [5]:
A ) Martin Cooper
B ) Rahul Akolkar
The RDC Taglib will have a dependency on Commons SCXML, so we have at least one immediate user project within Apache. The RDC Taglib is one of the active tag libraries in Jakarta Taglibs, with a 1.0 release cut couple of weeks ago [6]. The SCXML code is under development [7], and was not part of the 1.0 release.
-Rahul Akolkar
Reference Links:
[2] Reusable Dialog Components (RDC) Taglib
[3] SCXML codebase, direct (now obsolete)
[4] SCXML Javadoc (now obsolete)
[5] The thread on taglibs-dev that initiated this proposal
[6] RDC Taglib 1.0 release news item
[7] Status of SCXML codebase (from RDC Taglib revision history), see revision posting on 07/29/05