When it comes to implementing non-interactive processes, using state machines has been one of my go-to designs for the simple reason that it’s very good at preventing flow/action spaghetti and, therefore, makes for a maintainable codebase.
What’s even more awesome about it is that becuase the decision table (flow) is located in a built-in data structure, it’s very easy to graphically represent it using Graphviz! Here’s a sample of what that might look like:
I’ve used state machines succesfully from automating spot instance bidding in AWS, to automating my tennis court and campsite reservations. As I was working on Ansible modules, I kept thinking about whether state machines would also be a good fit.
Well, rather than keep wondering about it, I decided a few weeks back to prototype it instead. Here’s the pull request that details it all. Looking forward to some feedback there!