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