Usage example
This example demonstrates running an execution in an already-configured Xpress Executor component.
You will need to fill in the model parameters with your Xpress Executor component details.
model ExecutorExecuteExample uses "executor" parameters COMPONENT_URL = "" DMP_MANAGER_URL = "" CLIENT_ID = "" SECRET = "" end-parameters declarations INPUT_FILE="MyExecutionInputFile.dat" RESULT_FILE="MyExecutionResultFile.dat" myexecutor: Executor myexecution: ModelExecution EXECUTION_TIMEOUT = 10*60 ! Timeout in seconds end-declarations ! Configure 'myexecutor' with our Xpress Executor component details myexecutor.componenturl := COMPONENT_URL myexecutor.dmpmanagerurl := DMP_MANAGER_URL myexecutor.clientid := CLIENT_ID myexecutor.secret := SECRET ! Start execution passing local input data myexecution := executorexecute(myexecutor,INPUT_FILE) if myexecutor.status<>EXECUTOR_OK then writeln("Error from Executor when starting execution: ",myexecutor.lasterror) exit(1) end-if ! Wait for execution to complete executorwaitfor(myexecutor,myexecution,EXECUTION_TIMEOUT) if myexecutor.status<>EXECUTOR_OK then writeln("Error from Executor when waiting for completion: ",myexecutor.lasterror) ! If execution did not complete within time limit, display error elif not myexecution.iscompleted then writeln("Execution failed to complete within ",EXECUTION_TIMEOUT,"s") ! If execution completed with error, display error elif myexecution.status<>EXECUTION_STATUS_OK or myexecution.exitcode<>0 then writeln("Execution failed with status ",myexecution.status," and exit code ",myexecution.exitcode) ! In error cases, execution run log will contain valuable information executorfetchrunlog(myexecutor,myexecution,"runlog.txt") if myexecutor.status<>EXECUTOR_OK then writeln("Error from Executor when fetching run log: ",myexecutor.lasterror) else writeln("Run log saved in file runlog.txt") end-if ! If execution completed ok, download result else ! Completed okay, download results executorfetchresult(myexecutor,myexecution,RESULT_FILE) if myexecutor.status<>EXECUTOR_OK then writeln("Error from Executor when fetching results: ",myexecutor.lasterror) else writeln("Result data saved in file ",RESULT_FILE) end-if end-if ! Delete execution from server executordelete(myexecutor,myexecution) if myexecutor.status<>EXECUTOR_OK then writeln("Error from Executor when deleting execution: ",myexecutor.lasterror) exit(1) end-if end-model