| Quintiq file version 2.0 | 
| #parent: #root | 
| MethodOverride DoExecuteReactive (Algorithm algorithm, LibOpt_Task task) as stream[JSON] | 
| { | 
|   TextBody: | 
|   [* | 
|     // Start measuring the framework-solve duration at POA's entry point in the LibOpt framework. | 
|     poa := algorithm->( algorithm ) | 
|     { | 
|       poa := algorithm.astype( POAAlgorithm ); | 
|       LibOpt_AlgorithmStopwatch::Start( poa, LibOpt_SnapshotAlgorithm::FrameworkSolve() ); | 
|       return poa; | 
|     } | 
|     //the `poa` variable is reset by the strategy methods to facilitate remote execution on another server | 
|     //the local `poa` from above is passed as a copy to the remote server and the solutions found by the strategy | 
|     //are available on the remote server. That is why a new `POAAlgorithm` is passed back from the remote server. | 
|     //the new `poa` variable set below contains the solutions found by the strategy. | 
|     if( this.ExecuteStrategyRemote() ) | 
|     { | 
|       poa := this.ExecuteStrategyReactive( poa->Annotate( ReactiveAnnotation::Remote( true ) ) ); | 
|     } | 
|     else | 
|     { | 
|       poa := this.ExecuteStrategyReactive( poa ); | 
|     } | 
|     result := poa->LibOpt_SuboptimizerPOA::FinalizePOA() | 
|                      ->|this->DoHandleResultCall( poa, task ); | 
|      | 
|     return result; | 
|   *] | 
| } |