Quintiq file version 2.0
|
#parent: #root
|
Method DoTask (LibOpt_Task task) as stream[JSON]
|
{
|
TextBody:
|
[*
|
result := stream[JSON]::Success();
|
|
if( task.CanContinue() )
|
{
|
handle_exception := true;
|
breakpoint_stream := null( stream[Void] );
|
if( this.HasBreakpoint( LibOpt_Component::ComponentPosition_Initialize(), task, breakpoint_stream ) )
|
{
|
result := breakpoint_stream->|this->DoOperation( task );
|
}
|
else
|
{
|
reactive_calls := LibOpt_CurrentTransaction::GetSpawnedReactiveCalls();
|
result := this.DoOperation( task );
|
handle_exception := reactive_calls <> LibOpt_CurrentTransaction::GetSpawnedReactiveCalls() and not task.Run().InOneTransaction();
|
}
|
|
if( handle_exception )
|
{
|
exception := task->HandleException( result->Exception() );
|
|
result := stream[JSON]::Merge( exception->|stream[JSON]::Success(), result->IgnoreException() );
|
}
|
}
|
return result;
|
*]
|
}
|