IP Library Granted Patent US 11,651,312
Granted Patent B2
US 11,651,312 · App. 17/163,283 · Granted May 16, 2023

Combining batch and queueable technologies in a platform for large volume parallel processing

Inventor: Lee Francis Storey (Harrogate, GB)
Assignee: FinancialForce.com, Inc.
G06Q10/06316H04L67/10
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,651,312
App. No.
17/163,283
Granted
May 16, 2023
Kind
B2
Abstract

Disclosed embodiments include a method for combining a BATCH application programming interface (API) and a QUEUEABLE API on a SALESFORCE platform to process records. The method can include accessing a programming environment associated with an add-on application for a SALESFORCE platform, obtaining records via the add-on application to be processed on the SALESFORCE platform in accordance with a job type, calling a BATCH API to process the records by batching the records to create job records, and calling a QUEUEABLE API to process the job records in QUEUEABLES including parallel QUEUEABLES such that at least some job records included in the parallel QUEUEABLES are processed in parallel in accordance with the job type.

Claims (62)

1. A computer implemented method configured to implement a BATCH application programming interface, API, and a QUEUEABLE API on an application development platform to process a plurality of records, the method comprising:

accessing a programming environment associated with an add-on application for an application development platform hosted on a cloud-based computing architecture;

obtaining a plurality of records via the add-on application to be processed on the application development platform in accordance with a job type;

executing an asynchronous process by calling a BATCH API on the application development platform to process the plurality of records by batching the plurality of records to create a plurality of job records by generating a job table to process the plurality of records, the job table being populated with a record entry and a unique identifier associated with each of the plurality of records, the unique identifier comprising a string value that is different than another string value associated with another unique identifier; and

calling a QUEUEABLE API to asynchronously process the plurality of job records retrieved from the job table in a plurality of QUEUEABLES including a plurality of parallel QUEUEABLES, including executing an enqueuer function configured to allocate a scope size to each of the plurality of QUEUEABLES, the scope size being dynamically determined by processing each of the plurality of records from a list and based on an optimization determined by the job type, such that at least some job records included in the plurality of parallel QUEUEABLES are processed in parallel in accordance with the job type, each of the plurality of job records being processed according to a job type identifier included in the record entry of each of the plurality of records.

2. The method of claim 1 , wherein the plurality of QUEUEABLES are arranged in a chain such that a first plurality of the plurality of QUEUEABLES start processing job records in response to a second plurality of the plurality of QUEUEABLES completing processing of job records.

3. The method of claim 2 , wherein the first plurality of the plurality of QUEUEABLES comprises the plurality of parallel QUEUEABLES and the second plurality comprises another plurality of parallel QUEUEABLES such that at least some records included in the second plurality of the plurality of QUEUEABLES are processed in parallel.

4. The method of claim 1 , wherein batching the plurality of records comprises:

determining a scope size for each of the plurality of QUEUEABLES, the scope size including a number of the plurality of job records; and

allocating the job records to the plurality of QUEUEABLES in accordance with the scope size for each of the plurality of QUEUEABLES.

5. The method of claim 1 , wherein batching the plurality of records comprises:

generating a job table including a record entry for each job record, each record entry including a unique identifier.

6. The method of claim 5 , wherein the unique identifier is a record identifier that uniquely identifies a job record from other job records referred to in the job table.

7. The method of claim 5 , wherein each record entry comprises values for parameters including any of:

a call identifier representing a call that initiated the BATCH;

a QUEUEABLE identifier indicating a QUEUEABLE of the plurality of QUEUEABLES that was given the job record to process;

time information indicating a last time the job record was modified;

a job type identifier indicating how the job record should be processed; and

status information indicating a processing status of the job record.

8. The method of claim 5 , wherein each record entry comprises status information including a status of a job record, the method further comprising:

polling the job table for a status in a record entry of each job record;

initiating reprocessing of a job record in accordance with the status of the job record; and

reprocessing any job record in accordance with the job type.

9. The method of claim 5 , wherein each record entry comprises status information including a status of a job record including data representing one or more of:

a pending status indicating that a job record requires processing;

a completed status indicating that a job record does not require reprocessing;

an error status indicating that a job record requires reprocessing; and

a retry status indicating that a job record requires reprocessing.

10. The method of claim 9 , further comprising:

initiating reprocessing of a job record having a retry status until the job record is successfully processed in accordance with the job type or until reprocessing of the job record in accordance with the job type has been attempted a threshold number of times.

11. The method of claim 5 , wherein each record entry comprises status information including a status of a job record, the method further comprising:

monitoring a status information of a job record included in each record entry of the job table until the status information of each job record indicates that processing of the job record is completed or until reprocessing of the job record in accordance with the job type has been attempted a threshold number of times.

12. An apparatus configured to implement a BATCH application programming interface, API, and a QUEUEABLE API on an application development platform to process a plurality of records, comprising:

a processor; and

a memory that includes instructions which, when executed by the processor, cause the processor to:

access a programming environment associated with an add-on application for an application development platform hosted on a cloud-based computing architecture;

