Quintiq file version 2.0
|
#parent: #root
|
Method DeleteWhenFlagged (Boolean isdatasetconstructed)
|
{
|
Description:
|
[*
|
If the `LibOpt_SnapshotReplannableCopyDataset.HasExecutedDoFinalizeDatasetCopyDelete` attribute is `true` for a snapshot, then we know that we have executed the `LibOpt_DatasetCopyConditional::DoFinalizeDatasetCopyDelete` method for that snapshot.
|
When `LibOpt_DatasetCopyConditional::DoFinalizeDatasetCopyDelete` has been executed for a snapshot, then we do not need the `this` object anymore for that snapshot.
|
Therefore, if the `this` object is flagged for deletion and if `LibOpt_SnapshotReplannableCopyDataset.HasExecutedDoFinalizeDatasetCopyDelete` is `true` for all snapshots that have been created by the `this` object (so all snapshots in the `this.SnapshotReplannableCopyDataset` relation),
|
then we can safely delete `this`.
|
*]
|
TextBody:
|
[*
|
// evr3 Jun-19-2020 (created)
|
if( this.IsFlaggedForDeletion()
|
// We can safely delete all 'LibOpt_DatasetCopyConditional' objects in a newly constructed dataset,
|
// because there won't be any reactive calls that might require a 'LibOpt_DatasetCopyConditional' object in a new dataset.
|
and ( isdatasetconstructed
|
or forall( this,
|
SnapshotReplannableCopyDataset,
|
snapshot,
|
snapshot.HasExecutedDoFinalizeDatasetCopyDelete()
|
)
|
)
|
)
|
{
|
this.Delete();
|
}
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|