ECharts: The Concise User Manual
Version 1.3 Beta

Gregory W. Bond

Copyright © 2006-2008 AT&T Labs, Inc.

All rights reserved. No part of the material protected by this copyright notice may be reproduced or utilized in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage and retrieval system, without the prior permission of the copyright holder.

Any reference to commercial products, individual suppliers or trade names is made with the full understanding that no endorsement by AT&T Labs, Inc. is given. Further, the use by AT&T Labs, Inc. of any supplier’s products should not imply or be construed as an endorsement of products and services by AT&T or its Affiliates

Text body typeset with LATEX. Cover composed with Inkscape.

The latest version of this document is available from


1 Introduction
 1.1 History
 1.2 Why Use ECharts?
2 Developing an ECharts Machine
 2.1 Hello World!
3 What Can ECharts Do?
 3.1 Hierarchical Machines
 3.2 Actions
 3.3 State Machines
 3.4 Transitions
 3.5 Receiving a Message
 3.6 Non-Blocking Execution
 3.7 ‘*’ Transitions
 3.8 Sending a Message
 3.9 External Ports
 3.10 Pseudostates
 3.11 Machine Arrays
 3.12 Timed Transitions
 3.13 Submachine Access
 3.14 Internal Ports
 3.15 Incomplete State References
 3.16 Host Language Interface
 3.17 Machine Serialization
4 The Runtime Model
 4.1 Machine Execution
 4.2 Transition Evaluation
 4.3 Transition Scheduling
 4.4 Port Priorities
 4.5 Transition Priorities
 4.6 Message Dequeuing
 4.7 Machine Lifecycle
 4.8 Shared Data
 4.9 Machine and State Access Modifiers
5 The Machine Runtime
 5.1 Initialization
 5.2 Properties File
 5.3 Startup Messages
 5.4 Transition Timer Manager
 5.5 Monitoring and Logging
 5.6 Debugging
 5.7 Options Summary
6 Generating Diagrams
 6.1 Page Diagrams
 6.2 Embedded Diagrams
 6.3 Customizing the Layout
 6.4 dot Layout Bugs
7 Generating Documentation
 7.1 Interacting with Diagrams
 7.2 ech2doc
 7.3 ech2javadoc
 7.4 SVG Viewers
8 Command Reference
 8.1 Machine Dependencies
 8.3 ech2java
 8.4 ech2dot
 8.5 ech2doc
 8.6 ech2javadoc
 8.7 javadocpp
9 Roadmap
 9.1 Exception Handling
 9.2 Machine Inheritance
 9.3 Machine Variables
A Building and Using ECharts
 A.1 Software Requirements
 A.2 Building ECharts
 A.3 Using ECharts
B Licenses
 B.1 Common Public License v1.0
 B.2 ANTLR 2 License