IP Library Granted Patent US 12,326,787
Granted Patent B1
US 12,326,787 · App. 18/426,252 · Granted Jun 10, 2025

Methods and systems for stateful workflow execution

Inventors: Andrey Falko (San Francisco, CA); Tommy Page Odom (Raleigh, NC)
G06F11/1451G06F2201/84
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,326,787
App. No.
18/426,252
Granted
Jun 10, 2025
Kind
B1
Abstract

Computing systems and methods are provided for executing steps of a workflow in a stateful and parallelizable manner. A worker computing system receives indication of an assigned step of the workflow and downloads, to its local storage, a snapshot of changes from a preceding step of the workflow from a distributed storage on a network, where the snapshot includes data indicative of the changes associated with execution of the preceding step. The worker computing system performs the assigned step using the data from the snapshot to generate a second snapshot of changes associated with execution of the assigned step and uploads the second snapshot of changes associated with the assigned step to the distributed storage.

Claims (51)

1. A method of executing a workflow including a plurality of steps using a plurality of computing systems, the method comprising:

receiving, at a first computing system of the plurality of computing systems, indication of an assigned step of the plurality of steps;

downloading, to local storage at the first computing system over a network, a snapshot of changes from a preceding step of the plurality of steps from a distributed storage on the network, wherein the snapshot comprises data indicative of the changes to a first set of one or more objects associated with execution of the preceding step by a respective computing system of the plurality of computing systems;

performing, by the first computing system, the assigned step using the data indicative the changes to the one or more objects associated with execution of the preceding step to generate a second snapshot of second changes associated with the assigned step comprising second data indicative of the second changes to a second set of one or more objects associated with execution of the assigned step; and

uploading, by the first computing system, the second snapshot of second changes associated with the assigned step to the distributed storage.

2. The method of claim 1 , wherein performing the assigned step comprises:

initializing a local workspace for the assigned step maintained in the local storage using the changes to the one or more objects associated with execution of the preceding step; and

executing commands associated with the assigned step within the local workspace resulting in the second changes to the second set of one or more objects within the local workspace.

3. The method of claim 2 , further comprising writing the second changes to the second set of one or more objects within the local workspace to the local storage using copy-on-write.

4. The method of claim 2 , wherein uploading the second snapshot comprises:

creating an archive file at the first computing system including the second set of one or more objects from the local workspace maintained in the local storage; and

writing the archive file to a location at the distributed storage corresponding to the assigned step.

5. The method of claim 1 , further comprising:

downloading, to the local storage at the first computing system, a third snapshot of third changes from a second preceding step of the plurality of steps from the distributed storage on the network, wherein the third snapshot comprises additional data indicative of third changes to a third set of one or more objects associated with execution of the second preceding step; and

analyzing, at the first computing system, the data associated with the snapshot of the changes and the additional data associated with the third snapshot of the third changes to identify a common object common to each of the first set and the third set.

6. The method of claim 5 , further comprising automatically initiating a remedial action in response to detecting the common object common to each of the first set and the third set.

7. The method of claim 6 , wherein automatically initiating the remedial action comprises providing a user notification including information identifying at least one of the common object, the preceding step and the second preceding step.

8. The method of claim 6 , wherein:

automatically initiating the remedial action comprises automatically selecting, at the first computing system, one of the first changes to the common object from the snapshot and the third changes to the common object from the third snapshot; and

performing the assigned step comprises initializing a local workspace for the assigned step maintained in the local storage using the selected one of the first changes to the common object from the snapshot and the third changes to the common object from the third snapshot.

9. A method of executing a workflow including a plurality of steps using a plurality of computing systems, the method comprising:

receiving, at a first computing system of the plurality of computing systems, indication of an assigned step of the plurality of steps; and

prior to executing the assigned step at the first computing system:

downloading, to local storage at the first computing system over a network, a plurality of snapshots from a distributed storage on the network, wherein each snapshot of the plurality of snapshots comprise respective data indicative changes associated with execution of a respective preceding step of the plurality of steps by a respective computing system of the plurality of computing systems;

analyzing, at the first computing system, the respective data associated with the plurality of snapshots to identify a first change to a first object associated with execution of a first step of the plurality of steps and a second change to the first object associated with execution of a second step of the plurality of steps concurrent to execution of the first step; and

initiating a remedial action in response to the first and second changes associated with the first object common to execution of the first and second steps.

10. The method of claim 9 , further comprising executing the assigned step at the first computing system in an absence of first and second changes associated with the first object common to execution of the first and second steps.

11. The method of claim 9 , further comprising performing, by the first computing system, the assigned step using the respective data associated with the plurality of snapshots associated with execution of one or more preceding steps.

12. The method of claim 11 , further comprising:

