Multithreading
PowerSchool Workflow is multithreaded, meaning that the application can process multiple tasks and instances simultaneously. The maximum allowed threads is 20. 10 is the default setting. Five of the total threads have dedicated tasks that keep Workflow moving to process the ready instances. These five threads have specific tasks to perform for each job types listed below:
Type | Task |
---|---|
Scheduled Models | Check if any scheduled model is ready for processing at this time. If so, send it to the processing queue. |
Clear CDD Reports | Check if there are any CDD reports that are done/finished. If so, send it to the processing queue to finish the activity. |
Workflow Queue Records | Check if there are any new records in the Workflow queue. If so, create the instance and send it to the processing queue. |
Emails | Check if any email response email message is present in the email inbox. If so, send it to the processing queue for further processing. |
Check Ready Instances | Check if there are any pending instances ready for further processing. If so, send it to the processing queue for further processing. |
The processing queue is just an internal list of instances/records that the remaining five [Default, 15 MAX] threads will work on. Each of the threads will pick a record from the list/queue and process it to its end. The thread will then return to pick the next record (if any) to process. This cycle will continue until there are no more records left in the processing queue. Then the thread will sleep for the set interval. After waking up, each of these threads will check if there are any records in the processing queue. If none, the thread will go back to sleep.
As each thread takes different amounts of time to finish its assigned [fixed or dynamic] task, they will be done with their task at different times and will sleep at different times. In other words, not all threads are sleeping or working at the same time.