Class::Workflow::Instance - An instance in a workflow, with state and history.
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
A workflow instance encapsulates the current state and workflow history on
behalf of some parent object that needs state management.
In Class::Workflow 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.
- state
- The state this instance is in. Required.
- prev
- The Class::Workflow::Instance object this object was derived from.
Optional.
- transition
- The transition that created this instance from
"prev".
- 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. DBIx::Class objects (see
the examples directory), then you would likely want to override
this.
See MooseX::Clone for more details.