generating, by the first computing system, a new snapshot of additional changes associated with the assigned step comprising additional data indicative of the additional changes to one or more objects associated with execution of the assigned step; and

uploading, by the first computing system, the new snapshot of additional changes associated with the assigned step to the distributed storage.

13. The method of claim 12 , wherein performing the assigned step comprises:

initializing a local workspace for the assigned step maintained in the local storage using the respective data associated with the plurality of snapshots associated with execution of the one or more preceding steps; and

executing commands associated with the assigned step within the local workspace resulting in the additional changes to a set of one or more objects within the local workspace.

14. The method of claim 13 , wherein uploading the new snapshot comprises:

creating an archive file at the first computing system including the set of one or more objects from the local workspace maintained in the local storage; and

writing the archive file to a location at the distributed storage corresponding to the assigned step.

15. The method of claim 9 , wherein at least one preceding step of the plurality of steps was executed at a respective computing system of the plurality of computing systems that is distinct from the first computing system.

16. The method of claim 9 , wherein initiating the remedial action comprises automatically providing a user notification including information identifying at least one of the first object, the first step and the second step.

17. The method of claim 9 , wherein initiating the remedial action comprises automatically selecting the first change to the first object associated with execution of the first step.

18. The method of claim 17 , further comprising:

initializing, at the first computing system, a local workspace for the assigned step maintained in the local storage using the first change to the first object associated with execution of the first step;

executing, at the first computing system, one or more commands associated with the assigned step within the local workspace resulting in additional changes to the first object within the local workspace;

generating, by the first computing system, a new snapshot associated with the assigned step comprising additional data indicative of the additional changes to the first object associated with execution of the assigned step; and

uploading, by the first computing system, the new snapshot to the distributed storage.

19. The method of claim 18 , further comprising writing the additional changes to the first object within the local workspace to the local storage using copy-on-write prior to generating the new snapshot.

20. At least one non-transitory machine-readable storage medium that provides instructions that, when executed by at least one processor, are configurable to cause the at least one processor to perform operations comprising:

receiving, at a first computing system of a plurality of computing systems, indication of an assigned step of a plurality of steps of a workflow;

downloading, to local storage at the first computing system over a network, a snapshot of changes from a preceding step of the plurality of steps from a distributed storage on the network, wherein the snapshot comprises data indicative of the changes to a first set of one or more objects associated with execution of the preceding step by a respective computing system of the plurality of computing systems;

performing, by the first computing system, the assigned step using the data indicative the changes to the one or more objects associated with execution of the preceding step to generate a second snapshot of second changes associated with the assigned step comprising second data indicative of the second changes to a second set of one or more objects associated with execution of the assigned step; and

