From 1dd4456f904abcfdf70ef25d922521a6af8a02aa Mon Sep 17 00:00:00 2001 From: erickson Date: Wed, 1 Apr 2009 13:54:42 +0000 Subject: [PATCH] Updated the IDL to match the table name in the sql: template_output => event_output Added an is_error column to event_output Updated event.error_output to link to event_output table Storing error text in event_output table with is_error='t' git-svn-id: svn://svn.open-ils.org/ILS/trunk@12748 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- Open-ILS/examples/fm_IDL.xml | 12 +++++++---- .../OpenILS/Application/Trigger/Reactor.pm | 20 ++++++++++++------- .../src/sql/Pg/400.schema.action_trigger.sql | 3 ++- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/Open-ILS/examples/fm_IDL.xml b/Open-ILS/examples/fm_IDL.xml index abb273ad9c..04aecbf963 100644 --- a/Open-ILS/examples/fm_IDL.xml +++ b/Open-ILS/examples/fm_IDL.xml @@ -580,18 +580,21 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - - + + - + + + + @@ -783,7 +786,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - + + diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm index 0257d92dbe..292caac616 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Trigger/Reactor.pm @@ -70,22 +70,28 @@ sub run_TT { my $nostore = shift; return undef unless $env->{template}; + my $error; my $output = ''; my $tt = Template->new; $env->{helpers} = $_TT_helpers; - $tt->process(\$env->{template}, $env, \$output) or - $logger->error("Error processing Trigger template: " . $tt->error); + unless( $tt->process(\$env->{template}, $env, \$output) ) { + $output = undef; + ($error = $tt->error) =~ s/\n/ /og; + $logger->error("Error processing Trigger template: $error"); + } - if (!$nostore && $output) { - my $t_o = Fieldmapper::action_trigger::template_output->new; - $t_o->data( $output ); + if ( $error or (!$nostore && $output) ) { + my $t_o = Fieldmapper::action_trigger::event_output->new; + $t_o->data( ($error) ? $error : $output ); + $t_o->is_error( ($error) ? 't' : 'f' ); $env->{EventProcessor}->editor->xact_begin; - $t_o = $env->{EventProcessor}->editor->create_action_trigger_template_output( $t_o ); + $t_o = $env->{EventProcessor}->editor->create_action_trigger_event_output( $t_o ); my $state = (ref $$env{event} eq 'ARRAY') ? $$env{event}->[0]->state : $env->{event}->state; - $env->{EventProcessor}->update_state( $state, { template_output => $t_o->id } ); + my $key = ($error) ? 'error_output' : 'template_output'; + $env->{EventProcessor}->update_state( $state, { $key => $t_o->id } ); } return $output; diff --git a/Open-ILS/src/sql/Pg/400.schema.action_trigger.sql b/Open-ILS/src/sql/Pg/400.schema.action_trigger.sql index 75f735962a..90078c06df 100644 --- a/Open-ILS/src/sql/Pg/400.schema.action_trigger.sql +++ b/Open-ILS/src/sql/Pg/400.schema.action_trigger.sql @@ -123,6 +123,7 @@ CREATE TABLE action_trigger.environment ( CREATE TABLE action_trigger.event_output ( id BIGSERIAL PRIMARY KEY, create_time TIMESTAMPTZ NOT NULL DEFAULT NOW(), + is_error BOOLEAN NOT NULL DEFAULT FALSE, data TEXT NOT NULL ); @@ -138,7 +139,7 @@ CREATE TABLE action_trigger.event ( update_process INT, state TEXT NOT NULL DEFAULT 'pending' CHECK (state IN ('pending','invalid','found','collecting','collected','validating','valid','reacting','reacted','cleaning','complete','error')), template_output BIGINT REFERENCES action_trigger.event_output (id), - error_output TEXT + error_output BIGINT REFERENCES action_trigger.event_output (id), ); CREATE TABLE action_trigger.event_params ( -- 2.43.2