[rt-users] Result page not up to date after TransactionBatch scrips

Rafal Matera RMatera at esselte.com
Wed Sep 4 04:16:16 EDT 2013


Hello,

We use RT 4.0.13, We customized our installation by some scrips. Part of
them have to work in TransactionBatch mode.
One of the scrips changes the ticket owner on queue change. This is done by
scrip working in mentioned TransactionBatch mode.

When the queue is changed on Basics screen (Ticket/Modify.html), scrip is
executed without a failure.
The problem is that result page shows the OLD VALUE of the owner.
Clicking Display or Basics again shows that owner was really changed by the
scrip.

The problem exists on blank RT instance as well (only one new queue and
following scrip created).

   <CustomPrepareCode>1;</CustomPrepareCode>
   <Queue>0</Queue>
   <ScripAction>User Defined</ScripAction>
   <ScripCondition>User Defined</ScripCondition>
   <Stage>TransactionBatch</Stage>
   <Template>Blank</Template>
   <CustomCommitCode>
      my ($status_id, $status_msg);
      my $qId;
      my @batch = @{ $self->TicketObj->TransactionBatch };

      foreach my $trans ( @batch ) {

          if ($trans->Type eq 'Set' && $trans->Field eq 'Queue') {
           #if queue changed to COE_XX set owner to opcenter
            $qId = $trans->NewValue;
            my $qObj = new RT::Queue($RT::SystemUser);
            $qObj->Load($qId);
            if ($qObj->Name eq 'COE_XX')
            {
              ($status_id, $status_msg) = $self->TicketObj->SetOwner
      ('opcenter', 'Force');
              $RT::Logger->info("Change owner: $status_msg");
              return !$status_id;
            }

          #in other cases, just set owner to nobody
          ($status_id, $status_msg) = $self->TicketObj->SetOwner(RT::Nobody
      (), 'Force');
          $RT::Logger->info("Change owner: $status_msg");
          return 1;
          }

      }
      1;
   </CustomCommitCode>
   <CustomIsApplicableCode>
      my @batch = @{ $self->TicketObj->TransactionBatch };
      foreach my $trans ( @batch )
      {
        return 1 if ($trans->Field eq "Queue");
      }
      return 0;
   </CustomIsApplicableCode>

Do you have any idea, how to force RT to show current values on result
page ?

Best regards,
Rafal




More information about the rt-users mailing list