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.