This interface models a WorkManager which provides a facility
to submit Work instances for execution. This frees the user
from having to create Java threads directly to do work. Further, this
allows efficient pooling of thread resources and more control over thread
usage.
The various stages in Work processing are:
work submit: A Work instance is being submitted for
execution. The Work instance could either be accepted or
rejected with a WorkRejectedException set to an appropriate
error code.
work accepted: The submitted Work instance has been
accepted. The accepted Work instance could either start
execution or could be rejected again with a
WorkRejectedException set to an appropriate error code.
There is no guarantee on when the execution would start unless a start
timeout duration is specified. When a start timeout is specified, the
Work execution must be started within the specified
duration (not a real-time guarantee), failing which a
WorkRejectedException set to an error code
(WorkRejected.TIMED_OUT) is thrown.
work rejected: The Work instance has been rejected.
The Work instance could be rejected during Work
submittal or after the Work instance has been accepted
(but before Work instance starts execution). The rejection could be due
to internal factors or start timeout expiration. A
WorkRejectedException with an appropriate error code
(indicates the reason) is thrown in both cases.
work started: The execution of the Work
instance has started. This means that a thread
has been allocated for its execution. But this
does not guarantee that the allocated thread has been scheduled to run
on a CPU resource. Once execution is started, the allocated thread
sets up an appropriate execution context (transaction , security, etc)
and calls Work.run(). Note, any exception thrown during execution context
setup or Work.run() leads to completion of processing.
work completed: The execution of the Work has been
completed. The execution could complete with or without an exception.
The WorkManager catches any exception thrown during
Work processing (which includes execution context setup),
and wraps it with a WorkCompletedException.
WorkManagerwhich provides a facility to submitWorkinstances for execution. This frees the user from having to create Java threads directly to do work. Further, this allows efficient pooling of thread resources and more control over thread usage. The various stages inWorkprocessing are:Workinstance is being submitted for execution. TheWorkinstance could either be accepted or rejected with aWorkRejectedExceptionset to an appropriate error code.Workinstance has been accepted. The acceptedWorkinstance could either start execution or could be rejected again with aWorkRejectedExceptionset to an appropriate error code. There is no guarantee on when the execution would start unless a start timeout duration is specified. When a start timeout is specified, theWorkexecution must be started within the specified duration (not a real-time guarantee), failing which aWorkRejectedExceptionset to an error code (WorkRejected.TIMED_OUT) is thrown.Workinstance has been rejected. TheWorkinstance could be rejected duringWorksubmittal or after theWorkinstance has been accepted (but before Work instance starts execution). The rejection could be due to internal factors or start timeout expiration. AWorkRejectedExceptionwith an appropriate error code (indicates the reason) is thrown in both cases.Workinstance has started. This means that a thread has been allocated for its execution. But this does not guarantee that the allocated thread has been scheduled to run on a CPU resource. Once execution is started, the allocated thread sets up an appropriate execution context (transaction , security, etc) and calls Work.run(). Note, any exception thrown during execution context setup or Work.run() leads to completion of processing.Workhas been completed. The execution could complete with or without an exception. TheWorkManagercatches any exception thrown duringWorkprocessing (which includes execution context setup), and wraps it with aWorkCompletedException.