StateMachine Gem
Graphs
Generating graphs
- You can generate di-graphs based on the events, states, and transitions defined for a state machine using GraphViz
- This requires that both the
ruby-graphviz
gem and graphviz library be installed on the system - For examples of actual images generated, see those under the examples folder
Usage
To generate a graph for a specific file / class:
rake state_machine:draw FILE=vehicle.rb CLASS=Vehicle
To save files to a specific path:
rake state_machine:draw FILE=vehicle.rb CLASS=Vehicle TARGET=files
To customize the image format / orientation:
rake state_machine:draw FILE=vehicle.rb CLASS=Vehicle FORMAT=jpg ORIENTATION=landscape
See http://rdoc.info/github/glejeune/Ruby-Graphviz/Constants for the list of supported image formats. If resolution is an issue, svg may offer better results.
To generate multiple state machine graphs:
rake state_machine:draw FILE=vehicle.rb,car.rb CLASS=Vehicle,Car
To use human state / event names:
rake state_machine:draw FILE=vehicle.rb CLASS=Vehicle HUMAN_NAMES=true
Note that this will generate a different file for every state machine defined in the class.
The generated files will use an output filename of the format #{class_name}_#{machine_name}.#{format}
.
Interactive graphs
Jean Bovet's Visual Automata Simulator is a great tool for "simulating, visualizing and transforming finite state automata and Turing Machines". It can help in the creation of states and events for your models. It is cross-platform, written in Java.