# US 12,112,203 B2 · Server-based workflow management using priorities

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,112,203 B2
- Document ID: US12112203B2
- Status: Granted
- Kind: B2
- Application number: 17/531,705
- Filed: 2021-11-19
- Published: 2022-05-26
- Granted: 2024-10-08
- Earliest claimed: 2020-11-20
- Applicants: Okta, Inc.
- Inventors: Brian Kenneth Zuzga; Alec Embke; Ryan Oblak; Daniel Keller; Virginia Chiu
- Web page: https://patentgrep.com/patent/US12112203B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system prioritizes workflows based on priority levels and calculates an amount of resource consumption associated with the workflows. Each client starts a predefined time period with a certain amount of credits that indicate a degree of resource consumption. Workflows may be run with high priorities using credits. Workflows that are run with higher priorities are scheduled to run before workflows with lower priorities. A degree of resource consumption for running a workflow may be calculated based on resources consumed by the system, such as central processing unit (CPU), memory storage, network usage and elapsed time. The degree of resource consumption for running a workflow may be calculated and converted to an amount of credits and the respective amount of credits may be deducted from a credit balance associated with the client's account. The degree of resource consumption associated with a workflow may be estimated before the workflow starts running.

## Claims

### Claim 1

A method for prioritizing workflows comprising:
receiving a first request from a first user to run a first workflow that is associated with a first task, the first request associated with a first priority level that is based on a first time sensitivity characteristic of the first task associated with the first request, wherein the first time sensitivity characteristic is based on a first goal of the first task associated with the first request;
receiving a second request from a second user to run a second workflow that is associated with a second task, the second request associated with a second priority level that is higher than the first priority level, wherein:
the second priority level is based on a second time sensitivity characteristic of the second request, the second time sensitivity characteristic being based on a second goal of the second task associated with the second request, and
the second request is associated with the second priority level that is higher than the first priority level based on a comparison of the first time sensitivity characteristic and the second time sensitivity characteristic;
identifying a set of computing resources consumed by the second workflow, the set of computing resources comprising one or more of CPU (Central Processing Unit) usage, memory, network capacity, or computation time;
estimating a degree of resource consumption for the second workflow based on identifying the set of computing resources; and
responsive to the second priority level being greater than the first priority level:
running the second workflow before running the first workflow; and
reducing a resource balance associated with the second user according to the estimated degree of resource consumption.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
responsive to detecting that the second request is a synchronous request based on a function call invoked by the second request, determining to set the second priority level for the second workflow to a high priority level.

### Claim 3 (depends on 2)

The method of claim 2, wherein a determined priority level for the second priority level is adjustable by the second user.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
identifying a state of the second workflow that indicates whether the second task is ready to run; and
executing the second workflow responsive to determining that the state of the second workflow is ready.

### Claim 5 (depends on 1)

The method of claim 1, wherein the first user is associated with an account of credit balance, the method further comprising:
identifying an elapse of a set period of time; and
adding a predetermined amount of credits to the account of credit balance associated with the first user.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
responsive to detecting that the resource balance of the second user is insufficient for the second task, determining to set the second priority level that is associated with the second request to a low priority.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
responsive to detecting that the resource balance of the second user is insufficient for the second task, determining to halt executing the second task until the resource balance has sufficient balance.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
training a machine learning model using a training dataset including data associated with historical executed workflows; and
predicting, based on training the machine learning model, the degree of resource consumption associated with the second task of the second workflow before the second task starts to run.

### Claim 9 (depends on 1)

The method of claim 1, wherein the second task is placed on a high priority queue and the first task is placed on a low priority queue.

### Claim 10 (depends on 9)

The method of claim 9, wherein tasks in the high priority queue are executed by a first set of engines and tasks in the low priority queue are executed by a second set of engines different from the first set of engines.

### Claim 11

A non-transitory computer-readable storage medium storing instructions for one or more computer programs executable by one or more computer processors, the instructions comprising:
receiving a first request from a first user to run a first workflow that is associated with a first task, the first request associated with a first priority level that is based on a first time sensitivity characteristic of the first task associated with the first request, wherein the first time sensitivity characteristic is based on a first goal of the first task associated with the first request;
receiving a second request from a second user to run a second workflow that is associated with a second task, the second request associated with a second priority level that is higher than the first priority level, wherein:
the second priority level is based on a second time sensitivity characteristic of the second request, the second time sensitivity characteristic being based on a second goal of the second task associated with the second request, and
the second request is associated with the second priority level that is higher than the first priority level based on a comparison of the first time sensitivity characteristic and the second time sensitivity characteristic;
identifying a set of computing resources consumed by the second workflow, the set of computing resources comprising one or more of CPU (Central Processing Unit) usage, memory, network or elapsed time;
estimating a degree of resource consumption for the second workflow based on identifying the set of computing resources; and
responsive to the second priority level being greater than the first priority level:
running the second workflow before running the first workflow; and
reducing a resource balance associated with the second user according to the estimated degree of resource consumption.

### Claim 12 (depends on 11)

The non-transitory computer-readable storage medium of claim 11, wherein the instructions further comprises:
responsive to detecting that the second request is a synchronous request based on a function call invoked by the second request, determining to set the second priority level for the second workflow to high.

### Claim 13 (depends on 12)

The non-transitory computer-readable storage medium of claim 12, wherein a determined priority for the second priority level is adjustable by the second user.

### Claim 14 (depends on 11)

The non-transitory computer-readable storage medium of claim 11, wherein the instructions comprises:
identifying a state of the second workflow that indicates whether the second task is ready to run; and
executing the second workflow responsive to determining that the state of the second workflow is ready.

### Claim 15 (depends on 11)

The non-transitory computer-readable storage medium of claim 11, wherein the first user is associated with an account of credit balance and the instructions further comprises:
identifying an elapse of a set period of time; and
adding a predetermined amount of credits to the account of credit balance associated with the first user.

### Claim 16 (depends on 11)

The non-transitory computer-readable storage medium of claim 11, wherein the instructions further comprises:
responsive to detecting that the resource balance of the second user is insufficient for the second task, determining to set the second priority level that is associated with the second request to a low priority.

### Claim 17 (depends on 11)

The non-transitory computer-readable storage medium of claim 11, wherein the instructions further comprises:
responsive to detecting that the resource balance of the second user is insufficient for the second task, determining to halt executing the second task until the resource balance has sufficient balance.

### Claim 18 (depends on 11)

The non-transitory computer-readable storage medium of claim 11, wherein the instructions further comprises:
training a machine learning model using a training dataset including data associated with historical executed workflows; and
predicting, based on training the machine learning model, the degree of resource consumption associated with the second task of the second workflow before the second task starts to run.

### Claim 19 (depends on 11)

The non-transitory computer-readable storage medium of claim 11, wherein the second task is placed on a high priority queue and the first task is placed on a low priority queue.

### Claim 20 (depends on 19)

The non-transitory computer-readable storage medium of claim 19, wherein tasks in the high priority queue are executed by a first set of engines and tasks in the low priority queue are executed by a second set of engines different from the first set of engines.
