From: miker Date: Tue, 31 Mar 2009 17:36:14 +0000 (+0000) Subject: give the environment built by O::A::T::Event[Group] access to the event proccessing... X-Git-Tag: sprint4-merge-nov22~10369 X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=0da4f1a5edaddaa609c0cf9b59a2936b18eec0e5;p=working%2FEvergreen.git give the environment built by O::A::T::Event[Group] access to the event proccessing object; teach O::A::T::Reactor::run_TT how to use this special EventProcessor env element, optionally turning this off via a "nostore" flag to run_TT git-svn-id: svn://svn.open-ils.org/ILS/trunk@12738 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Event.pm b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Event.pm index a233a7f8d5..c885c414f1 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Event.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Event.pm @@ -356,6 +356,7 @@ sub build_environment { try { + $self->environment->{EventProcessor} = $self; $self->environment->{target} = $self->target; $self->environment->{event} = $self->event; $self->environment->{template} = $self->event->event_def->template; diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/EventGroup.pm b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/EventGroup.pm index 99a09d0906..41ce3b98cf 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/EventGroup.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/EventGroup.pm @@ -182,6 +182,8 @@ sub update_state { my $state = shift; return undef unless ($state); + my $fields = shift; + $self->editor->xact_begin || return undef; my @oks; @@ -193,9 +195,13 @@ sub update_state { $e->update_time( 'now' ); $e->update_process( $$ ); $e->state( $state ); - + $e->clear_start_time() if ($e->state eq 'pending'); - + + if ($fields && ref($fields)) { + $e->$_($$fields{$_}) for (keys %$fields); + } + my $ok = $self->editor->update_action_trigger_event( $e ); if ($ok) { push @oks, $ok; @@ -228,10 +234,12 @@ sub build_environment { my $self = shift; my $env = $self->environment; + $$env{EventProcessor} = $self; $$env{target} = []; $$env{event} = []; for my $e ( @{ $self->events } ) { for my $env_part ( keys %{ $e->environment } ) { + next if ($env_part eq 'EventProcessor'); if ($env_part eq 'target') { push @{ $$env{target} }, $e->environment->{target}; } elsif ($env_part eq 'event') { diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm index 7bacf78278..d85985da51 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm @@ -76,6 +76,15 @@ sub run_TT { $tt->process(\$env->{template}, $env, \$output) or $logger->error("Error processing Trigger template: " . $tt->error); + if (!$nostore && $output) { + my $t_o = Fieldmapper::action_trigger::template_output->new; + $t_o->data( $output ); + + $env->{EventProcessor}->editor->xact_begin; + $t_o = $env->{EventProcessor}->editor->create_action_trigger_template_output( $t_o ); + $env->{EventProcessor}->update_state( $env->{event}->state, { template_output => $t_o->id } ); + } + return $output; }