Currently we have 2 ways of scheduling a job to run sometime in the future. The first way is to directly use the quartz API to schedule a job to be run, the second way is to use the ScheduledInvocationManager which provides a simple way to schedule a job on the future.
The ScheduledInvocationManager implementation currently uses one quartz job that runs at a predetermined interval and process all the jobs that need to be run. This is basically a simple quartz and doesn't allow accurate timing as the job is only running once every couple of minutes.
Having the jobs that ScheduledInvocationManager wants to run in the future directly in quartz allows much better firing of events and also allows some debugging through the UI as they will show up in the job manager.