yunchai
2023-10-07 160249d574bc6776d347eb7c046ee2d759af8c16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Quintiq file version 2.0
#parent: #root
MethodOverride ShouldStop (
  LibOpt_Task task
) as Boolean
{
  Description:
  [*
    Whether the `LibOpt_Iterator` should stop.
    When `true` is returned, all ongoing iterations spawned by the `LibOpt_Iterator` will be aborted.
  *]
  TextBody:
  [*
    context         := task.TaskContext().astype( LibOpt_TaskContextIterator );
    iterations      := context.CurrentIteration() >= this.MaxIterations()
    local_duration  := DateTime::ActualTime() - context.TimeStamp() >= this.MaxDurationLocal();
    global_duration := DateTime::ActualTime() - task.Run().StartedOn() >= this.MaxDurationGlobal();
    
    return iterations or local_duration or global_duration;
  *]
}