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.