NAME

Workflow::Persister - Base class for workflow persistence

SYNOPSIS

 # Associate a workflow with a persister
 <workflow type="Ticket"
           persister="MainDatabase">
 ...
 
 # Declare a persister
 <persister name="MainDatabase"
            class="Workflow::Persister::DBI"
            driver="MySQL"
            dsn="DBI:mysql:database=workflows"
            user="wf"
            password="mypass"/>
 
 # Declare a separate persister
 <persister name="FileSystem"
            class="Workflow::Persister::File"
            path="/path/to/my/workflow"/>

DESCRIPTION

This is the base class for persisting workflows. It does not implement anything itself but actual implementations should subclass it to ensure they fulfill the contract.

The job of a persister is to create, update and fetch the workflow object plus any data associated with the workflow. It also creates and fetches workflow history records.

SUBCLASSING

Methods

create_workflow( $workflow )

Stub that warns that the method should be overwritten in the derived Persister. Since this is a SUPER class.

Generate an ID for the workflow, serialize the workflow data (ID and state) and set the ID in the workflow.

update_workflow( $workflow )

Stub that warns that the method should be overwritten in the derived Persister. Since this is a SUPER class.

Update the workflow state.

fetch_workflow( $workflow_id )

Stub that warns that the method should be overwritten in the derived Persister. Since this is a SUPER class.

Retrieve the workflow data corresponding to $workflow_id. It not found return undef, if found return a hashref with the data.

create_history( $workflow, @history )

Stub that warns that the method should be overwritten in the derived Persister. Since this is a SUPER class.

Serialize all objects in @history for later retrieval.

fetch_history( $workflow )

Stub that warns that the method should be overwritten in the derived Persister. Since this is a SUPER class.

The derived class method should return a list of Workflow::History objects.

assign_generators( \%params )

Assigns proper generators based on intialization, see "init"

fetch_extra_workflow_data ( $workflow )

A stub that warns that the method should be overwritten in the derived Persister. Since this is a SUPER class.

init

Method to initialize persister based on configuration.

init_random_generators( \%params )

Initializes random id generators, takes the following named parameters:

  • length, of random id to be generated

Returns two identical random id generator objects in list context.

init_uuid_generators( \%params )

Initializes UUID generators, takes no parameters

Returns two identical UUID generator objects in list context.

TODO

  • refactor init_random_generators, returns two similar objects?

  • refactor init_uuid_generators, returns two similar objects?

  • refactor init_uuid_generators, takes no parameters, even though we shift parameters in?

SEE ALSO

Workflow::Factory

Workflow::History

COPYRIGHT

Copyright (c) 2003-2007 Chris Winters. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHORS

Jonas B. Nielsen (jonasbn) <jonasbn@cpan.org> is the current maintainer.

Chris Winters <chris@cwinters.com>, original author.