Quintiq file version 2.0
|
#parent: #root
|
Method ConvertSnapshotsLabelValue (
|
Number batchsize,
|
DssKpiSnapshot startSnapshot,
|
KpiLabelValue oldLabelValue,
|
KpiLabelValue newLabelValue
|
) as stream[DssKpiSnapshotStorage]
|
{
|
Description: 'CAN EXTEND | Dss-specific implementation of ConvertSnapshotsLabelValue that convert label value in batches of the specified size, starting from the specified Snapshot onwards. Returns a stream to allow waiting for the last batch to complete.'
|
TextBody:
|
[*
|
snapshot := startSnapshot;
|
entry := 0;
|
while ( not isnull( snapshot ) and entry < batchsize )
|
{
|
convertsnapshot := snapshot;
|
snapshot := snapshot.PreviousSnapshot();
|
|
labelvalue := select( convertsnapshot, LabelValueInSnapshot.LabelValue, value, value.Value() = oldLabelValue.Value() );
|
if( not isnull( labelvalue ) )
|
{
|
convertsnapshot.AddLabelValue( newLabelValue );
|
}
|
|
entry++;
|
}
|
|
// Setup the call to the next batch with low priority.
|
returnStream := emit( this );
|
if ( not isnull( snapshot ) )
|
{
|
returnStream := this
|
->Annotate( ReactiveAnnotation::Priority( 0 ) )
|
->ConvertSnapshotsLabelValue( batchsize, snapshot, oldLabelValue, newLabelValue );
|
}
|
|
return returnStream;
|
*]
|
InterfaceProperties { Accessibility: 'Extensible' }
|
}
|