http://www.perlmonks.org?node_id=413336


in reply to Are state machines just for parsing?

This is actually what the Workflow module does. (I think someone else mentioned it too.) You can create:

All of these are simple Perl classes, and because there's a 'context' moving data into and out of the workflow it doesn't care where it's run, and neither do your classes.

I gave a presentation on it a couple months ago to the Pittsburgh Perlmongers that might be helpful, and it comes with working examples, decent docs, some tests, etc.

Chris
M-x auto-bs-mode

  • Comment on Re: Are state machines just for parsing?

Replies are listed 'Best First'.
Re^2: Are state machines just for parsing?
by samtregar (Abbot) on Dec 08, 2004 at 22:03 UTC
    That's a cool presentation. And the module looks great... except, why do I have to program Perl inside an XML file? This makes my skin crawl:

    <workflow> <type>myworkflow</type> <state name="INITIAL"> <action name="upload file" resulting_state="uploaded" /> </state> <state name="uploaded" autorun="yes"> <action name="verify file" resulting_state="annotate"> <!-- everyone other than 'CWINTERS' must verify --> <condition test="$context->{user} ne 'CWINTERS'" /> </action> ...

    I'd be much happier with:

    my $workflow = Workflow::Generator->new(type => "myworkflow"); $state = $workflow->add_state(name => "INITIAL"); $state->add_action(name => "upload file", resulting_state => "uploa +ded"); $state = $workflow->add_state(name => "uploaded", autorun => "yes") +; $state->add_action(name => "verify_file", resulting_state => "annot +ate"); $condition = $state->add_condition(test => \&check_file);

    It's more conscise and all the power of Perl is available for making repetitive structures from common data. If I ever decided to use Workflow I think Workflow::Generator would be my first project.

    -sam

      Well, the "perl in XML" part is entirely optional and is actually a recent addition. But I like the idea of creating it programmatically and it should be pretty easy, actually. I might swipe this for later -- with credit, of course...

      Chris
      M-x auto-bs-mode