blob: ff2646e26eb14ef6becdca0175d5f25f327d5f02 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright 2005-2006 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.
-->
<document>
<properties>
<title>Commons SCXML Usage - API notes - Engine</title>
<author email="commons-dev@jakarta.apache.org">Commons Documentation Team</author>
</properties>
<body>
<section name="Commons SCXML - Creating and configuring the SCXML engine">
<p>The Commons SCXML executor is the engine that runs the state machine.
Commons SCXML also allows listeners to be added to the
<code>SCXMLExecutor</code>, which are informed about the progress of
the state machine via <code>onEntry</code> and <code>onExit</code>
notifications for <code>TransitionTarget</code>s, as well as
<code>onTransition</code> notificatins when transitions are followed.</p>
<subsection name="Usage">
<p>The <code>SCXMLExecutor</code> is usually initialized as follows:</p>
<pre>
//import org.apache.commons.scxml.Context;
//import org.apache.commons.scxml.ErrorReporter;
//import org.apache.commons.scxml.Evaluator;
//import org.apache.commons.scxml.EventDispatcher;
//import org.apache.commons.scxml.SCXMLExecutor;
//import org.apache.commons.scxml.SCXMLListener;
//import org.apache.commons.scxml.model.SCXML;
//import org.apache.commons.scxml.model.ModelException;
SCXMLExecutor exec = null;
try {
exec = new SCXMLExecutor(&lt;Evaluator&gt;,
&lt;EventDispatcher&gt;, &lt;ErrorReporter&gt;);
exec.setStateMachine(&lt;SCXML&gt;);
exec.addListener(&lt;SCXML&gt;, &lt;SCXMLListener&gt;);
exec.setRootContext(&lt;Context&gt;);
exec.setSuperStep(true);
exec.go();
} catch (ModelException me) {
// Executor initialization failed, because the
// state machine specified has inconsistencies
}
</pre>
<p>Commons SCXML provides basic implementations of the
<code>EventDispatcher</code>, <code>ErrorReporter</code>, and
<code>SCXMLListener</code> interfaces, which simply log
all the events received. Commons SCXML uses Commons Logging.</p>
<p>The SCXML specification allows implementations to support multiple
expression languages so SCXML documents can be used in varying
environments. The <code>Context</code> and <code>Evaluator</code>
interfaces serve as adapters to the particular expression language
APIs. Commons SCXML currently supports JEXL and JSP 2.0 EL
expressions.</p>
<p>The <code>SCXMLExecutor</code> Javadoc is available
<a href="../apidocs/org/apache/commons/scxml/SCXMLExecutor.html">
here</a>.
</p>
</subsection>
<subsection name="API notes set">
<p>The previous note in this set describes the
<a href="core-digester.html">SCXML digester</a>.<br/>
The next note in this set describes
<a href="core-events.html">triggering events</a>.</p>
</subsection>
</section>
</body>
</document>