uploading, by the first computing system, the second snapshot of second changes associated with the assigned step to the distributed storage.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2025
From: FALKO, ANDREY; ODOM, TOMMY PAGE
To: SALESFORCE, INC.
Reel/Frame 070282/0601 →
References Cited (153)
US 5577188A · Zhu · 1996 [cited by applicant]
US 5608872A · Schwartz et al. · 1997 [cited by applicant]
US 5649104A · Carleton et al. · 1997 [cited by applicant]
US 5715450A · Ambrose et al. · 1998 [cited by applicant]
US 5761419A · Schwartz et al. · 1998 [cited by applicant]
US 5819038A · Carleton et al. · 1998 [cited by applicant]
US 5821937A · Tonelli et al. · 1998 [cited by applicant]
US 5831610A · Tonelli et al. · 1998 [cited by applicant]
US 5873096A · Lim et al. · 1999 [cited by applicant]
US 5918159A · Fomukong et al. · 1999 [cited by applicant]
US 5963953A · Cram et al. · 1999 [cited by applicant]
US 6092083A · Brodersen et al. · 2000 [cited by applicant]
US 6161149A · Achacoso et al. · 2000 [cited by applicant]
US 6169534B1 · Raffel et al. · 2001 [cited by applicant]
US 6178425B1 · Brodersen et al. · 2001 [cited by applicant]
US 6189011B1 · Lim et al. · 2001 [cited by applicant]
US 6216135B1 · Brodersen et al. · 2001 [cited by applicant]
US 6233617B1 · Rothwein et al. · 2001 [cited by applicant]
US 6266669B1 · Brodersen et al. · 2001 [cited by applicant]
US 6295530B1 · Ritchie et al. · 2001 [cited by applicant]
US 6324568B1 · Diec et al. · 2001 [cited by applicant]
US 6324693B1 · Brodersen et al. · 2001 [cited by applicant]
US 6336137B1 · Lee et al. · 2002 [cited by applicant]
US D454139S · Feldcamp et al. · 2002 [cited by applicant]
US 6367077B1 · Brodersen et al. · 2002 [cited by applicant]
US 6393605B1 · Loomans · 2002 [cited by applicant]
US 6405220B1 · Brodersen et al. · 2002 [cited by applicant]
US 6434550B1 · Warner et al. · 2002 [cited by applicant]
US 6446089B1 · Brodersen et al. · 2002 [cited by applicant]
US 6535909B1 · Rust · 2003 [cited by applicant]
US 6549908B1 · Loomans · 2003 [cited by applicant]
US 6553563B2 · Ambrose et al. · 2003 [cited by applicant]
US 6560461B1 · Fomukong et al. · 2003 [cited by applicant]
US 6574635B2 · Stauber et al. · 2003 [cited by applicant]
US 6577726B1 · Huang et al. · 2003 [cited by applicant]
US 6601087B1 · Zhu et al. · 2003 [cited by applicant]
US 6604117B2 · Lim et al. · 2003 [cited by applicant]
US 6604128B2 · Diec · 2003 [cited by applicant]
US 6609150B2 · Lee et al. · 2003 [cited by applicant]
US 6621834B1 · Scherpbier et al. · 2003 [cited by applicant]
US 6654032B1 · Zhu et al. · 2003 [cited by applicant]
US 6665648B2 · Brodersen et al. · 2003 [cited by applicant]
US 6665655B1 · Warner et al. · 2003 [cited by applicant]
US 6684438B2 · Brodersen et al. · 2004 [cited by applicant]
US 6711565B1 · Subramaniam et al. · 2004 [cited by applicant]
US 6724399B1 · Katchour et al. · 2004 [cited by applicant]
US 6728702B1 · Subramaniam et al. · 2004 [cited by applicant]
US 6728960B1 · Loomans et al. · 2004 [cited by applicant]
US 6732095B1 · Warshavsky et al. · 2004 [cited by applicant]
US 6732100B1 · Brodersen et al. · 2004 [cited by applicant]
US 6732111B2 · Brodersen et al. · 2004 [cited by applicant]
US 6754681B2 · Brodersen et al. · 2004 [cited by applicant]
US 6763351B1 · Subramaniam et al. · 2004 [cited by applicant]
US 6763501B1 · Zhu et al. · 2004 [cited by applicant]
US 6768904B2 · Kim · 2004 [cited by applicant]
US 6772229B1 · Achacoso et al. · 2004 [cited by applicant]
US 6782383B2 · Subramaniam et al. · 2004 [cited by applicant]
US 6804330B1 · Jones et al. · 2004 [cited by applicant]
US 6826565B2 · Ritchie et al. · 2004 [cited by applicant]
US 6826582B1 · Chatterjee et al. · 2004 [cited by applicant]
US 6826745B2 · Coker · 2004 [cited by applicant]
US 6829655B1 · Huang et al. · 2004 [cited by applicant]
US 6842748B1 · Warner et al. · 2005 [cited by applicant]
US 6850895B2 · Brodersen et al. · 2005 [cited by applicant]
US 6850949B2 · Warner et al. · 2005 [cited by applicant]
US 7062502B1 · Kesler · 2006 [cited by applicant]
US 7069231B1 · Cinarkaya et al. · 2006 [cited by applicant]
US 7181758B1 · Chan · 2007 [cited by applicant]
US 7289976B2 · Kihneman et al. · 2007 [cited by applicant]
US 7340411B2 · Cook · 2008 [cited by applicant]
US 7356482B2 · Frankland et al. · 2008 [cited by applicant]
US 7401094B1 · Kesler · 2008 [cited by applicant]
US 7412455B2 · Dillon · 2008 [cited by applicant]
US 7508789B2 · Chan · 2009 [cited by applicant]
US 7620655B2 · Larsson et al. · 2009 [cited by applicant]
US 7698160B2 · Beaven et al. · 2010 [cited by applicant]
US 7730478B2 · Weissman · 2010 [cited by applicant]
US 7779475B2 · Jakobson et al. · 2010 [cited by applicant]
US 8014943B2 · Jakobson · 2011 [cited by applicant]
US 8015495B2 · Achacoso et al. · 2011 [cited by applicant]
US 8032297B2 · Jakobson · 2011 [cited by applicant]
US 8082301B2 · Ahlgren et al. · 2011 [cited by applicant]
US 8095413B1 · Beaven · 2012 [cited by applicant]
US 8095594B2 · Beaven et al. · 2012 [cited by applicant]
US 8209308B2 · Rueben et al. · 2012 [cited by applicant]
US 8275836B2 · Beaven et al. · 2012 [cited by applicant]
US 8457545B2 · Chan · 2013 [cited by applicant]
US 8484111B2 · Frankland et al. · 2013 [cited by applicant]
US 8490025B2 · Jakobson et al. · 2013 [cited by applicant]
US 8504945B2 · Jakobson et al. · 2013 [cited by applicant]
US 8510045B2 · Rueben et al. · 2013 [cited by applicant]
US 8510664B2 · Rueben et al. · 2013 [cited by applicant]
US 8566301B2 · Rueben et al. · 2013 [cited by applicant]
US 8646103B2 · Jakobson et al. · 2014 [cited by applicant]
US 11836110B2 · Matsushita · 2023 [cited by examiner]
US 20010044791A1 · Richter et al. · 2001 [cited by applicant]
US 20020072951A1 · Lee et al. · 2002 [cited by applicant]
US 20020082892A1 · Raffel · 2002 [cited by applicant]
US 20020129352A1 · Brodersen et al. · 2002 [cited by applicant]
US 20020140731A1 · Subramanian et al. · 2002 [cited by applicant]
US 20020143997A1 · Huang et al. · 2002 [cited by applicant]
US 20020162090A1 · Parnell et al. · 2002 [cited by applicant]
US 20020165742A1 · Robbins · 2002 [cited by applicant]
US 20030004971A1 · Gong · 2003 [cited by applicant]
US 20030018705A1 · Chen et al. · 2003 [cited by applicant]
US 20030018830A1 · Chen et al. · 2003 [cited by applicant]
US 20030066031A1 · Laane et al. · 2003 [cited by applicant]
US 20030066032A1 · Ramachandran et al. · 2003 [cited by applicant]
US 20030069936A1 · Warner et al. · 2003 [cited by applicant]
US 20030070000A1 · Coker et al. · 2003 [cited by applicant]
US 20030070004A1 · Mukundan et al. · 2003 [cited by applicant]
US 20030070005A1 · Mukundan et al. · 2003 [cited by applicant]
US 20030074418A1 · Coker et al. · 2003 [cited by applicant]
US 20030120675A1 · Stauber et al. · 2003 [cited by applicant]
US 20030151633A1 · George et al. · 2003 [cited by applicant]
US 20030159136A1 · Huang et al. · 2003 [cited by applicant]
US 20030187921A1 · Diec et al. · 2003 [cited by applicant]
US 20030189600A1 · Gune et al. · 2003 [cited by applicant]
US 20030204427A1 · Gune et al. · 2003 [cited by applicant]
US 20030206192A1 · Chen et al. · 2003 [cited by applicant]
US 20030225730A1 · Warner et al. · 2003 [cited by applicant]
US 20040001092A1 · Rothwein et al. · 2004 [cited by applicant]
US 20040010489A1 · Rio et al. · 2004 [cited by applicant]
US 20040015981A1 · Coker et al. · 2004 [cited by applicant]
US 20040027388A1 · Berg et al. · 2004 [cited by applicant]
US 20040128001A1 · Levin et al. · 2004 [cited by applicant]
US 20040186860A1 · Lee et al. · 2004 [cited by applicant]
US 20040193510A1 · Catahan et al. · 2004 [cited by applicant]
US 20040199489A1 · Barnes-Leon et al. · 2004 [cited by applicant]
US 20040199536A1 · Barnes-Leon et al. · 2004 [cited by applicant]
US 20040199543A1 · Braud et al. · 2004 [cited by applicant]
US 20040249854A1 · Barnes-Leon et al. · 2004 [cited by applicant]
US 20040260534A1 · Pak et al. · 2004 [cited by applicant]
US 20040260659A1 · Chan et al. · 2004 [cited by applicant]
US 20040268299A1 · Lei et al. · 2004 [cited by applicant]
US 20050050555A1 · Exley et al. · 2005 [cited by applicant]
US 20050091098A1 · Brodersen et al. · 2005 [cited by applicant]
US 20060021019A1 · Hinton et al. · 2006 [cited by applicant]
US 20080249972A1 · Dillon · 2008 [cited by applicant]
US 20090063414A1 · White et al. · 2009 [cited by applicant]
US 20090100342A1 · Jakobson · 2009 [cited by applicant]
US 20090177744A1 · Marlow et al. · 2009 [cited by applicant]
US 20110247051A1 · Bulumulla et al. · 2011 [cited by applicant]
US 20120042218A1 · Cinarkaya et al. · 2012 [cited by applicant]
US 20120218958A1 · Rangaiah · 2012 [cited by applicant]
US 20120233137A1 · Jakobson et al. · 2012 [cited by applicant]
US 20130212497A1 · Zelenko et al. · 2013 [cited by applicant]
US 20130218948A1 · Jakobson · 2013 [cited by applicant]
US 20130218949A1 · Jakobson · 2013 [cited by applicant]
US 20130218966A1 · Jakobson · 2013 [cited by applicant]
US 20130247216A1 · Cinarkaya et al. · 2013 [cited by applicant]
US 20150347552A1 · Habouzit · 2015 [cited by examiner]
US 20240094937A1 · Kashi Visvanathan · 2024 [cited by examiner]