The new version (v0.0.3) of the State Machine Generator (smgen) is now available. This version provided a schema for the XML, and uses Castor (http://www.castor.org) for XML to Java mapping. This also used Castor's code generation capability to generate definitioin classes from the schema.
The advantage of using Castor is it provides a common set of definition classes with seamless marshalling and unmarshalling capabilities. The graphical state machine design tool, in the works, will use this to go back and forth between XML and java.
a working version of smgen for XML specification of
the SM and gnerating the code for SM defn is
released.
Sometimes you find the need to send events to a SM through a port that is not connected to another port in a SM. The event source could be external or self generated (as in case of single Sm models). The StandalonePort feature is now added to support this.
With this port in a SM, it can send event to self, or an external source can.
The disadvantage in this design is that anyone can send an event (albeit only those listed in the "in" events), so the SM should be designed to handle this.
See version v0.0.12
Please se feature request 862934 and comment. I am in the processing of thinking a solution.
I need help getting the framework right for hierarchical SMs. i have some code up. I refined this version (yet to release). but i do not have example to test this yet.
All help and advice on this appreciated.
The framework strives to meet the OMG defined standard defintion for state machine. But i do see that the std UML is more complex for practical use.
Please refer to UML std at http://www.omg.org/technology/documents/formal/uml.htm
Look for Behavioral Patterns (State Machines)
Comments welcome.
How about provide 5 priorities (Higest,High,Normal,Low,Lowest). The priority is
across all SMs in same thread.
I was thinking on introducing 2 levels of msg priorities:
1) at the port level.
2) at EventDefinition level
An application when creating a PorRef on a StateMachineDef can chose to have the port at
any of the 5 levels. By default TimerPort is Higest.
Then when defining a Service, different EventDefinition can be at any of the 5 levels. So all created events from this defintion will have same priority as the definition.... read more
Thsi fix enables creating multiple SM instances from a
given definition. Handles the Ports logic better.
This has many bug fixes, support for Time events,
exit and entry actions, and boundary transitions.
Logging is also improved and more useful.
I consider this a very stable, usable version.
Has more bullet proofing and added Log capability for debugging. This also
has better documentation.