Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • That looks really neat, though it's hard to follow when you don't know the criteria that pushes you from one state to the next. Such as the root_user state... I just didn't follow what happened after that state and why.

    Maybe it was your example, though. Neat stuff, though!


    • by Ovid (2709) on 2004.12.18 13:19 (#36913) Homepage Journal

      Part of the issue with any state machine is that the criteria can be confusing to an outsider if they don't know the business rules. In this case, the state machine tracks some of the dependencies for setting up Bricolage [] on PostgreSQL. The "root user" state simply means "if we have the Postgres root user, we can install. If not, check to see if we have a normal user and, if so, check to see if they can do everything necessary for the install. When I was using a bunch of nested if/else statements, it was turning into a bear and becoming far too complicated. In the process of turning into a state machine, the path I was taking turned out to be too complicated and just having a graph allowed me to simplify the design quite a bit, though the original graph was done in OmniGraffle [].

      I might add that it's all based on Leon Brocard's [] excellent GraphViz [] module. I'll probably wind up giving access to most of the GraphViz settings to the state machine user.