Automated Job Scheduler Basics
From Scheduling Tasks to Automating Jobs
Scheduling tasks in organizations is a common need. Grouping these tasks into cohesive units called 'jobs' and then automating these jobs allows IT staff to manage thousands of individual tasks with higher levels of quality, reliability, and productivity. Automating job scheduling reduces manual interventions and unnecessary delays while increasing the efficiency and utilization of computing resources.
As the IT staff workload inevitably increases the justification for automated job scheduling becomes increasingly apparent.
Job scheduling has been around since the early days of computing. The Unix cron command has always been a popular job scheduling solution. It has a powerful facility for determining when Unix commands or scripts should execute. Cron is used typically to automate system maintenance or administration—though its general-purpose nature is utilized in a wide variety of tasks. Windows machines have the Windows Task Scheduler available which provides a subset of cron time scheduling and a set of Windows specific capabilities.
Over the years many commercial and open source job scheduler offerings became available. The list of vendors is too large to mention here, but solutions can generally be filtered by their supported platforms such as mainframe, Linux, and Windows. There also exists offerings that schedule jobs across platforms. Other distinctions can be found in their support for graphical user interfaces, reports, data analytics, workload distribution, and of course, price.
Characterizing Modern Job Schedulers
Most modern schedulers provide capabilities that include the following:
- Multiple commands per job
- Console monitor to run jobs in restricted state
- Check maximum run time for each job
- Interface directly to a message-based third-party paging system or issue tracking system
- Provisions for full online documentation of each job
- Help text on all displays
Kinds of Scheduling
Automated schedulers provide various schemes to schedule jobs and their underlying steps. Support for these schemes vary by scheduler. Some schemes to consider include (this list is by no means exhaustive):
- Time such as a specific time or day. A business or holiday calendar may impact when a timed job is allowed to start
- Job priority
- Resource availability (e.g., CPU, memory, disk, network bandwidth)
- Number of simultaneous jobs or daily allowed jobs for a user or type of job. Sometimes referred to as concurrency constraints
- Estimated execution time of a job
- Elapsed execution time of a job
- Availability of peripheral devices such as printers
- Occurrence of prescribed events such as a database query returning a specific result or a mail from a specific sender being received
- Job dependency such as a job or particular step having completed or failed
- File dependency as when a file arrives
- Operator prompt dependency to allow a job to continue
From Descriptions to Definitions
Transitioning from hand-drawn flowcharts and manual procedures to an automated job scheduler's definition takes time and effort. The degree of effort varies depending on the complexity of the process being automated and the skills of the IT staff performing the transition. Migration utilities and converter routines may import some information but seldom deliver a complete representation. Additional work and definition is generally required. During this definition phase using existing process diagrams (be they flowcharts, UML diagrams, a Business Process Modeling Notation (BPMN) graphic or other sequence flows) can be instructive. Consider the following for each job.
Ensure that the above information is captured and documented in a form usable for your translating the information to your automated job scheduler definitions. Using a spreadsheet or standardized Word template are frequent medium for this information capture.
From Existing Process Definitions to Automated Job Scheduler Definitions
Automated job schedulers present facilities for designing and defining jobs. The vocabulary of the job scheduler may not necessarily map to the vocabulary used to describe existing processes since the job scheduler may introduce new concepts, or have a different name for existing concepts, or provide enhanced features not understood or used in the existing scheduling environment. Consider preparing a mapping of existing to new terms as follows using a simple table: