Skip to main content

IBM Modeling and Integration Tools for State Chart XML

Plug-ins for Rational Software Architect and Mozilla that generate and execute event-based application controllers expressed in SCXML and that are based on UML 2.0 state charts.

Date Posted: March 8, 2007

alphaworks tab navigation

1. How can I find out more about the State Chart XML (SCXML) language and UML (Unified Modeling Language) 2.0 State Charts?

SCXML is an XML representation of a subset of UML 2.0 State Charts, which are described in the UML Specification Version 2.0. SCXML is currently a Working Draft published by the World Wide Web Consortium (W3C). In addition, those extensions to UML 2.0 State Charts made by SCXML are described in the W3C Working Draft.

2. To which version of the W3C SCXML Working Draft should I refer?

Please refer to the July 2005 Working Draft.

3. How is this alphaWorks release related to the SCXML work in the Apache Software Foundation?

The Jakarta Commons project in the Apache Software Foundation includes Commons SCXML: an implementation aimed at creating and maintaining a Java™ SCXML engine capable of executing a state machine defined using an SCXML document, while abstracting and extracting the environment interfaces. What we have provided in this alphaWorks technology is a Mozilla plug-in that bridges the environment-independent interfaces of the Apache interpreter and the specific environment of the Mozilla and Firefox browsers. A second plug-in for Rational® Software Architect transforms UML State Chart and Activity Diagrams into SCXML mark-up able to be interpreted by the Apache engine. Note that users must separately download the Apache engine from the Jakarta Commons Web site.

4. What are IBM's® goals in pursuing this technology?

Our first goal in supporting the development of SCXML has been to encourage a common approach to modeling and run-time execution of both visual and voice Web applications. SCXML is emerging from the Voice Browser Working Group at the W3C as a controller for VoiceXML and Call Control XML languages. The charter goal of the SCXML effort is to define a generic XML notation for State Chart-based controllers, hence one suitable for non-voice applications as well. We believe that making use of existing and standards-based design tools, such as UML and SCXML, will help move toward common design methods for Web applications that operate in a variety of interaction channels.

A second goal still under exploration is, in addition to unifying design methods for end-user interaction over multiple channels, to work toward common event-based controllers end-to-end -- that is, for both user interaction and business state machines.

5. What type of applications are suitable for SCXML?

SCXML is a generic state-machine XML notation and, as such, is suitable for a wide variety of uses. Both client-side and server-side examples have been built, including support both for user interaction and business state machines. The Apache SCXML interpreter is independent of any specific container or platform environment, as is the Rational Software Architect plug-in provided in this alphaWorks technology. The Mozilla browser extension is intended to support coordination among multiple, interacting, event-based Web components -- for example, in Web 2.0 client-side "mash-ups."

6. In the Rational Software Architect plug-in, I am getting an Invalid Source... error message. What is wrong?

Click near the title bar to make sure you select the entire diagram rather than an individual state or region.

7. In the Rational Software Architect plug-in, how are activities transformed inside my state machine?

If you include an activity diagram inside the onentry/onexit actions in a state machine, you will see additional files prefixed by "activity" generated by the UML-to-SCXML transformer. However, in a state machine, the executable content cannot contain a state machine (it will not be interpreted properly by this SCXML plug-in). Therefore, although the activity transformation is done, it is not linked to the main state machine that contains it.

8. In the Rational Software Architect plug-in, how do I create a Time event?

Currently, Time events are not supported in the UML-to-SCXML transformer. Timeouts must be added manually to the generated SCXML file after transformation is complete.

9. In the Rational Software Architect plug-in, how does the transformer know the proper syntax for the cond attribute?

The transformer doesn't. It will simply read what you put in the guard property of the transition. You must manually edit the file and insert the appropriate conditions based on the expression language supported.

10. In the Mozilla plug-in, where do I put the nsscxml.jar file?

Security considerations often require the nsscxml.jar file to be on the same domain as the host serving the (X)HTML document containing the SCXML mark-up. The document-relative URL for the folder containing the nsscxml.jar file can be specified by the nsscxml:classpath attribute, as illustrated in the examples.

11. In the Mozilla plug-in, how do I fire events on the state machine defined by the SCXML mark-up?

XML events are used to fire events on the SCXML root element. See the examples directory for samples.

12. In the Mozilla plug-in, what extension or mime type should be used?

Mozilla or Firefox will recognize the SCXML name space only if the host document is an XHTML document (with an .xhtml extension). The mime type (if document is hosted on the server) is application/xhtml+xml.

13. In the Mozilla plug-in, what expression language(s) are supported?

The extension supports Commons JEXL, the default expression language used by the Commons SCXML implementation. In addition, authors can evaluate XPath expressions using the following:

  • xpath.evaluateNumber(String expression)
  • xpath.evaluateString(String expression)
  • xpath.evaluateBoolean(String expression)

Trademarks