public interface Executable
JAVA_TYPE
.
A client application specifies the Java executable class by setting the
the CLASS_NAME
system property
via either job metadata or at request submission. The executable class
may also implement the Cancellable
interface. The executable class
implementation must provide an empty constructor.
When a request is ready to execute, Enterprise Scheduler will first
invoke the pre-process
callback if one was
specified for the request. If the callback indicates that request
execution should proceed, Enterprise Scheduler will then instantiate
the Executable
implementation class and call the
execute
method. Upon successful return from
execute
, the post-process
callback
will be invoked if one was specified for the request.
The execute
method is called each time the request is executed.
It is passed an execution context in the form of a
RequestExecutionContext
and the current request parameters.
The execution context specifes the request identifer and additional
details needed if the job implementation submits sub-requests.
The manner in which execute
returns to the caller, either by
successful return or exception, determines how Enterprise Scheduler
handles subsequent request processing.
A Java executable can submit sub-requests using
RuntimeService.submitRequest
.
It must then throw ExecutionPausedException
which causes the
request to transition to PAUSED
state. Once the sub-requests
have completed, the parent request is run again as a resumed request.
The execution context can be used to determine if the executable is
being run as a resumed request.
The job executable is called zero, one, or more times for a given request based on various factors. The executable is never invoked for the submitted request (absolute parent) of a Schedule based submission since the submitted request does not actually execute. Instead, Enterprise Scheduler automatically creates a child request for each schedule instance, each having a different request id.
The executable may be invoked more that once for a given request during
its overall lifecycle. One case is a request that submits sub-requests
and pauses to allow sub-requests to run. The job executable for that
parent request is invoked when the request is initially executed and
again when it is resumed. Another case is if a system error is encountred
while processing a request. Enterprise Scheduler may automatically retry
the request execution depending on the value of the
RETRIES
system property.
Enterprise Scheduler creates a new instance of the executable class each time it is invoked for a given request. For example, a new instance is create when a paused request is resumed, or each retry of a request. As such, the job implementation should not rely on class static or instance member variables for maintaining state.
RequestExecutionContext
,
State
Modifier and Type | Method and Description |
---|---|
void |
execute(RequestExecutionContext context,
RequestParameters parameters)
Invoked every time the Java job request is executed.
|
void execute(RequestExecutionContext context, RequestParameters parameters) throws ExecutionErrorException, ExecutionWarningException, ExecutionCancelledException, ExecutionPausedException
context
- the execution context for associated with this requestparameters
- the request parameters associated with this requestExecutionErrorException
- Should be thrown when the job
implementation detects a failure condition that it needs to
communicate to the scheduling subsystem.
ExecutionErrorException
is treated as a system error. The request will transition to
ERROR
state unless it is subject to retries based on the
value of the RETRIES
system property.
If the request will be retried it will transition to
ERROR_AUTO_RETRY
state and then WAIT
state.
ExecutionBizErrorException
is treated as a business error, which is not subject to retries.
The request will transition to ERROR
state.
ExecutionWarningException
- Should be thrown when the job
implementation detects a failure condition that it needs to
communicate to the scheduling subsystem.
The request will transition to WARNING
state once the
post-processing, if any, has been done.ExecutionCancelledException
- Should be thrown when the job
implementation detects a condition for request cancellation that
it needs to communicate to the scheduling subsystem.
The request will transition to CANCELLED
state.ExecutionPausedException
- Should be thrown when the job
implementation submits a sub-request and is ready to pause to
allow the sub-request to execute.
The request will transition to PAUSED
state.State