IP Library Granted Patent US 11,481,254
Granted Patent B2
US 11,481,254 · App. 17/120,992 · Granted Oct 25, 2022

Payroll data processing server

Inventors: Craig Nelson (Parsippany, NJ); Lakshmi Swetha Bedadala (Alpharetta, GA); Theodore Donald (Alpharetta, GA); Hong Wang (Alpharetta, GA); Uthayakumar Narayanasamy (Alpharetta, GA); Frederick Platten (Alpharetta, GA); Girija Thilak (Alpharetta, GA); Rajasekhar Dara (Alpharetta, GA); Adithya Parvatam (Alpharetta, GA); Anuradha Verma (Alpharetta, GA); Ananth Sudini (Alpharetta, GA)
Assignee: ADP, Inc.
G06F9/50G06F9/455G06F9/45533G06F9/45558G06F9/48G06F9/485G06F9/4806G06F9/4843G06F9/4881G06F9/5005G06F9/5011G06F9/5016G06F9/5022G06F9/5027G06F9/5061G06F9/5077G06F2009/4557G06F2009/45562G06F2009/45575
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,481,254
App. No.
17/120,992
Granted
Oct 25, 2022
Kind
B2
Abstract

Managing batched jobs is provided. The method comprises receiving a job batch request from a client for a number of processing jobs. Each job is registered, and jobs that are ready for execution at a specified time are collected. For each collected job an instance of the job is locked to prevent duplicate execution. The locked jobs are queued, and a container is created for each job in the queue. A method of execution is determined for each job in the queue, and each job is then executed according the method determined for that job. Job events for each executing job are logged, a determination if a job was completed successfully is made according to its respective job events. A job status is updated for each completed job. The container of each completed job is then destroyed, and each completed job is unlocked.

Claims (139)

1. A computer-implemented method of managing batched jobs, the method comprising:

using a number of processors to perform the steps of:

receiving a job batch request from a client for a number of processing jobs;

registering each of the jobs;

updating job's invocation frequency data of each of the jobs by storing invocation frequency types of the jobs;

updating schedule and invoking type details for each of the jobs according to each job's invocation frequency type;

assigning a list of pre-job execution tasks and a list of post-job execution tasks for each of the jobs;

collecting jobs from the number of processing jobs that are ready for execution at a specified time;

for each job from the collected jobs, locking an instance of the job to create a locked job to prevent duplicate execution;

queuing the locked jobs;

creating a container for each job in the queue;

determining a method of execution for each job in the queue;

executing each job in the queue according to the method of execution determined for that job;

logging a number of job events for each executing job;

determining if a job was completed successfully according to its respective job events;

updating a job status for each completed job;

destroying the container of each completed job; and

unlocking each completed job.

2. The method of claim 1 , wherein each collected job is:

an on-demand job; or

a scheduled job.

3. The method of claim 1 , wherein the method of execution for each collected job comprises:

a queue-based job executed on the current server instance;

a remote job controlled via a uniform resource locator; or

a dynamic job executed in a container or a virtual machine instance.

4. The method of claim 1 , wherein execution of each collected job further comprises:

executing a number of pre-job tasks that precede execution of the job, wherein the number of pre-job tasks are from the list of pre-job execution tasks;

transmitting a number of notification messages to a predefined list of recipients; and

logging a pre-job task status event for each pre-job task executed.

5. The method of claim 1 , wherein each executed job is:

a parent job; or

a child job.

6. The method of claim 1 , wherein execution of each job further comprises:

executing a number of post-job tasks that succeed execution of the job, wherein the number of post-job tasks are from the list of pre-job execution tasks;

transmitting a number of notification messages to a predefined list of recipients; and

logging a post-job task status event for each post-job task executed.

7. The method of claim 4 , wherein each pre-job task of the number of pre-job tasks comprises:

a parallel task; or

a sequential task.

8. The method of claim 6 , wherein each post-job task of the number of post-job tasks comprises:

a parallel task; or

a sequential task.

9. The method of claim 1 , wherein the jobs are stored in:

an internal database; or

an external database.

10. The method of claim 1 , further comprising assigning a priority level to each collected job.

11. A system for managing batched jobs, the system comprising:

a storage device configured to store program instructions; and

one or more processors operably connected to the storage device and configured to execute the program instructions to cause the system to:

receive a job batch request from a client for a number of processing jobs;

register each of the jobs;

update job's invocation frequency data of each of the jobs by storing invocation frequency types of the jobs;

update schedule and invoking type details for each of the jobs according to each job's invocation frequency type;

assign a list of pre-job execution tasks and a list of post-job execution tasks for each of the jobs;

collect jobs from the number of processing jobs that are ready for execution at a specified time;

for each job from the collected jobs, lock an instance of the job to create a locked job to prevent duplicate execution;

