Often a background thread would be ideal for processing a users request. Perhaps
the user is requesting a complicated data report, which make take several minutes to compute,
or a job which can be run in the background, and allow the user to continue using the
system while it processes. Using the job interface, you can create executable threads,
which the job manager will track for you, and give you a standardized interface for
communicating with your active jobs. You can imagine in the former case, it would be ideal
that either the user come back sometime in the future to retrieve their completed job, or
they are presented with a progress bar updating with the percentage complete of the
running job. In the latter case, it would be ideal for a progress bar to be at the bottom of
the page, continually updating with their job progress; while at the top still allowing
them full access to your web application.
Both situations can be handled with the job interface, and by using the Statusbar
design pattern. The job interface requires database access for storing the results
of completed jobs, and this access is currently only done through the Object abstraction
layer. The job manager will only function if it is connected to a database stable to
store job results.