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.
The state this instance is in. Required.
The Class::Workflow::Instance object this object was derived from. Optional.
The transition that created this instance from
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.
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.