obtain a plurality of records via the add-on application to be processed on the application development platform in accordance with a job type;

execute an asynchronous process by calling a BATCH API on the application development platform to process the plurality of records by batching the plurality of records to create a plurality of job records by generating a job table to process the plurality of records, the job table being populated with a record entry and a unique identifier associated with each of the plurality of records, the unique identifier comprising a string value that is different than another string value associated with another unique identifier; and

call a QUEUEABLE API to asynchronously process the plurality of job records retrieved from the job table in a plurality of QUEUEABLES including a plurality of parallel QUEUEABLES, including executing an enqueuer function configured to allocate a scope size to each of the plurality of QUEUEABLES, the scope size being dynamically determined by processing each of the plurality of records from a list and based on an optimization determined by the job type, such that at least some job records included in the plurality of parallel QUEUEABLES are processed in parallel in accordance with the job type, each of the plurality of job records being processed according to a job type identifier included in the record entry of each of the plurality of records.

13. The apparatus of claim 12 , wherein the plurality of QUEUEABLES are arranged in a chain such that a first plurality of the plurality of QUEUEABLES start processing job records in response to a second plurality of the plurality of QUEUEABLES completing processing of job records.

14. The apparatus of claim 13 , wherein the first plurality of the plurality of QUEUEABLES comprises the plurality of parallel QUEUEABLES and the second plurality comprises another plurality of parallel QUEUEABLES such that at least some records included in the second plurality of the plurality of QUEUEABLES are processed in parallel.

15. The apparatus of claim 12 , wherein the processor is further configured to:

determine a scope size for each of the plurality of QUEUEABLES, the scope size including a number of the plurality of job records; and

allocate the job records to the plurality of QUEUEABLES in accordance with the scope size for each of the plurality of QUEUEABLES.

16. The apparatus of claim 12 , wherein the processor is further configured to:

generate a job table including a record entry for each job record, each record entry including a unique identifier.

17. The apparatus of claim 16 , wherein the unique identifier is a record identifier that uniquely identifies a job record from other job records referred to in the job table.

18. The apparatus of claim 16 , wherein each record entry comprises values for parameters including any of:

a call identifier representing a call that initiated the BATCH;

a QUEUEABLE identifier indicating a QUEUEABLE of the plurality of QUEUEABLES that was given the job record to process;

time information indicating a last time the job record was modified;

a job type identifier indicating how the job record should be processed; and

status information indicating a processing status of the job record.

19. The apparatus of claim 16 , wherein the processor is further configured to:

poll the job table for a status in a record entry of each job record;

initiate reprocessing of a job record in accordance with the status of the job record; and

reprocess any job record in accordance with the job type.

20. The apparatus of claim 16 , wherein each record entry comprises status information including a status of a job record including data representing one or more of:

a pending status indicating that a job record requires processing;

a completed status indicating that a job record does not require reprocessing;

an error status indicating that a job record requires reprocessing; and

a retry status indicating that a job record requires reprocessing.

Assignments (9)
CHANGE OF ADDRESS Recorded Sep 12, 2024
From: CERTINIA INC.
To: CERTINIA INC.
Reel/Frame 068948/0361 →
SECURITY INTEREST Recorded Aug 7, 2023
From: CERTINIA INC.
To: BLUE OWL CREDIT INCOME CORP., AS COLLATERAL AGENT
Reel/Frame 064510/0495 →
RELEASE OF SECURITY INTEREST IN UNITED STATES PATENTS Recorded Aug 4, 2023
From: KEYBANK NATIONAL ASSOCIATION, AS ADMINISTRATIVE AGENT
To: CERTINIA, INC.
Reel/Frame 064502/0117 →
CHANGE OF NAME Recorded Jun 20, 2023
From: FINANCIALFORCE.COM, INC.
To: CERTINIA INC.
Reel/Frame 064042/0206 →
CHANGE OF ADDRESS Recorded May 12, 2023
From: FINANCIALFORCE.COM, INC.
To: FINANCIALFORCE.COM, INC.
Reel/Frame 063633/0854 →
RELEASE OF SECURITY INTEREST Recorded Mar 24, 2022
From: OBSIDIAN AGENCY SERVICES, INC.
To: FINANCIALFORCE.COM, INC.
Reel/Frame 059389/0501 →
SECURITY INTEREST Recorded Feb 21, 2022
From: FINANCIALFORCE.COM, INC.
To: KEYBANK NATIONAL ASSOCIATION
Reel/Frame 059204/0323 →
SECURITY INTEREST Recorded Jul 15, 2021
From: FINANCIALFORCE.COM, INC.
To: OBSIDIAN AGENCY SERVICES, INC.
Reel/Frame 056872/0236 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 31, 2021
From: STOREY, LEE FRANCIS
To: FINANCIALFORCE.COM, INC.
Reel/Frame 055089/0316 →
Continuity (2)
Division 15190178 · Jun 23, 2016
Related Publication 20210224713A1 · Jul 22, 2021