Comments (5)
Just wondering what was the rational for dropping transition types?
Transition types were added to the spec some time after I started SCION in 2010. I think they can be a useful feature, but actually aren't required to have a consistent semantics.
from scion.
I've reviewed the spec, and I think the main problem with SCION's semantics is that it uses an LCA (least common ancestor) as transition scope, as opposed to an LCCA (least common compound ancestor). I think that in most graphical syntaxes, making the transition scope the LCA rather than the LCCA is safe, because the syntax restricts you from creating transitions that explicitly originate from or target orthogonal components; therefore the semantics doesn't need to be as precise (use LCCA instead of LCA).
The implication of making the transition scope the LCCA is that, in cases like test0.scxml, where there is a transition whose source state is an orthogonal component (child of ), is that the parent and all of its orthogonal descendants will also be exited. I think this may be surprising and less intuitive, but may lead to a more regular semantics, and so is an overall better solution than attempting to create a special case in the semantics that prevents the ortho component from being exited. Plus, it appears to be more in line with the semantics described in the spec.
It also means that 'internal' transitions originating from orthogonal components will be more useful, as this will provide a means to create transitions originating from an orthogonal component that targets its descendants, without leaving the parallel parent and all other orthogonal siblings.
SCION doesn't support 'internal' transitions yet, but I think I'm going to add this feature soon.
If you have any ideas about this, I'd enjoy hearing about it.
from scion.
Note that the tests in more-parallel/ were designed specifically to explore these issues.
from scion.
Also, this is off-topic, but we should have a conversation about finding an optimal way to collaborate between scalejs.statechart and SCION.
from scion.
I added support for transition/@type="internal"
in the previous commit as well.
from scion.
Related Issues (20)
- The target id parser is a URL parser, not a URI parser HOT 3
- TypeError: chunk.charAt is not a function HOT 9
- validate the fnModel argument in SCION constructor and throw an error if it is invalid
- should reject an scxml document containing data without @id
- should reject an scxml document containing assign without @location
- should reject an scxml document containing foreach without @item
- should reject an scxml document containing foreach without @array
- should accept an scxml document containing foreach with object literal @array
- should validate param tags at parse time
- reject scxml documents with raise and no @event at parse time
- validate send *expr attributes at parse time
- Add namespace to custom action tag names
- Multiple state identifiers in initial attribute not supported HOT 2
- [README.MD] Demo links do not work
- Documentation and examples HOT 2
- improve documentation for compiling scxml HOT 10
- improve documentation concerning interface to statemachine HOT 20
- accessing application context from scxml HOT 1
- Starting state machine within running state machine HOT 17
- empty <datamodel> block throws "Unexpected token" SyntaxError HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from scion.