queue the locked jobs;

create a container for each job in the queue;

determine a method of execution for each job in the queue;

execute each job in the queue according to the method of execution determined for that job;

log a number of job events for each executing job;

determine if a job was completed successfully according to its respective job events;

update a job status for each completed job;

destroy the container of each completed job; and

unlock each completed job.

12. The system of claim 11 , wherein each collected job is:

an on-demand job; or

a scheduled job.

13. The system of claim 11 , wherein the method of execution for each collected job comprises:

a queue-based job executed on the current server instance;

a remote job controlled via a uniform resource locator; or

a dynamic job executed in a container or a virtual machine instance.

14. The system of claim 11 , wherein execution of each collected job further comprises:

executing a number of pre-job tasks that precede execution of the job, wherein the number of pre-job tasks are from the list of pre-job execution tasks;

transmitting a number of notification messages to a predefined list of recipients; and

logging a pre-job task status event for each pre-job task executed.

15. The system of claim 11 , wherein each executed job is:

a parent job; or

a child job.

16. The system of claim 11 , wherein execution of each job further comprises:

executing a number of post-job tasks that succeed execution of the job from the list of post-job execution tasks;

transmitting a number of notification messages to a predefined list of recipients; and

logging a post-job task status event for each post-job task executed.

17. The system of claim 14 , wherein each pre-job task of the number of pre-job tasks comprises:

a parallel task; or

a sequential task.

18. The system of claim 16 , wherein each post-job task of the number of post-job tasks comprises:

a parallel task; or

a sequential task.

19. The system of claim 11 , wherein the jobs are stored in:

an internal database; or

an external database.

20. The system of claim 11 , wherein the processors further execute instructions to assign a priority level to each collected job.

21. A computer program product for managing batched jobs, the computer program product comprising:

a computer-readable storage medium having program instructions embodied thereon to perform the steps of:

receiving a job batch request from a client for a number of processing jobs;

registering each of the jobs;

updating job's invocation frequency data of each of the jobs by storing invocation frequency types of the jobs;

updating schedule and invoking type details for each of the jobs according to each job's invocation frequency type;

assigning a list of pre-job execution tasks and a list of post-job execution tasks for each of the jobs;

collecting jobs from the number of processing jobs that are ready for execution at a specified time;

for each job from the collected jobs, locking an instance of the job to create a locked job to prevent duplicate execution;

queuing the locked jobs;

creating a container for each job in the queue;

determining a method of execution for each job in the queue;

executing each job in the queue according to the method of execution determined for that job;

logging a number of job events for each executing job;

determining if a job was completed successfully according to its respective job events;

updating a job status for each completed job;

destroying the container of each completed job; and

unlocking each completed job.

22. The computer program product of claim 21 , wherein each collected job is:

an on-demand job; or

a scheduled job.

23. The computer program product of claim 21 , wherein the method of execution for each collected job comprises:

a queue-based job executed on the current server instance;

a remote job controlled via a uniform resource locator; or

a dynamic job executed in a container or a virtual machine instance.

24. The computer program product of claim 21 , wherein execution of each collected job further comprises instructions for:

executing a number of pre-job tasks that precede execution of the job from the list of pre-job execution tasks;

transmitting a number of notification messages to a predefined list of recipients; and

logging a pre-job task status event for each pre-job task executed.

25. The computer program product of claim 21 , wherein each executed job is:

a parent job; or

a child job.

26. The computer program product of claim 21 , wherein execution of each job further comprises instructions for:

executing a number of post-job tasks that succeed execution of the job from the list of post-job execution tasks;

transmitting a number of notification messages to a predefined list of recipients; and

logging a post-job task status event for each post-job task executed.

27. The computer program product of claim 24 , wherein each pre-job task of the number of pre-job tasks comprises:

a parallel task; or

a sequential task.

28. The computer program product of claim 26 , wherein each post-job task of the number of post-job tasks comprises:

a parallel task; or

a sequential task.

29. The computer program product of claim 21 , wherein the jobs are stored in:

an internal database; or

an external database.

30. The computer program product of claim 21 , further comprising instructions assigning a priority level to each collected job.

Assignments (2)
CHANGE OF NAME Recorded Feb 4, 2022
From: ADP, LLC
To: ADP, INC.
Reel/Frame 058959/0729 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 14, 2020
From: NELSON, CRAIG; BEDADALA, LAKSHMI SWETHA; DONALD, THEODORE; WANG, HONG; NARAYANASAMY, UTHAYAKUMAR; PLATTEN, FREDERICK; THILAK, GIRIJA; DARA, RAJASEKHAR; PARVATAM, ADITHYA; VERMA, ANURADHA; SUDINI, ANANTH
To: ADP, LLC
Reel/Frame 054749/0305 →