IP Library Granted Patent US 12,743,294
Granted Patent B2
US 12,743,294 · App. 17/852,877 · Granted Sep 22, 2026

De-centralized workflow execution based on sequentially transferring control of an execution process among a plurality of virtual machines

Inventors: Vivian Qian Lee (Berkshire, GB); Lyudmil Valentinov Pelov (Hamburg, DE); Qiu Qin (Centreville, VA); Daren Race (Montara, CA)
Assignee: Oracle International Corporation
G06F9/45558
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 12,743,294
App. No.
17/852,877
Granted
Sep 22, 2026
Kind
B2
Abstract

Techniques for de-centralized execution of workflows are disclosed. A system executes a sequence of jobs in a workflow. Each job includes application code to perform a defined set of functions. Each job includes wrapper code at one or both ends of the application code. The system executes the sequence of jobs by iteratively spinning up a virtual machine, loading workflow data to be used by application code, executing the application code, and storing modified workflow data. The virtual machine executing one job triggers the next virtual machine to execute the next job in the workflow, without scheduling the next job by a centralized job scheduler. Upon spinning up the next virtual machine, a virtual machine executing a preceding job shuts itself down.

Claims (103)

1 . A non-transitory computer readable medium comprising instructions which, when executed by one or more hardware processors, causes performance of operations comprising:

iteratively executing a plurality of jobs by sequentially transferring control of an execution process among a plurality of virtual machines that respectively and sequentially execute the plurality of jobs at least by:

executing, by a first virtual machine corresponding to a first set of computing resources, application code of a first job of the plurality of jobs;

responsive to completing execution of the application code of the first job, executing, by the first virtual machine, post-application-code wrapper code attached to the application code to determine a second job of the plurality of jobs to be executed subsequent to the first job and a second set of computing resources for executing the second job by a second virtual machine, wherein the second virtual machine executes at least a portion of the second job with the second set of computing resources after the first virtual machine self-terminates;

transferring control of the execution process from the first virtual machine to the second virtual machine at least by:

initiating, by the first virtual machine, execution of the second virtual machine to execute the second job at least by:

requesting, by the first virtual machine from a resource manager, access to the second set of computing resources for the second virtual machine; and

initiating execution of the second virtual machine with access to the second set of computing resources for executing the second job; and

subsequent to initiating execution of the second virtual machine, self-terminating the first virtual machine at least by returning the first set of computing resources to a pool of available computing resources.

2 . The non-transitory computer readable medium of claim 1 , wherein iteratively executing the plurality of jobs by the plurality of virtual machines further comprises:

executing, by the second virtual machine, application code of the second job of the plurality of jobs;

subsequent to executing, by the second virtual machine, the application code of the second job:

determining, by the second virtual machine, a third job, of the plurality of jobs, to be executed subsequent to the second job based on an ordered sequence of the plurality of jobs specified in a metadata file; and

initiating, by the second virtual machine, execution of a third virtual machine to execute the third job; and

subsequent to initiating execution of the third virtual machine, self-terminating the second virtual machine.

3 . The non-transitory computer readable medium of claim 1 , wherein iteratively executing the plurality of jobs by the plurality of virtual machines further comprises:

executing, by the second virtual machine, application code of the second job of the plurality of jobs;

subsequent to executing, by the second virtual machine, the application code of the second job:

determining that no additional jobs are to be executed subsequent to the second job based on an ordered sequence of the plurality of jobs in a metadata file; and

self-terminating the second virtual machine without executing any additional virtual machines.

4 . The non-transitory computer readable medium of claim 1 , wherein the operations further comprise:

obtaining application code corresponding to a plurality of sets of operations associated with the plurality of jobs;

obtaining a metadata file comprising an ordered sequence of the plurality of jobs; and

generating job code corresponding to the plurality of jobs at least by attaching pre-application-code wrapper code and post-application-code wrapper code to a plurality of segments of the application code corresponding, respectively, to the plurality of jobs,

wherein the pre-application-code wrapper code specifies a location of stored workflow data to be used by the plurality of jobs, and

wherein the post-application-code wrapper code specifies the second job in the ordered sequence of the plurality of jobs.

5 . The non-transitory computer readable medium of claim 1 , wherein iteratively executing the plurality of jobs comprises:

prior to executing the application code of the first job, executing pre-application-code wrapper code,

wherein executing the pre-application-code wrapper code comprises obtaining workflow data from a shared storage shared by each of the plurality of jobs;

executing the application code of the first job using the workflow data; and

subsequent to executing the application code of the first job, executing the post-application-code wrapper code,

wherein executing the post-application-code wrapper code includes storing, in the shared storage, modified workflow data, based on modifying the workflow data by executing the application code of the first job.

6 . The non-transitory computer readable medium of claim 1 , wherein initiating, by the first virtual machine, execution of the second virtual machine to execute the second job comprises:

identifying resource requirements associated with the second job based on metadata in a metadata file;

determining that the resource requirements exceed a threshold value;

responsive to determining that the resource requirements exceed the threshold value:

requesting, from the resource manager, the second set of computing resources corresponding to a first portion of the resource requirements; and

requesting, from the resource manager, a third set of computing resources corresponding to a second portion of the resource requirements,

wherein a sum of the second set of computing resources and the third set of computing resources is at least equal to the resource requirements associated with the second job; and

responsive to receiving access to the second set of computing resources and the third set of computing resources:

initiating execution of the second virtual machine; and

initiating execution of a third virtual machine.

7 . The non-transitory computer readable medium of claim 6 , wherein execution of a first portion of the second job by the second virtual machine is performed simultaneously with execution of a second portion of the second job by the third virtual machine.

8 . The non-transitory computer readable medium of claim 1 , wherein a first type of a first system resource used by the first virtual machine is different from a second type of a second system resource used by the second virtual machine.

9 . The non-transitory computer readable medium of claim 1 , wherein the operations further comprise:

determining, by the first virtual machine, resource requirements for the second job; and

requesting, by the first virtual machine, allocation of a resource for the second job based on the resource requirements.

10 . The non-transitory computer readable medium of claim 1 , wherein iteratively executing the plurality of jobs by the plurality of virtual machines comprises:

executing, by the first virtual machine, a first portion of a first set of job code to obtain the application code of the first job; and

executing, by the first virtual machine, the application code of the first job to generate first workflow data of the first job.

11 . A method comprising:

iteratively executing a plurality of jobs by sequentially transferring control of an execution process among a plurality of virtual machines that respectively and sequentially execute the plurality of jobs at least by:

executing, by a first virtual machine corresponding to a first set of computing resources, application code of a first job of the plurality of jobs;

responsive to completing execution of the application code of the first job, executing, by the first virtual machine, post-application-code wrapper code attached to the application code to determine a second job of the plurality of jobs to be executed subsequent to the first job and a second set of computing resources for executing the second job by a second virtual machine, wherein the second virtual machine executes at least a portion of the second job with the second set of computing resources after the first virtual machine self-terminates;

transferring control of the execution process from the first virtual machine to the second virtual machine at least by:

initiating, by the first virtual machine, execution of the second virtual machine to execute the second job at least by:

requesting, by the first virtual machine from a resource manager, access to the second set of computing resources for the second virtual machine; and

initiating execution of the second virtual machine with access to the second set of computing resources for executing the second job; and

subsequent to initiating execution of the second virtual machine, self-terminating the first virtual machine at least by returning the first set of computing resources to a pool of available computing resources.

12 . The method of claim 11 , wherein iteratively executing the plurality of jobs by the plurality of virtual machines further comprises:

executing, by the second virtual machine, application code of the second job of the plurality of jobs;

subsequent to executing, by the second virtual machine, the application code of the second job:

determining, by the second virtual machine, a third job, of the plurality of jobs, to be executed subsequent to the second job based on an ordered sequence of the plurality of jobs specified in a metadata file; and

initiating, by the second virtual machine, execution of a third virtual machine to execute the third job; and

subsequent to initiating execution of the third virtual machine, self-terminating the second virtual machine.

13 . The method of claim 11 , wherein iteratively executing the plurality of jobs by the plurality of virtual machines further comprises:

executing, by the second virtual machine, application code of the second job of the plurality of jobs;

subsequent to executing, by the second virtual machine, the application code of the second job:

determining that no additional jobs are to be executed subsequent to the second job based on an ordered sequence of the plurality of jobs in a metadata file; and

