IP Library Granted Patent US 9,081,616
Granted Patent B2
US 9,081,616 · App. 12/475,045 · Granted Jul 14, 2015

System and method for adjusting a number of processing modules based on processing load

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 9,081,616
App. No.
12/475,045
Granted
Jul 14, 2015
Kind
B2
Abstract

Systems and methods improve the equitable distribution the processing capacity of a computing device processing work items retrieved from multiple queues in a workflow system. A retrieval priority is determined for each of the plurality of queues and work items are retrieved from each of the multiple queues according to the retrieval priority. The retrieved work items are then stored in a central data structure. Multiple processing components process the work items stored in the central data structure. The number of processing components is selectively adjusted to maximize efficiency.

Claims (126)

1. A computer-readable non-transitory medium encoded with a workflow application comprising modules executable by a processor and configured to process a plurality of work items in a workflow, the workflow application comprising:

a queue storage module to receive a plurality of work items from a remote computer and to store each of the plurality of work items in one of a plurality of queues based on a state of each work item in the workflow;

a queue selection module to determine a retrieval priority for each of the plurality of queues and to retrieve at least one work item from each of the plurality of queues according to the retrieval priority for storage in a workflow data structure; and

an adaptive processing module to selectively adjust a number of processing modules each configured to process work items stored in the workflow data structure by:

activating at least one processing module when an actual processing load is greater than a maximum threshold load level; and

deactivating at least one processing module when the actual processing load is less than a minimum threshold load level,

wherein the maximum threshold load level is ninety percent (90%) of a maximum processing capacity and the minimum threshold load level is twenty-five percent (25%) of processing capacity.

2. The computer-readable medium of claim 1 wherein each of the plurality of work items comprise work item data, and wherein the queue selection module is configured to determine the retrieval priority for each of the plurality of queues as a function of the work item data.

3. The computer-readable medium of claim 2 wherein each work item comprises work item data selected from a group consisting of state data, queue location data, current action data, history data, and description data.

4. The computer-readable medium of claim 3 wherein:

the current action data for each work item identifies a corresponding current action selected from a group consisting of an inbound action, a within queue action, and an outbound action; and

each of the number of processing modules is configured to process one or more of work items stored in the workflow data structure by applying the corresponding current action to each of the one or more work items.

5. The computer-readable medium of claim 1 wherein the queue selection module is configured to determine the retrieval priority by:

calculating queue priority factors for each of the plurality of queues; and

weighting each of the queue priority factors for each of the plurality of queues to determine the retrieval priority.

6. The computer-readable medium of claim 5 wherein the queue priority factors for each of the plurality of queues comprises item counts, action costs, processing time data, and a last processing action time.

7. The computer-readable medium of claim 1 further comprising:

a memory comprising the minimum and the maximum threshold load levels; and

wherein the adaptive processing module is further configured to:

retrieve the minimum and maximum threshold load levels from the memory; and

monitor the actual processing load required to process the work items.

8. The computer-readable medium of claim 1 wherein:

the maximum threshold load level corresponds to a maximum allowable percentage of total processing capacity; and

the minimum threshold load level corresponds to a minimum allowable percentage of total processing capacity.

9. The computer-readable medium of claim 1 wherein the adaptive processing module is further configured to maintain a current number of processing modules to process the work items when the actual processing load is greater than the minimum threshold load level and less than the maximum threshold load level.

10. A system for processing work items in a workflow, the system comprising:

a plurality of queues each comprising a plurality of work items; and

a computing device comprising a workflow application comprising modules executable by the computing device and configured to process a plurality of work items in a workflow, the workflow application comprising:

a queue selection module to determine a retrieval priority for each of the plurality of queues and to retrieve at least one work item from each of the plurality of queues according to the retrieval priority for storage in a workflow data structure; and

an adaptive processing module to selectively adjust a number of processing modules each configured to process work items stored in the workflow data structure by:

activating at least one processing module when an actual processing load is greater than a maximum threshold load level; and

deactivating at least one processing module when the actual processing load is less than a minimum threshold load level, wherein the maximum threshold load level is ninety percent (90%) of a maximum processing capacity and the minimum threshold load level is a twenty-five percent (25%) of processing capacity.

11. The system of claim 10 wherein each of the plurality of work items comprise work item data, and wherein the queue selection module is configured to determine the retrieval priority for each of the plurality of queues as a function of the work item data.

12. The system of claim 10 wherein each work item comprises work item data selected from a group consisting of state data, queue location data, current action data, history data, and description data.

13. The system of claim 12 wherein:

the current action data for each work item identifies a corresponding current action selected from a group consisting of an inbound action, a within queue action, and an outbound action; and

each of the number of processing modules is configured to process one or more of work items stored in the workflow data structure by applying the corresponding current action to each of the one or more work items.

14. The system of claim 10 wherein the queue selection module is configured to determine the retrieval priority by:

calculating queue priority factors for each of the plurality of queues; and

weighting each of the queue priority factors for each of the plurality of queues to determine the retrieval priority.

15. The system of claim 14 wherein the queue priority factors for each of the plurality of queues comprises item counts, action costs, processing time data, and a last processing action time.

