ESETask

The ESETask class represents ESE tasks. Each time a task is run, a new job is produced. Tasks represent algorithms and jobs represent the execution of an algorithm, with particular inputs, outputs and state. However, ESETask objects do provide the ability to specify input parameter values prior to being run.

Methods

Examples

Example 1

This example demonstrates the simplest form of how to connect to an ESE server, get a task and run it. 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)

Example 2

By default, both asynchronous and synchronous tasks are run synchronously. However, asynchronous tasks can be freed to run asynchronously via the ASYNCHRONOUS keyword to run:

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

Job = Task.run(a=1, b=2,/ASYNCHRONOUS)

Example 3

In this example, the task is run with the same values as in the first example, but the values are set on the task object, instead of in the "run" method.

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

Task.a = 1

Task.b = 2

Job = Task.Run()

Example 4

This example sets one parameter on the task and then supplies values for the second parameter when the task is run. For all invocations, parameter 'a' will have a value of 1.

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

Task.a = 1

 

FOR i = 0, 9 DO BEGIN

 

Job = Task.Run(b=i)

 

PRINT, 'Computation: ' + $

strtrim(Job.a, 2) + ' + ' + $

strtrim(Job.b, 2) + ' = ' + $

strtrim(Job.c, 2)

 

ENDFOR

Properties

PARAMETERNAME (IDLVariable, Set, Get)

The name of any of the task's parameters. The ESE API will dynamically set and get the values of task parameters. These values will be used in the Run() method unless they are overridden by a corresponding keyword in the Run() method. The parameter name must be fully specified, without abbreviation.

ESETask::GetParameter

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

Example

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

Parameter = Task.GetParameter('a')

Syntax

Result = Obj.[ESETask::]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 to match.

Keywords

None.

ESETask::GetParameters

Returns a list of ESETaskParameter objects.

Example

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

Parameters = Task.GetParameters()

Syntax

Result = Obj.[ESETask::]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 have the method return just the names of the parameters, instead of ESETaskParameter objects.

ESETask::GetParent

This function returns the ESEService object in which this task resides.

Example

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

Service = Task.GetParent()

Syntax

Result = Obj.[ESETask::]GetParent()

Return Value

The return value is the ESEService object that this the parent to the task.

Arguments

None.

Keywords

None.

ESETask::Info

Returns a dictionary with all the properties of the task.

Example

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

Info = Task.Info()

Desc = info.description

Syntax

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

Return Value

The return value is a dictionary with the following fields:

Arguments

None.

Keywords

None.

ESETask::Run

Runs the task and produces an ESEJob object, which can be used to monitor status and get the values of output parameters.

The job is run synchronously unless the task is asynchronous and the ASYNCHRONOUS or ASYNC keywords are set. Synchronous tasks are always run synchronously, regardless of the use of the ASYNCHRONOUS and ASYNC keywords.

Input parameter values are specified via keywords. Output parameter names and invalid parameter names throw an error (or cause run to return an ESEJob with error information). The conversion from IDL to JSON is performed by default, or by custom serialization and deserialization methods.

Example

In this example, the 'addition' task is run. The input parameter 'a' is set on the task object and input parameter 'b' is set when the task is run.

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

Task.a = 1

Job = Task.Run(b=2)

PRINT, Job.c

The value for the output parameter 'c' can only be retrieved from the ESEJob object.

Syntax

Job = Obj.[ESETask::]Run Keywords [, /ASYNC | /ASYNCHRONOUS ])

Return Value

This method returns an ESEJob object, which represents the execution of the task. The job contains all the input and output parameter values as well as the execution state (ESE.jobExecuting, ESE.jobSucceeded, ESE.jobFailed, etc.).

Arguments

None.

Keywords

ASYNC

The only allowable abbreviation of the ASYNCHRONOUS keyword.

ASYNCHRONOUS

Set this keyword to run jobs asynchronously. Only asynchronous jobs can be run asynchronously. This keyword is ignored with synchronous tasks.

INPUTPARAMETER

Set input parameters to values using normal IDL keyword-value pairs. For example, if a task has a parameter 'mode' then to run it with a value of 2. it as: Task.run( mode = 2 ).

Version History

IDL 8.4.1 Introduced
IDL 8.5.2 Deprecated the return of version, reset, invocationType fields on return value from ESETask::Info

See Also

ESE, ESEJob, ESEService, ESETaskParameter