יובל קוג'מן (Yuval Kogman) > Class-Workflow > Class::Workflow::YAML

Download:
Class-Workflow-0.11.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Source   Latest Release: Class-Workflow-0.11_01

NAME ^

Class::Workflow::YAML - Load workflow definitions from YAML files.

SYNOPSIS ^

        my $y = Class::Workflow::YAML->new;

        my $w = $y->load_file("workflow.yml");

        # an exmaple workflow.yml for the bug flow
        # mentioned in Class::Workflow
        ---
        # data not under the key "workflow" is ignored.
        # In this example I use 'misc' to predeclare
        # an alias to some code I'll be using later.
        misc:
          set_owner_to_current_user: &setowner !perl/code: |
            {
              my ( $self, $instance, $c ) = @_;
              # set the owner to the user applying the
              # transition (see Class::Workflow::Context)
              return { owner => $c->user };
            }
        workflow:
          initial_state: new
          states:
            - name: new
              transitions:
                # you can store transition
                # information inline:
                - name    : reject
                  to_state: rejected
                # or symbolically, defining
                # in the transitions section
                - accept
            - name: open
              transitions:
                - name    : reassign
                  to_state: unassigned
                  # clear the "owner" field in the instance
                  set_fields:
                    owner: ~
                - name    : claim_fixed
                  to_state: awaiting_approval
            - name: awaiting_approval
              transitions:
                - name    : resolved
                  to_state: closed
                - name    : unresolved
                  to_state: open
            - name: unassigned
              transitions:
                - name    : take
                  to_state: open
                  # to dynamically set instance
                  # you do something like this:
                  body_sets_fields: 1
                  body            : *setowner
            # these two are end states
            - closed
            - rejected
          # we now need to define
          # the "accept" transition
          transitions:
            - name            : accept
              to_state        : open
              body_sets_fields: 1
              body            : *setowner

DESCRIPTION ^

This module lets you easily load workflow definitions from YAML files.

YAML is nice for this because its much more concise than XML, and allows clean embedding of perl code.

FIELDS ^

workflow_key

METHODS ^

load_file $filename
load_string $string

Load the YAML data, and call inflate_hash on an empty workflow.

inflate_hash $workflow, $hash

Define the workflow using the data inside $hash->{$self->workflow_key}.

empty_workflow

Calls Class::Workflow->new

localize_yaml_env

A wrapper method to locally set $YAML::Syck::UseCode to 1.

SEE ALSO ^

Class::Workflow, YAML

syntax highlighting: