Initializing help system before first use

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