US2022342698A1PendingUtilityA1

Long-term programmatic workflow management

Assignee: PRECISE LY INCPriority: Nov 23, 2020Filed: Jul 8, 2022Published: Oct 27, 2022
Est. expiryNov 23, 2040(~14.3 yrs left)· nominal 20-yr term from priority
G06F 9/4881G06F 9/3889G06F 9/4856G06F 9/3871G06F 9/461G06F 8/427G06F 9/485
59
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A system and method for long-term programmatic workflow execution, including: iteratively, while a suspension event is not detected: with a run, executing the code block using passed variable values from another code block; when a suspension event is detected, suspending run execution and persistently storing the run state; and resuming run execution responsive to receipt of a valid run resumption request.

Claims

exact text as granted — not AI-modified
We claim: 
     
         1 . A set of instructions stored by a non-transitory computer-readable storage medium that, when executed by a processing system, cause the processing system to perform a method comprising:
 executing a run associated with a set of code blocks, comprising:
 a) executing a code block of the set; 
 b) during code block execution, storing block states within a run storage; 
 c) when the code block does not suspend the run, identifying a subsequent code block based on a next frame from the run storage and repeating a) and b) for the subsequent code block; and 
 d) when the code block suspends the run, storing the run storage to persistent storage, wherein c) is repeated when a continuation condition is met. 
   
     
     
         2 . The method of  claim 1 , wherein the run storage is a stack. 
     
     
         3 . The method of  claim 1 , wherein the block state comprises a code block identifier for another code block, a variable set from the code block, and a set of values from the code block bound to at least a subset of the variable set. 
     
     
         4 . The method of  claim 3 , wherein the frame does not comprise compiled code. 
     
     
         5 . The method of  claim 3 , wherein each code block is identified using a persistent identifier. 
     
     
         6 . The method of  claim 1 , further comprising tearing down a runtime environment executing a) and b) after the code block suspends the run, wherein a new runtime environment is initialized when the continuation condition is met, and wherein c) is repeated using the new runtime environment. 
     
     
         7 . The method of  claim 1 , further comprising:
 receiving a run configuration from a client, the run configuration comprising a workflow identifier identifying the set of code blocks; and   identifying an initial code block of the identified workflow, wherein a) is performed using the initial code block.   
     
     
         8 . The method of  claim 1 , wherein the continuation condition comprises a call comprising an identifier for the run and a return value, wherein the return value is bound to an unbound variable in a frame within the run storage, and wherein the code block identified in the frame is executed using the return value. 
     
     
         9 . The method of  claim 8 , wherein the call is received from a client. 
     
     
         10 . The method of  claim 8 , further comprising validating the call before repeating c). 
     
     
         11 . The method of  claim 1 , wherein the continuation condition comprises satisfaction of a set of default conditions, wherein the default conditions are associated with a default return value, wherein the default return value is bound to a previously unbound variable of the next frame within the run storage, and wherein the subsequent code block identified in the next frame is executed using the default return value. 
     
     
         12 . The method of  claim 11 , wherein the set of default conditions comprise timer satisfaction. 
     
     
         13 . The method of  claim 1 , wherein the coordination condition comprises occurrence of a real world event. 
     
     
         14 . The method of  claim 1 , wherein executing the code block comprises writing a value to coordination storage shared between runs, wherein the value is provided from the coordination storage to an other run when a set of coordination conditions are met. 
     
     
         15 . The method of  claim 14 , wherein the set of coordination conditions comprises: when a value is added to the storage and when a run queue is not empty, identifying the other run from the run queue, removing a next value from the storage, and executing the other run using the next value. 
     
     
         16 . The method of  claim 1 , wherein each code block is a partition generated from workflow code, wherein the set of partitions are generated by:
 identifying suspending expressions within the code;   segmenting the code into a series of partitions at the suspending expressions;   assigning an identifier to each partition; and   inserting a frame push command at each suspending expression within each partition, wherein each frame push command comprises an identifier for a subsequent partition in the series and a set of variables from the partition.   
     
     
         17 . A method for code processing, comprising:
 receiving code for a workflow;   identifying suspending expressions within the code;   segmenting the code into a series of partitions at the suspending expressions;   assigning an identifier to each partition; and   inserting a frame push command at each suspending expression within each partition, wherein each frame push command comprises an identifier for a subsequent partition in the series, a set of variables from the partition, and instructions to push the frame to a run storage.   
     
     
         18 . The method of  claim 17 , wherein identifying suspending expressions comprises identifying a predetermined set of statements within the code. 
     
     
         19 . The method of  claim 17 , wherein identifying suspending expressions comprises converting the code to an abstract syntax tree, and identifying suspending expressions within the abstract syntax tree.

Join the waitlist — get patent alerts

Track US2022342698A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.