[ https://issues.apache.org/jira/browse/SCXML-200?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ate Douma reopened SCXML-200: ----------------------------- While working on SCXML-196 I'm discovering more model optimizations, like that the ancestors of a TransitionTarget only can be of type EnterableState. So I'm reopening this issue to commit this improvement, and will keep it open for a while as I expect even more model improvements may become clear shortly. > Normalize and complete the SCXML object model and parsing > --------------------------------------------------------- > > Key: SCXML-200 > URL: https://issues.apache.org/jira/browse/SCXML-200 > Project: Commons SCXML > Issue Type: Improvement > Affects Versions: 2.0 > Reporter: Ate Douma > Assignee: Ate Douma > Fix For: 2.0 > > > The current SCXML object model is still rather 'flat' and de-normalized, and > many of the current SCXML specification features as well as restrictions are > not fully mapped. > I'll restructure the current model to bring it more/mostly in line with the > specification and normalize the object hierarchy to cleaner separate and > restrict the features belonging to the right level and element. > The current state and transition model hierarchy is like this: > {code} > TransitionTarget > <- Initial > <- History > <- State > <- Final > <- Parallel > Executable > <- Transition > {code} > > After my restructuring it looks like this: > {code} > Initial > TransitionTarget > <- History > <- EnterableState -> DocumentOrder > <- TransitionalState > <- State > <- Parallel > <- Final > Executable > <- SimpleTransition > <- Transition -> DocumentOrder > {code} > > With the above restructuring, each of these model objects now cleanly > represents their functional role in the SCXML specification and only contains > the features and relations they are supposed to have. > I will also update the SCXML document parsing of the model and the validation > and post-processing, and introduce some handy optimizations like adding a > document order indicator to the EnterableState and Transition object which > makes sorting them in document or reverse-document order, as needed for > implementing the SCXML processing algorithm, very trivial and fast. And for > each TransitionTarget its ancestor tree will be derived once and cached as a > fast navigable array. > All these changes have a big impact on the *internal* API because not > everything is passed around as a TransitionTarget anymore but as strongly > typed as possible. But these changes makes it much clearer to understand and > use, and are an important improvement needed for implementing the full SCXML > specification. -- This message was sent by Atlassian JIRA (v6.2#6252)