US2022342698A1PendingUtilityA1
Long-term programmatic workflow management
Est. expiryNov 23, 2040(~14.3 yrs left)· nominal 20-yr term from priority
Inventors:Aneil Mallavarapu
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-modifiedWe 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.