| Workflow documentation | Contained in the Workflow distribution. |
Workflow::Persister::DBI::SequenceId - Persister to fetch ID from a sequence
This documentation describes version 1.05 of this package
<persister
name="MyPersister"
workflow_sequence="wf_seq"
history_sequence="wf_history_seq"
...
Implementation for DBI persister to fetch an ID value from a sequence.
Returns a unique sequence id from a database.
Takes a single parameter, a DBI database handle.
Returns a single value, a integer representing a sequence id from the provided database handle.
This is a dummy method, use pre_fetch_id
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.
Jonas B. Nielsen (jonasbn) <jonasbn@cpan.org> is the current maintainer.
Chris Winters <chris@cwinters.com>, original author.
| Workflow documentation | Contained in the Workflow distribution. |
package Workflow::Persister::DBI::SequenceId; # $Id: SequenceId.pm 454 2009-01-12 10:04:02Z jonasbn $ use warnings; use strict; use base qw( Class::Accessor ); use DBI; use Log::Log4perl qw( get_logger ); use Workflow::Exception qw( persist_error ); use English qw( -no_match_vars ); $Workflow::Persister::DBI::SequenceId::VERSION = '1.05'; my @FIELDS = qw( sequence_name sequence_select ); __PACKAGE__->mk_accessors(@FIELDS); my ($log); sub pre_fetch_id { my ( $self, $dbh ) = @_; $log ||= get_logger(); my $full_select = sprintf $self->sequence_select, $self->sequence_name; $log->is_debug && $log->debug("SQL to fetch sequence: $full_select"); my ($row); eval { my $sth = $dbh->prepare($full_select); $sth->execute; $row = $sth->fetchrow_arrayref; $sth->finish; }; if ($EVAL_ERROR) { persist_error "Failed to retrieve sequence: $EVAL_ERROR"; } return $row->[0]; } sub post_fetch_id {return} 1; __END__