Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method Rollback ( 
 | 
  const RealVector kpi_pre, 
 | 
  const RealVector kpi_post, 
 | 
  LibOpt_Task task 
 | 
) 
 | 
{ 
 | 
  Description: 
 | 
  [* 
 | 
    Rollback the current transaction. 
 | 
     
 | 
    This is done by throwing an error that is not logged in the server log by default. 
 | 
    A config utility setting `libopt.logoptimizerrollbackaserror` when set to `true` will log rollbacks as an error. 
 | 
  *] 
 | 
  TextBody: 
 | 
  [* 
 | 
    diff_index := LibOpt_RollbackKPI::GetDiffIndex( kpi_post, kpi_pre ); 
 | 
     
 | 
    message := ''; 
 | 
    if( diff_index = -1 ) 
 | 
    { 
 | 
      message := Translations::LibOpt_Rollback(); 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      message := Translations::LibOpt_Suboptimizer_Rollback( diff_index, 
 | 
                                                             kpi_pre.Get( diff_index ), 
 | 
                                                             kpi_post.Get( diff_index ), 
 | 
                                                             this.RollbackKPI().IsMinimize( diff_index ) ); 
 | 
    } 
 | 
     
 | 
    err := construct( LibOpt_Error ); 
 | 
    err.Code( Transaction::RollbackErrorNr() ); 
 | 
    err.GeneralInformation( message ); 
 | 
    err.DeveloperInformation( Quill::CallStack() ); 
 | 
    task.RollbackCurrentTransaction( message, err, LibOpt_ConfigurationSettings::GetSetting_LogOptimizerRollbacksAsError() ); 
 | 
  *] 
 | 
} 
 |