ESEJob

The ESEJob class represents the ESE job that is produced whenever a task is run. It provides the ability to monitor the job's status and retrieve both input and output parameters.

Methods

Examples

Example 1

The job object can be used to get the values of input and output parameters. The following example will run the task and only return when the task is completed. Then the status can be checked and the output parameter values retrieved. See Custom IDL Tasks on how to create the addition task. Copy the custom task to your IDL installation lib directory for it to be available on the server.

Task = ESE.GetTask('http://localhost:9191/ese/services/IDL/addition')

 

Job = Task.Run(a=1, b=2)

 

Info = Job.Info()

 

IF (Info.Status eq ESE.jobSucceeded) THEN BEGIN

 

PRINT, Job.a ; 'a' is an input parameter

PRINT, Job.b ; 'b' is an input parameter

PRINT, Job.c ; 'c' is an output parameter

 

ENDIF ELSE BEGIN

 

PRINT, 'Uh oh...'

 

ENDELSE

Example 2

When multiple asynchronous jobs are run in parallel, the "join" functionality of the ESE class can be used to wait until all the jobs have completed. In this example, one task object is acquired and then it is run multiple times. See Custom IDL Tasks on how to create the addition task. Copy the custom task to your IDL installation lib directory for it to be available on the server.

Task = ESE.GetTask('http://localhost:9191/ese/services/IDL/addition')

 

n = 10

jobs = objarr(n)

FOR i = 0, n - 1 do begin

jobs[i] = Task.Run(a = 1, b = i, /ASYNCHRONOUS)

ENDFOR

 

status = ESE.Join(jobs)

 

IF (min(status)) THEN BEGIN

PRINT, 'Jobs ran successfully.'

ENDIF ELSE BEGIN

PRINT, 'Uh oh...'

ENDELSE

The first for loop runs 10 jobs in parallel. The ESE.Join blocks execution until all 10 jobs have either completed successfully or one has failed. The join returns a status array of zeros and ones, indicating which jobs succeeded and which failed or are still running.

Note: The join method has options for reporting status changes.

Properties

INPUTPARAMETER (IDLVariable, Get)

The value of the specified input parameter as an IDL variable.

OUTPARAMETER (IDLVariable, Get)

The value of the specified parameter as an IDL variable. Conversion from JSON to IDL is either performed by default routines or by custom routines. If the job did not complete successfully, then the return value is !null.

 

ESEJob::Cancel

This method cancels a queued, submitted, or executing job. This method has no effect on jobs

that are no longer running.

Example

Task = ESE.GetTask('http://localhost:9191/ese/services/IDL/querytask')

Job = Task.Run( /ASYNC )

Canceled = Job.Cancel()

Syntax

Result = Obj.[ESEJob::]Cancel()

Return Value

The return value indicates success or failure of the cancellation request (!true or !false).

Arguments

None.

Keywords

None.

ESEJob::GetParameter

GetParameter returns an ESETaskParameter object for the named parameter.

Example

Task = ESE.GetTask('http://localhost:9191/ese/services/IDL/addition')

Job = Task.Run(a=1, b=2)

Parameter = Job.GetParameter('c')

Syntax

Result = Obj.[ESEJob::]GetParameter(Name)

Return Value

Returns an ESETaskParameter object for the named parameter. If the parameter does not exist, then it returns !null.

Arguments

Name

Specifies the name of the particular parameter to return.

Keywords

None.

ESEJob::GetParameters

GetParameters returns a list of ESETaskParameter objects.

Example

Task = ESE.GetTask('http://localhost:9191/ese/services/IDL/addition')

Job = Task.Run(a=1, b=2)

Parameter = Job.GetParameters()

Syntax

Result = Obj.[ESEJob::]GetParameters([ /NAMES ])

Return Value

Returns a list of ESETaskParameter objects. If the task does not have any parameters then returns an empty list. If NAMES is set, it returns an array of parameter names, or returns !null if the task does not have any parameters.

Arguments

None.

Keywords

NAMES

Set this keyword to return just the names of parameters instead of ESETaskParameter objects.

ESEJob::Info

Returns a dictionary with all the properties of the job.

Example

 

Task = ESE.GetTask('http://localhost:9191/ese/services/IDL/addition')

Job = Task.Run(a=1, b= 2)

Info = Job.Info()

Status = Info.Status

Syntax

Result = Obj.[ESEJob::]Info()

Return Value

The return value is a dictionary with the following fields:

Arguments

None.

Keywords

None.

ESEJob::JSON

Returns the job's JSON.

Example

Task = ESE.GetTask('http://localhost:9191/ese/services/IDL/addition')

Job = Task.Run(a=1, b= 2)

JSON = Job.JSON()

Syntax

Result = Obj.[ESEJob::]JSON()

Return Value

Returns the job's status JSON as a string.

Arguments

None.

Keywords

None.

ESEJob::Monitor

The Monitor method provides the ability to monitor a job for job status and progress changes.

The specified callback is invoked whenever the monitor notices that the job status or progress number changed. This is useful for only asynchronous jobs.

Example

In this example a "smooth sailing" job is monitored and its progress is printed to the IDL console:

Task = ESE.GetTask('http://localhost:9191/ese/services/IDL/querytaskcatalog')

Job = Task.Run(/ASYNC)

Job.Monitor, 'handleJobChange', USER_DATA='querytaskcatalog'

The callback is:

PRO handleJobChange, Job, userData

compile_opt idl2

jobInfo = Job.Info()

print,'Job ID: '+ (jobInfo.Id).ToString()

print,'Job Status: '+ jobInfo.Status

print, userData

END

Syntax

Obj.[ESEJob::]Monitor, Callback [, USER_DATA = value ] [, REQUESTS_PER_SECOND = double ]

Return Value

None.

Arguments

Callback

The name of a procedure to invoke whenever the job changes status or progress.

Keywords

REQUESTS_PER_SECOND

The number of times per second to check on the job's status. The default is 1.0.

USER_DATA

An optional value to pass to the callback.

Version History

IDL 8.4.1 Introduced

See Also

ESE, ESETaskParameter