16. The system of claim 10 wherein the queue selection module is further configured to:

retrieve the at least one work item from each of the plurality of queues in a sequence according to the retrieval priority;

store the at least one work item retrieved from each of the plurality of queues in the workflow data structure according to the sequence; and

process work items stored in the workflow data structure according to a first in first out rule.

17. The system of claim 10 further comprising:

a memory comprising the minimum and the maximum threshold load level; and

wherein the adaptive processing module is further configured to:

retrieve the minimum and maximum threshold load levels from the memory; and

monitor the actual processing load required to process the work items.

18. The system of claim 10 wherein:

the maximum threshold load level corresponds to a maximum allowable percentage of total processing capacity; and

the minimum threshold load level corresponds to a minimum allowable percentage of total processing capacity.

19. The system of claim 10 wherein the adaptive processing module is further configured to maintain a current number of processing modules to process the work items when the actual processing load is greater than the minimum threshold load level and less than the maximum threshold load level.

20. A system for processing work items in a workflow, the system comprising:

a workflow data structure each comprising a plurality of work items; and

a computing device comprising a workflow application comprising modules executable by the computing device to process the plurality of work items, the workflow application comprising:

a plurality of processing modules each configured to process a different one of work items stored in the workflow data structure; and

an adaptive processing module to selectively adjust a number of the plurality of processing modules by:

activating at least one processing module when an actual processing load is greater than a maximum threshold load level; and

deactivating at least one processing module when the actual processing load is less than a minimum threshold load level, wherein the maximum threshold load level is ninety percent (90%) of a maximum processing capacity and the minimum threshold load level is twenty-five percent (25%) of processing capacity.

21. The system of claim 20 further comprising:

a memory comprising the minimum and the maximum threshold load level; and

wherein the adaptive processing module is further configured to:

retrieve the minimum and the maximum threshold load levelsfrom the memory; and

monitor the actual processing load required to process the work items.

22. The system of claim 20 wherein:

the maximum threshold load level corresponds to a maximum allowable percentage of total processing capacity; and

the minimum threshold load level corresponds to a minimum allowable percentage of total processing capacity.

23. The system of claim 20 wherein the adaptive processing module is further configured to maintain a current number of processing modules to process the work items when the actual processing load is greater than the minimum threshold load level and less than the maximum threshold load level.

24. A method for processing a plurality of work items in a workflow at a processor, the method comprising:

receiving a plurality of work items at the processor;

storing each of the plurality of work items in one of a plurality of queues based on a state of each work item in the workflow;

determining a retrieval priority for each of the plurality of queues at the processor;

retrieving at least one work item from each of the plurality of queues according to the retrieval priority for storage in a workflow data structure; and

selectively adjusting, by an adaptive processing module, an amount of processing capacity of the processor to process the work items stored in the workflow data structure by:

increasing the amount of processing capacity by increasing an amount of processing modules to a higher number when an actual processing load is greater than a maximum threshold load level; and

decreasing the amount of processing capacity by decreasing the amount of processing modules to a lower number when the actual processing load is less than a minimum threshold load level,

wherein the maximum threshold load level is ninety percent (90%) of a maximum processing capacity and the minimum threshold load level is twenty-five percent (25%) of processing capacity.

25. The method of claim 24 wherein each of the plurality of work items comprise work item data, and the method further comprises determining the retrieval priority for each of the plurality of queues as a function of the work item data.

26. The method of claim 25 wherein each work item comprises work item data selected from a group consisting of state data, queue location data, current action data, history data, and description data.

27. The method of claim 26 wherein:

the current action data for each work item identifies a corresponding current action selected from a group consisting of an inbound action, a within queue action, and an outbound action; and

the method further comprising processing one or more of work items stored in the workflow data structure by applying the corresponding current action to each of the one or more work items.

28. The method of claim 24 further comprising:

calculating queue priority factors for each of the plurality of queues at the processor; and

weighting each of the queue priority factors for each of the plurality of queues to determine the retrieval priority at the processor.

29. The method of claim 28 wherein the queue priority factors for each of the plurality of queues comprises item counts, action costs, processing time data, and a last processing action time.

30. The method of claim 24 further comprising:

retrieving the minimum and the maximum threshold load level from a memory at the processor; and

the method further comprises:

monitoring the actual processing load required to process the work items at the processor.

31. The method of claim 24 further comprising maintaining a current amount of processing capacity to process the work items when the actual processing load is greater than the minimum threshold load level and less than the maximum threshold load level.

32. A computer-readable non-transitory medium encoded with a workflow application comprising modules executable by a processor and configured to process a plurality of work items in a workflow, the workflow application comprising:

a queue storage module to receive a plurality of work items from a remote computer and to store each of the plurality of work items in one of a plurality of queues based on a state of each work item in the workflow;

a queue selection module to determine a retrieval priority for each of the plurality of queues and to retrieve at least one work item from each of the plurality of queues according to the retrieval priority for storage in a workflow data structure;

a set of processing modules to process the work items stored in the workflow data structure, wherein an initial number of the processing modules are used to process the work items; and

