Quintiq file version 2.0
|
#parent: #root
|
MethodOverride HandleRollback (
|
LibOpt_Task task
|
)
|
{
|
TextBody:
|
[*
|
task.RecoverFromRollback();
|
|
// recover scaling factor sugesstions, in case those were computed
|
|
Transaction::Transaction().Propagate( relation( SnapshotMacroPlannerOptimizer, LibOpt_Run ) ); // need to have correct last snapshot ( declarative relation, used next line)
|
Transaction::Transaction().Propagate( relation( SnapshotMacroPlannerOptimizer, PreviousSnapshotMacroPlannerOptimizer ) ); // need the sorting
|
Transaction::Transaction().Propagate( attribute( SnapshotMacroPlannerOptimizer, Type ) ); // need to have type below for assert check
|
|
snapshot := task.Run().LastSnapshotMacroPlannerOptimizer().PreviousSnapshotMacroPlannerOptimizer(); // last created is post handle result snapshot
|
assert( snapshot.Type() ~ Translations::LibOpt_SnapshotKPI_CommentPreHandleResult(),
|
'Snapshot type = '+ snapshot.Type()
|
+ ' Snapshot used to recover scale factor suggestions is expected to be pre handle result snapshot. Snapshot.seqnr[key]='
|
+ [String] snapshot.SequenceNr() + [String]snapshot.Key()
|
+ 'run last snapshot = ' + guard([String]task.Run().LastSnapshotMacroPlannerOptimizer().Key(), 'null' ) );
|
|
if ( snapshot.ScaleFactorSuggestedForLevel().Size() > 0 and this.IsAutoScalingEnabled() )
|
{
|
debuginfo( 'Restoring suggested scale factors using snapshot (seqnr, key) = ', snapshot.SequenceNr(), snapshot.Key() );
|
ScaleFactorsSuggestedForLevel::Construct( snapshot.ScaleFactorSuggestedForLevel(), task.Run().Optimization().astype( Optimization ).AlgorithmScaling() ); // recover suggested scale factors
|
}
|
|
// Log the rollback
|
kpi := this.LogKPI( task, Translations::LibOpt_Rollback() );
|
kpi.astype( SnapshotMacroPlannerOptimizer ).IsAccepted( true );
|
kpi.astype( SnapshotMacroPlannerOptimizer ).Parent( relset, guard( kpi.astype( SnapshotMacroPlannerOptimizer ).PreviousOnRun().Parent(), null( LibOpt_Snapshot ) ) ); // need to set parent to get in included in the hierarchy
|
*]
|
}
|