How can we configure a holiday setting for the JobScheduler?

Question:

We will be setting up jobs to be run everyday. We also need a mechanism to build in a holiday schedule for the entire year that is not lost on a weekend restart. So I need to configure JobScheduler not to run on say 10 specific days in a year. What is the best way to do this?

Answer:

Holidays can be configured at a global level for all jobs and per job. Dates configured at both levels can be persistent - i.e. they are not lost on restart as they are either saved in the scheduler.xml configuration file or the relevant run times can be configured in the editor web interface and stored in a database. Configuring holidays is supported by the graphical JobScheduler Object Editor, JOE. The configuration of holidays is described in detail in the articles:

The following examples illustrate how holidays can be configured at the XML level using any editor.

  • Holidays for all jobs
    Holiday configuration with the scheduler.xml configuration file
      <config>
          <holidays>
              <holiday date="2006-12-25"/>
              ...
              <holiday date="2006-12-26"/>
          </holidays>
          <jobs/>
          <job_chains/>
      </config>
  • Holidays for a specific job
    Holiday configuration with the run-time of a specific job
     <job>
        <run_time let_run="no">
            <period single_start = "08:00"/>
            <holidays>
                <holiday date="2006-06-19"/>
                ...
                <holiday date="2006-07-19"/>
            </holidays>
        </run_time>
      </job>
  • Holidays re-used by a number of jobs
    • A holiday configuration can be written to a specific XML file and includes just the <holidays> element and subsequent elements like this:
       

      Holiday configuration file
          <holidays>
              <holiday date="2006-06-19"/>
              ...
              <holiday date="2006-07-19"/>
        </holidays>
      
    • The above holiday configuration file is assumed to be available from the file /globals/company_holidays.xml and is referened like this from a job:
       

      Run-time configuration with reference to a global holidays file
       <job>
          <run_time let_run="no">
              <period single_start = "08:00"/>
              <holidays>
                  <include live_file="/globals/company_holidays.xml"/>
                  <include live_file="../customers/bank_holidays.xml"/>
              </holidays>
          </run_time>
        </job>
    • If the referenced holiday file is located in the live folder tree then it is referenced by use of the live_file attribute. 
      • Changes to a holiday file in the live folder tree are automatically detected and are applied by JobScheduler.
      • An absolute path to the holidays file is considered to start from the live folder.
      • A relative path can be used that start from the folder that contains the curent job.
    • If the referenced file is located outside of the live folder tree then the file attribute has to be used. Changes to a hoiday file outside of the live folder are not automatically detected and applied.