an adaptive processing module to:

retrieve threshold load level data from a memory;

monitor an actual processing load required to process the work items;

compare the actual processing load to the threshold load level data;

increase the initial number of processing modules to a higher number when the actual processing load is greater than the maximum threshold load level data; and

decrease the initial number of processing modules to a lower number when the actual processing load is less than the minimum threshold load level data, wherein the maximum threshold load level data is ninety percent (90%) of a maximum processing capacity of the processing modules and the minimum threshold load level data is twenty-five percent (25%) of processing capacity of the processing modules.

33. A system for processing work items in a workflow, the system comprising:

a plurality of queues each comprising a plurality of work items; and

a computing device comprising a workflow application comprising modules executable by the computing device and configured to process a plurality of work items in a workflow, the workflow application comprising:

a queue selection module to determine a retrieval priority for each of the plurality of queues and to retrieve at least one work item from each of the plurality of queues according to the retrieval priority for storage in a workflow data structure;

a set of processing modules to process the work items stored in the workflow data structure, wherein an initial number of the processing modules are used to process the work items; and

an adaptive processing module to:

retrieve threshold load level data from a memory;

monitor an actual processing load required to process the work items;

compare the actual processing load to the threshold load level data;

increase the initial number of processing modules to a higher number of processing modules when the actual processing load is greater than the maximum threshold load level data; and

decrease the initial number of processing modules to a lower number of processing modules when the actual processing load is less than the minimum threshold load level data, wherein the maximum threshold load level data is ninety percent (90%) of a maximum processing capacity of the processing modules and the minimum threshold load level data is twenty-five percent (25%) of processing capacity of the processing modules.

34. A method for processing a plurality of work items in a workflow at a processor, the method comprising:

receiving a plurality of work items at the processor;

storing each of the plurality of work items in one of a plurality of queues based on a state of each work item in the workflow;

calculating queue priority factors for each of the plurality of queues at the processor;

weighting each of the queue priority factors for each of the plurality of queues to determine a retrieval priority at the processor;

retrieving at least one work item from each of the plurality of queues according to the retrieval priority for storage in a workflow data structure;

processing the work items stored in the workflow data structure at an initial number of processing modules;

retrieving threshold load level data from a memory;

monitoring an actual processing load required to process the work items;

comparing the actual processing load to the threshold load level data;

increasing, by an adaptive processing module, the initial number of processing modules to a higher number of processing modules when the actual processing load is greater than the maximum threshold load level data; and

decreasing, by the adaptive processing module, the initial number of processing modules to a lower number of processing modules when the actual processing load is less than the minimum threshold load level data, wherein the maximum threshold load level data is ninety percent (90%) of a maximum processing capacity of the processing modules and the minimum threshold load level data is twenty-five percent (25%) of processing capacity of the processing modules.

Assignments (10)
SECURITY INTEREST Recorded Jan 17, 2024
From: HYLAND SWITZERLAND SARL
To: GOLUB CAPITAL MARKETS LLC, AS COLLATERAL AGENT
Reel/Frame 066339/0304 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 045430/0405 Recorded Sep 24, 2023
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, A BRANCH OF CREDIT SUISSE
To: KOFAX INTERNATIONAL SWITZERLAND SARL
Reel/Frame 065018/0421 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 045430/0593 Recorded Sep 24, 2023
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, A BRANCH OF CREDIT SUISSE
To: KOFAX INTERNATIONAL SWITZERLAND SARL
Reel/Frame 065020/0806 →
CHANGE OF NAME Recorded Feb 20, 2019
From: KOFAX INTERNATIONAL SWITZERLAND SÀRL
To: HYLAND SWITZERLAND SÀRL
Reel/Frame 048389/0380 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT SUPPLEMENT (FIRST LIEN) Recorded Feb 23, 2018
From: KOFAX INTERNATIONAL SWITZERLAND SARL
To: CREDIT SUISSE
Reel/Frame 045430/0405 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT SUPPLEMENT (SECOND LIEN) Recorded Feb 23, 2018
From: KOFAX INTERNATIONAL SWITZERLAND SARL
To: CREDIT SUISSE
Reel/Frame 045430/0593 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 20, 2017
From: LEXMARK INTERNATIONAL TECHNOLOGY SARL
To: KOFAX INTERNATIONAL SWITZERLAND SARL
Reel/Frame 042919/0841 →
ENTITY CONVERSION Recorded Feb 11, 2016
From: LEXMARK INTERNATIONAL TECHNOLOGY S.A.
To: LEXMARK INTERNATIONAL TECHNOLOGY SARL
Reel/Frame 037793/0300 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2012
From: PERCEPTIVE SOFTWARE, INC.
To: LEXMARK INTERNATIONAL TECHNOLOGY SA
Reel/Frame 028488/0704 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2009
From: YENGULAP, SERHAN; KINNEY, STEVE REED; ANDERSON, BRIAN G.; COONS, SCOTT T.R.; KELLEY, DAVID E.; KHAN, HUMAYUN H.
To: PERCEPTIVE SOFTWARE, INC.
Reel/Frame 022774/0372 →