Class::Workflow::Instance - An instance in a workflow, with state and history.



NAME

Class::Workflow::Instance - An instance in a workflow, with state and history.


SYNOPSIS

        package MyInstance;
        use Moose;
        with qw(Class::Workflow::Instance);
        my $instance = MyInstance->new( state => $initial_state );
        my $new_instance = $transition->apply( $instance, @args );
        # $instance is in $initial state, no transitions applied
        # $new_instance may be in another state, $transition has been applied
        # $new_instance->prev == $instance


DESCRIPTION

A workflow instance encapsulates the current state and workflow history on behalf of some parent object that needs state management.

In the Class::Workflow manpage these instances are functionally pure, that is they don't change but instead derive their parent copies, and the reference from a given item is to the most recently derived copy.

This eases auditing, reverting, and the writing of transitions.


FIELDS

state
The state this instance is in. Required.

prev
The the Class::Workflow::Instance manpage object this object was derived from. Optional.

transition
The transition that created this instance from prev.


METHODS

derive %fields
Clones the object, setting prev to the current object, and shadowing the fields with new values from the key value pair list in the arguments.

_clone %fields
The low level clone operation. If you need to override Moose based cloning, because your instance objects are e.g. the DBIx::Class manpage objects (see the examples directory), then you would likely want to override this.

As a special case values of undef in %fields will cause the clearer to be called, not the setter.

 Class::Workflow::Instance - An instance in a workflow, with state and history.