statig icon indicating copy to clipboard operation
statig copied to clipboard

Diagram representation of the state machine

Open GyulyVGC opened this issue 1 year ago • 4 comments

Hey, thanks for the cool library!

It'd be nice to add the possibility of creating a .dot file (or similar) for a defined state machine.

This would enable deriving a graphical representation of the states and all the possible transitions via tools like Graphviz.

GyulyVGC avatar Jun 19 '24 15:06 GyulyVGC

I've noticed there already is a similar issue open (#11), although I think that producing a .dot file is simpler than an ASCII representation.

GyulyVGC avatar Jun 19 '24 15:06 GyulyVGC

Hi, thanks for trying out statig!

Having some sort of visualisation of state machines has been on my todo list for some time now. The major issue I don't really have a solution for is how to deduce the transitions between states. That logic is fully defined within the state handler so it can't be reliably understood by a macro. I've been considering the option to allow users to manually add the possible transitions with some sort of attribute, but then you could run into situations where code and documentation are out of sync, so it's not ideal. 😕

mdeloof avatar Jun 20 '24 17:06 mdeloof

Another option is to let your UML diagram be the source of truth and codegen the statig state machine. That creates its own set of challenges... one is that it's challenging to add payloads to your events.

andrew-otiv avatar Oct 23 '24 07:10 andrew-otiv

Btw., there is something similar in https://github.com/eugene-babichenko/rust-fsm . It uses the mermaid but PlantUml would also be great. Or even better to has the format as an option.

defigli avatar Oct 29 '24 17:10 defigli