NAME
Workflow::Persister - Base class for workflow persistence
VERSION
This documentation describes version 2.00 of this package
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.
Returns the ID for 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 including serialization of the workflow context.
Returns nothing.
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 at least the keys state
and last_update
(a DateTime instance).
If the workflow has associated serialized context, return the deserialized hash value in the context
key. The keys in the hash will be made available through the param
method in the workflow's context (accessible through the context
method).
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.
Returns @history
, the list of history objects, with the history id
and saved
values set according to the saved results.
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 hashes containing at least the `id` key. The hashes will be used by the workflow object to instantiate Workflow::History objects (or a derived class).
assign_generators( \%params )
Assigns proper generators based on intialization, see "init"
commit_transaction
Commit the current transaction if the persister supports transactions. This stub does not have to be overridden. It is not executed if autocommit is on.
rollback_transaction
Roll back the current transaction if the persister supports transactions. This stub does not have to be overridden. It is not executed if autocommit is on.
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-2021 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.
Please see the LICENSE
AUTHORS
Please see Workflow