finger563 / webgme-hfsm Goto Github PK
View Code? Open in Web Editor NEWMetamodel, visualization, simulation, and code generation for Hierarchical Finite State Machines (HFSMs) following the UML State Machine spec.
License: MIT License
Metamodel, visualization, simulation, and code generation for Hierarchical Finite State Machines (HFSMs) following the UML State Machine spec.
License: MIT License
Right now they are from such a high resolution screen that most of the GIF is static / whitespace and the text is hard to read
Right now it redoes the layout every time a new state is added. Some way of locking the layout so this does not occur would be very useful.
Would have the semantics that the timer / task for the HFSM would be cancelled. Since that would provide support for cancelling the dynamic task/timer, we should add support for how to trigger the task/timer without necessarily needing to write it all in code.
Start transitioning META and infrastructure to support better conformance with UML state spec:
Changes:
Additions:
So that transitions are checked leaf -> root instead of root -> leaf
Should allow transitions between any arbitrary state objects regardless of level.
Needs to support at minimum:
Should style the node that will be the parent to show whether the drop is allowed or not.
Currently we only support External transitions (due to the rendering limitations of cytoscape.js, see cytoscape/cytoscape.js#1897 )
Once that issue is resolved, update the meta and generators to support local transitions.
Immediately return for all events the model knows the state and its parent tree does not handle.
Need to update meta and decorators / visualizers to support editing and display of these orthogonal regions.
would be helpful for organizing things like internal transitions.
So that the previous substate can be saved and resumed later.
Cases where the edge is along the hierarchy tree, e.g. parent to child and vice-versa
Will be solved when cytoscape/cytoscape.js-cose-bilkent#48 is solved.
Need panel which shows the available guard conditions, events, and such to allow users to configure them. Then provide buttons to set the conditions / events and tick.
Acts as a folder of states or of other folders of states. Enables specifying state-machines that can be instanced for reusability.
transitions occur because of events, with optional guards on the events (as in real HFSMs). States can also have functions that occur when events are triggered while they're in the state, and can themselves emit events.
That way their internal transitions will be shown as well, so that you can know what events will be handled by a given state and how those events will bubble up.
How possible is this? Ideally we would have a few plugins:
These plugins would interact through a well-defined interface to produce the combination of language + build system source code when desired by the user.
Probably should be a pop-up or some other qTip-like dialog so that it doesn't clutter up the UI (and mess with compound node layout / visualization).
Initially, just add object selection when clicking on an internal transition displayed in the HFSMViz, so that the webGME property editor can be used to edit the event / guard
If possible, we should do this; might be hard because right now we're relying on this kind of pathway:
Would need to store the drop information (position, type?) so that when we get an addNode
event we can try to figure out where it goes
Needs to support context menus as well.
Currently unnecessarily fast
Can generate test bench code for the state machine to include c++ addon for nodejs related libraries and expose an interface to query the active state, events, and spawn new events and such.
Choice -> (deep/shallow) history pseudostate
Choice -> End state
Choice -> Choice pseudostate (not currently allowed to create such transitions)
Need some refactoring of the simulator code to handle these edge cases.
Develop the entire hfsm hierarchy as a roadmap before implementing well-formed
sub-hfsms.
Use the Selected State
window in the hfsmViz to determine what states have been fully developed. Untouched states will display red for entry/exit. If a field is intentionally blank, add a space.
Define states from the top down and transitions from the bottom up.
With no transitions defined into a state, it is impossible to reach that state, meaning it can be developed/compiled without affecting the behavior of the working portion of the hsfm.
terminate event: finds active state and call all exits
restart: terminate and then reinitialize
So it's not so jarring a transition.
This would make viewing in the modelEditor viz show what the user sees in the HFSMviz and would allow the user to arrange their state machine how they like and save it that way.
internally: will update the position registry for the webgme node according to the position relative to the parent in the viz.
Should properly handle:
Would make having to rename all instances of some event much easier
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.