self-terminating the second virtual machine without executing any additional virtual machines.

14 . The method of claim 11 , further comprising:

obtaining application code corresponding to a plurality of sets of operations associated with the plurality of jobs;

obtaining a metadata file comprising an ordered sequence of the plurality of jobs; and

generating job code corresponding to the plurality of jobs at least by attaching pre-application-code wrapper code and post-application-code wrapper code to a plurality of segments of the application code corresponding, respectively, to the plurality of jobs,

wherein the pre-application-code wrapper code specifies a location of stored workflow data to be used by the plurality of jobs, and

wherein the post-application-code wrapper code specifies the second job in the ordered sequence of the plurality of jobs.

15 . The method of claim 11 , wherein iteratively executing the plurality of jobs comprises:

prior to executing the application code of the first job, executing pre-application-code wrapper code,

wherein executing the pre-application-code wrapper code comprises obtaining workflow data from a shared storage shared by each of the plurality of jobs;

executing the application code of the first job using the workflow data; and

subsequent to executing the application code of the first job, executing the post-application-code wrapper code,

wherein executing the post-application-code wrapper code includes storing, in the shared storage, modified workflow data, based on modifying the workflow data by executing the application code of the first job.

16 . The method of claim 11 , wherein initiating, by the first virtual machine, execution of the second virtual machine to execute the second job comprises:

identifying resource requirements associated with the second job based on metadata in a metadata file;

determining that the resource requirements exceed a threshold value;

responsive to determining that the resource requirements exceed the threshold value:

requesting, from the resource manager, the second set of computing resources corresponding to a first portion of the resource requirements; and

requesting, from the resource manager, a third set of computing resources corresponding to a second portion of the resource requirements,

wherein a sum of the second set of computing resources and the third set of computing resources is at least equal to the resource requirements associated with the second job; and

responsive to receiving access to the second set of computing resources and the third set of computing resources:

initiating execution of the second virtual machine; and

initiating execution of a third virtual machine.

17 . A system comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the system to perform:

iteratively executing a plurality of jobs by sequentially transferring control of an execution process among a plurality of virtual machines that respectively and sequentially execute the plurality of jobs at least by:

executing, by a first virtual machine corresponding to a first set of computing resources, application code of a first job of the plurality of jobs;

responsive to completing execution of the application code of the first job, executing, by the first virtual machine, post-application-code wrapper code attached to the application code to determine a second job of the plurality of jobs to be executed subsequent to the first job and a second set of computing resources for executing the second job by a second virtual machine, wherein the second virtual machine executes at least a portion of the second job with the second set of computing resources after the first virtual machine self-terminates;

transferring control of the execution process from the first virtual machine to the second virtual machine at least by:

initiating, by the first virtual machine, execution of the second virtual machine to execute the second job at least by:

requesting, by the first virtual machine from a resource manager, access to the second set of computing resources for the second virtual machine; and

initiating execution of the second virtual machine with access to the second set of computing resources for executing the second job; and

