I made big progress using state machines today. AND I learned a lot working through the examples reading SerialPorts and USB Ports. The state transition logic code for IO in the C++ Examples does not look so bad. But I detected another error in the examples.
it is insufficent to have just a part or the interaction messages encapsulated by interaction elements as shown in the C++ examples for ReadUSB() and ReadSerialPort(). When you place all into a Interaction element ALL - what is shown in the sequence diagrams - then it generates very nice code - which looks as it works.
I am currently checking the code by reviewing it; and will soon go and run it through a IDE, like NetBeans and or VS.
So - I am just claiming for the way to do it, to add EXIT HISTORY and ENTRY points, and how to link from one states-substate into another states-substate by placing the same state over a state shown in a diagram just to make it selectabel.
So This works only with a nasty trick as described. And only if you use this nasty trick then the stae table editor can be used to wire states-substate to anoter states-substate by a transition, be it conditinal or nor.
Like jumping from one subroutine in a module just into code belonging to a different modul and there middle into the subroutine.
EA Sparx (better say MySYS) is not there where I would say very well done,but they are on a good way.
Josef

CAUTION - AND if you generate code using activities and interactions etc. --- never do a reveser engineering from code or you have to clean up a lot in your model to get it readable again. I have found a lot of the code generated twice after doing so. C++; Things which clobbers the model. So you see two constructors absolut equa, two destructors, two from each methdo, etc. I think this is a BUG.
Will report later if I am more mature.