Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method RecoverLastFailedRun () as LibOpt_Run 
 | 
{ 
 | 
  TextBody: 
 | 
  [* 
 | 
    algorithm := AlgorithmStore::TryRetrieve( LibOpt_Run::AlgorithmStore_OnException_Identifier( this ) ); 
 | 
    result := null( LibOpt_Run ); 
 | 
     
 | 
    if( not isnull( algorithm ) and algorithm.IsStringStored( LibOpt_Suboptimizer::RollbackStorage_Run() ) ) 
 | 
    { 
 | 
      // retrieve and store algorithm again, such that it is still there after using undo. 
 | 
      json_string := algorithm.RetrieveString( LibOpt_Suboptimizer::RollbackStorage_Run() ); 
 | 
      AlgorithmStore::Store( LibOpt_Run::AlgorithmStore_OnException_Identifier( this ), &algorithm ); 
 | 
       
 | 
      json := JSON::Parse( json_string ); 
 | 
      result := LibOpt_Run::Deserialize( json, this ); 
 | 
    } 
 | 
    else 
 | 
    { 
 | 
      run := LibOpt_Run::Create( this ); 
 | 
      errorObj := construct( LibOpt_Error ); 
 | 
      errorObj.GeneralInformation( Translations::LibOpt_Run_NothingToRecover() ); 
 | 
      LibOpt_SnapshotError::Throw( run, errorObj); 
 | 
      result := run; 
 | 
    } 
 | 
     
 | 
    return result; 
 | 
  *] 
 | 
} 
 |