subsequent to initiating execution of the second virtual machine, self-terminating the first virtual machine at least by returning the first set of computing resources to a pool of available computing resources.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 29, 2022
From: ORACLE GLOBAL SERVICES GERMANY GMBH
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 060677/0100 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 11, 2022
From: PELOV, LYUDMIL
To: ORACLE GLOBAL SERVICES GERMANY GMBH
Reel/Frame 060470/0707 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 5, 2022
From: LEE, VIVIAN QIAN; QIN, QIU; RACE, DAREN
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 060398/0818 →
Continuity (1)
Related Publication 20240004682A1 · Jan 4, 2024
References Cited (36)
US 6237143B1 · Fontana · 2001 [cited by examiner]
US 7127520B2 · Ladd et al. · 2006 [cited by applicant]
US 8811740B1 · Brendel · 2014 [cited by examiner]
US 10698668B1 · Pohlack · 2020 [cited by examiner]
US 11307885B1 · Luciano · 2022 [cited by examiner]
US 12197960B1 · Kakovitch · 2025 [cited by examiner]
US 20050060704A1 · Bulson · 2005 [cited by examiner]
US 20050086640A1 · Kolehmainen · 2005 [cited by examiner]
US 20050131899A1 · Dvorkin · 2005 [cited by examiner]
US 20100100881A1 · Shigeta · 2010 [cited by examiner]
US 20120060165A1 · Clarke · 2012 [cited by applicant]
US 20130326053A1 · Bauer · 2013 [cited by examiner]
US 20140325521A1 · Li · 2014 [cited by examiner]
US 20150355938A1 · Jokinen · 2015 [cited by examiner]
US 20190102279A1 · Awan · 2019 [cited by examiner]
US 20200225972A1 · Karunaratne · 2020 [cited by examiner]
US 20200356376A1 · Lynch · 2020 [cited by examiner]
US 20210211391A1 · Paraschiv · 2021 [cited by examiner]
US 20210326175A1 · Herbert · 2021 [cited by examiner]
US 20220342899A1 · Harwood · 2022 [cited by examiner]
“Argo Workflow Trigger”, Retrieved from https://argoproj.github.io/argo-events/sensors/triggers/argo-workflow/, Retrieved on Mar. 24, 2022, 4 Pages. [cited by applicant]
“Automatic trigger of Generated Jobs created from Jenkins SeedJob”, Retrieved from https://souravatta.medium.com/automatic-trigger-of-generated-jobs-created-from-jenkins-seedjob-b517ed88b6f8, May 18, 2021, 11 Pages. [cited by applicant]
“AWS Data Pipeline”, Retrieved from https://aws.amazon.com/datapipeline/, Retrieved on Mar. 24, 2022, 2 Pages. [cited by applicant]
“Building sequence jobs”, Retrieved from https://www.ibm.com/docs/en/iis/11.3?topic=jobs-building-sequence, Jun. 30, 2022, 2 Pages. [cited by applicant]
“Choose when to run jobs”, Retrieved from https://docs.gitlab.com/ee/ci/jobs/job_control.html, Retrieved on Jul. 2022, 1 Page. [cited by applicant]
“Classic Delivery Pipeline overview”, Retrieved from https://cloud.ibm.com/docs/ContinuousDelivery?topic=ContinuousDelivery-deliverypipeline_about, Nov. 15, 2021, 3 Pages. [cited by applicant]
“Data Pipelines With Apache Airflow”, Retrieved from https://medium.com/swlh/data-pipelines-with-apache-airflow-46258deb2844, Retrieved on Jul. 2022, 3 Pages. [cited by applicant]
“Linking different jobs to create pipelines in Jenkins”, Retrieved at https://mohitgoyal.co/2017/02/20/linking-different-jobs-to-create-pipelines-in-jenkins/, Feb. 20, 2017, 4 Pages. [cited by applicant]
“Pipeline run sequence”, Retrieved from https://docs.microsoft.com/en-us/azure/devops/pipelines/process/runs?view=azure-devops, Feb. 11, 2022, 11 Pages. [cited by applicant]
“Scheduling & Triggers”, Retrieved from https://airflow.apache.org/docs/apache-airflow/1.10.1/scheduler.html, Retrieved on Jul. 2022, 3 Pages. [cited by applicant]
“Specify jobs in your pipeline”, https://docs.microsoft.com/en-us/azure/devops/pipelines/process/phases?view=azure-devops&tabs=yaml, Feb. 11, 2022, 16 Pages. [cited by applicant]
“Using Workflows to Schedule Jobs”, Retrieved from https://circleci.com/docs/workflows, Retrieved on Jul. 2022, 4 Pages. [cited by applicant]
“Using Workspaces to Share Data between Jobs”, Retrieved from https://circleci.com/docs/workspaces, Retrieved on Jul. 2022, 4 Pages. [cited by applicant]
“What is Argo Workflows”, Retrieved from https://argoproj.github.io/workflows/, Retrieved on Jul. 2022, 1 Page. [cited by applicant]
“What is AWS Data Pipeline?”, Retrieved from https://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/what-is-datapipeline.html, Retrieved on Mar. 24, 2022, 2 Pages. [cited by applicant]
“Who trigger the pipeline job, gitlab server or gitlab-runner?”, Retrieved from https://forum.gitlab.com/t/who-trigger-the-pipeline-job-gitlab-server-or-gitlab-runner/48402/2, Retrieved on Jul. 2022, 1 page. [cited by applicant]