Excellent. Perfect. Gary, I love you—I mean, in a friendly, professional sort of way.
Gary, either by good fortune (because he had a question for me) or because he faithfully reads everything I write (well, I can hope) dropped the answer I was looking for.
I wanted a way to graphically define a finite state machine, and save it as a simple XML file that I could manipulate into something else. In particular, I’m working on a web-based tutorial system this summer, and having the ability to sketch a tutorial (as well as all the possible paths one might want to follow if particular kinds of errors occur) seems like a very nice idea. The tutorial developer would then define the pages associated with each node, as well as the conditions on the edges; I would weave the diagram, content, and conditions into a tutorial on the server.
Or something like that.
The missing link was the drawing tool; Mark Rich correctly pointed me to Dot, but I wanted an interactive GUI for laying out the state machine, not something I could use to specify the visual representation. Given the use pattern I described above, you can see why I’d want a GUI tool; the user is already responsible for a reasonably complex document independent of the layout.
JFLAP does exactly what I need. Although it is designed as a tool for teaching students about finite state machines, grammars, Turing machines, and other nifty stuff, it will work perfectly for sketching simple state machines, and saving them out to a simple, clear XML format.
Excellent. I love it when the readership of a weblog comes together.