A process class is an object that can be assigned to a job. It has two functions:
- to limit the number of processes that can start in parallel
- to run the job on a JobScheduler Agent
Limitation of simultaneously executed jobs
For example: you have two jobs which execute some database transactions.
The job setting allows each job to start 10 times in parallel.
<?xml version="1.0" encoding="ISO-8859-1"?> <job tasks="10"> <script ... /> </job>
You want to make sure that these jobs can only open 10 database connection at the same time.
For now it is possible that they open 20 connections at the same time.
The solution is the process class object.
Create a process class with Max Processes = 10 ...
... then a file database.process_class.xml is created in the live folder.
<?xml version="1.0" encoding="ISO-8859-1"?> <process_class max_processes="10"/>
Assign it to both jobs:
<?xml version="1.0" encoding="ISO-8859-1"?> <job tasks="10" process_class="database"> <script language="shell"> <![CDATA[ echo ...some database transaction ]]> </script> <run_time /> </job>
If job1 is started for e.g. 8 times and job2 for 2 times then a further start of job1 or job2 is added to the Task Queue
and waits until one of the running tasks (8 x job1, 2 x job2) terminated.
Predefined process classes in ./config/scheduler.xml
If you open the file ./config/scheduler.xml then you will see three process classes.
<process_classes> <process_class max_processes="30"/> <process_class max_processes="10" name="single"/> <process_class max_processes="10" name="multi"/> </process_classes>
The process classes single and multi are of historical nature. In the past we had jobs in the JobScheduler setup that used these process classes. For compatibility reasons these are still included.
- The nameless process class is used for all jobs that are not assigned a different process class.
- Therefore, all jobs that wouldn't use a different process class can run simultaneously in max. 30 tasks.
- You could increase this value if required.
Start jobs for a JobScheduler Agent
You can run a job in a JobScheduler Agent. For this functionality you have to configure a process class.
See How to configure a JobScheduler Master and Agent to work together for more information.