Tuesday, January 17, 2012

Writing a Schedulable Component in ATG


This section describes how to write a component that schedules itself to perform a task according to
different schedules. In this case, the task to be performed is to write Hello to the console.
Such a component might look like this:


import atg.nucleus.*; 
import atg.service.scheduler.*; 
public class HelloJob extends GenericService implements Schedulable 

  public HelloJob () {} 
  // Scheduler property 
  Scheduler scheduler; 
  public Scheduler getScheduler () { return scheduler; } 
  public void setScheduler (Scheduler scheduler) 
  { this.scheduler = scheduler; } 
// Schedule property 
  Schedule schedule; 
  public Schedule getSchedule () { return schedule; } 
  public void setSchedule (Schedule schedule) 
  { this.schedule = schedule; } 
  // Schedulable method 
  public void performScheduledTask (Scheduler scheduler, 
                                    ScheduledJob job) 
  { System.out.println ("Hello"); } 
  // Start method 
  int jobId; 


  public void doStartService () throws ServiceException 
  { 
    ScheduledJob job = new ScheduledJob ("hello", 
                                         "Prints Hello", 
                                         getAbsoluteName (), 
                                         getSchedule (), 
                                         this, 
                                         ScheduledJob.SCHEDULER_THREAD); 
    jobId = getScheduler ().addScheduledJob (job); 
  } 
  // Stop method 
  public void doStopService () throws ServiceException 
  { 
    getScheduuler ().removeScheduledJob (jobId); 
  } 
}



Notice that this component extends GenericService, which allows it to be notified of start and stop
conditions through doStartService and doStopService. The component also implements
Schedulable by defining the performScheduledTask method to print Hello. The component also
requires the scheduler and schedule to be set as properties.
When the component is started, it constructs a ScheduledJob from the schedule property, and also
specifies that the job should run in the Scheduler’s thread. The component then adds the job to the
Scheduler, and stores the job ID returned by the Scheduler. When the component is stopped, it removes
the scheduled job by passing the ID of the job.

No comments:

Popular Posts