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
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.