Quintiq file version 2.0
|
#parent: #root
|
Method Execute (LibOpt_Task parent, LibOpt_Scope scope) as stream[JSON]
|
{
|
Description: 'This method sends the given `LibOpt_Task` and `LibOpt_Scope` to the destination'
|
TextBody:
|
[*
|
subtask := null( LibOpt_Task );
|
if( isnull( parent ) )
|
{
|
run := this.Destination().Run();
|
subtask := LibOpt_Task::Create( run, this.Destination(), this, scope, null( LibOpt_Task ) );
|
}
|
else
|
{
|
// Stop continuing the breakpoint on the parent
|
parent.BreakpointEvent( relflush );
|
|
subtask := parent.SubTask( scope, this.Destination(), this );
|
}
|
|
transporter := this.TaskTransporter();
|
|
if( isnull( this.Destination() ) )
|
{
|
origin := this.GetOrigin()
|
error( Translations::LibOpt_Link_Destination_Null( origin.Name() ) );
|
}
|
|
// Conditionally create a dataset copy.
|
// If transporter.InOneTransaction is true, then the next task will run in one transaction, so user errors or rollbacks might occur.
|
// Therefore, the dataset should be created in a robust way (so the last argument = true).
|
// If transporter.InOneTransaction is false, then we can create a quick copy, because the current transaction ends shortly after this method ends (so the last argument = false).
|
LibOpt_DatasetCopyConditional::CopyDatasetConditionally( LibOpt_Component::ComponentPosition_Initialize(), subtask, transporter.InOneTransaction() );
|
|
return transporter.Send( subtask );
|
*]
|
InterfaceProperties { Accessibility: 'Module' }
|
}
|