<<

Arbitrary Project 3: Task Scheduler Component

Main Goal: Provide an end-user tool composed of a bunch of reusable scheduling components (via their API) to manage scheduling of system or application jobs. A job consists of a series of one or more tasks, configured to run with a given schedule. These enable re-use of common tasks amongst jobs, without the need to redefine those tasks. Command Tasks enable any operating system command (Windows BAT or CMD file, UNIX , or any executable) to be run against any machine on your network. System variables such as {JOB_ID}, {TASK_ID}, {TRY_NUMBER}, {JOBRUN_ID} and more can be passed as parameters to tasks. This could be used; for example, to instruct a task to create a unique log-file based on the job run ID. User variables can be defined as well. User variables have default values assigned when a task is created.

Major Components: Your scheduler should have the following components: • Job Organizer: End-user application, which displays defined tasks and jobs in a hierarchical tree structure. From within the Job Organizer, new tasks and jobs can be defined, and the properties of existing tasks and jobs can be modified. It’s highly recommended providing the job organizer available both as windows application as well as a web application. • Job Monitor: End-user application that shows the history of executed jobs, and the schedule of upcoming executions. Again it’s highly recommended providing the job organizer available both as windows application as well as a web application. • ActiveX Components: A series of ActiveX components that facilitate the definition and execution of tasks and jobs. One of the most important of them is the Rules Engine, whose job is to evaluate the scheduling rules associated with a job to determine if and when it should be run. • Job Executor: This shall be a light-weight process which periodically polls the Rules Engine to find the jobs that need to execute, then instructs the appropriate jobs to execute. It’s recommended implementing this process as an NT service. • Command Manager: This shall be a lightweight process that needs to run on the machine where you want to be able to execute tasks. When a job is told to execute, tasks are executed by invoking a call on this Command Manager.

This project is recommended for those interested in ’s Component technologies. In depth understanding of COM and ActiveX programming is required. For such tutorials and references see MSDN.