IP Library Granted Patent US 9,509,550
Granted Patent B2
US 9,509,550 · App. 14/015,160 · Granted Nov 29, 2016

Generating an idempotent workflow

Inventors: Burra Gopal (Bellevue, WA); Yuriy Labunets (Redmond, WA); Amy R. Simpson (Kirkland, WA); James Rupke (Seattle, WA); Kai Zhu (Bellevue, WA); Roberto Taboada (Duvall, WA); Shayan Kayhanian (Kirkland, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L41/0226G06F8/72G06F8/40G06F8/41G06F8/443
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 9,509,550
App. No.
14/015,160
Granted
Nov 29, 2016
Kind
B2
Abstract

Various methods and systems for generating an idempotent workflow are described herein. In one example, a method includes detecting distributed code and identifying a boundary function in the distributed code. The method can also include separating the boundary function into a transition function, a non-idempotent function, and a reversion function. Additionally, the method can include transforming the non-idempotent function into an idempotent function by generating a flag corresponding to the non-idempotent function, wherein the flag indicates if the non-idempotent function has been executed. Furthermore, the method can include combining the transition function, the idempotent function, and the reversion function to form the idempotent workflow.

Claims (39)

1. A method for generating an idempotent workflow comprising:

detecting distributed code;

identifying a boundary function in the distributed code that executes at least a first portion of the distributed code on a first computing device and at least a second portion of the distributed code on a second computing device different from the first computing device;

separating the boundary function into a transition function that identifies a transition from the first computing device to the second computing device, a non-idempotent function that modifies parameter values, and a reversion function that terminates a session;

transforming the non-idempotent function into an idempotent function by including code in the non-idempotent function so that the non-idempotent function is executed once;

generating a flag corresponding to the non-idempotent function, wherein the flag indicates if the non-idempotent function has been executed; and

combining the transition function, the idempotent function, and the reversion function to form the idempotent workflow;

wherein the boundary function comprises a transition from a local process to a remote process; and

wherein the idempotent function comprises code to produce a single output value from multiple executions of the idempotent function.

2. The method of claim 1 comprising storing the transition function, the non-idempotent function, and the reversion function in a persistent workflow database.

3. The method of claim 2 comprising storing an input array with the transition function, the non-idempotent function, or the reversion function in the persistent workflow database.

4. The method of claim 3 , wherein the input array comprises a union of output values corresponding to each previously executed function.

5. The method of claim 2 , wherein the persistent workflow database comprises a field that represents an error generated while executing the transition function, the non-idempotent function, or the reversion function.

6. The method of claim 2 , wherein the persistent workflow database comprises a number of instructions value representing the number of instructions in the transition function, the non-idempotent function, or the reversion function.

7. The method of claim 1 , comprising returning an output value from a previous execution of the transition function, the non-idempotent function, or the reversion function if a second flag indicates that the transition function, the non-idempotent function, or the reversion function has been previously executed.

8. One or more computer-readable storage media for generating an idempotent workflow comprising a plurality of instructions that, when executed by a processor, cause the processor to:

detect distributed code;

identify a boundary function in the distributed code that executes at least a first portion of the distributed code on a first computing device and at least a second portion of the distributed code on a second computing device different from the first computing device;

separate the boundary function into additional functions including a non-idempotent function that returns a number of output values from a number of processes executed remotely;

transform the non-idempotent function into an idempotent function by generating a flag indicating whether the non-idempotent function has been previously executed; and

combine the idempotent function with the additional functions to form the idempotent workflow;

wherein the boundary function comprises a transition from a local process to a remote process; and

wherein the idempotent function comprises code to produce a single output value from multiple executions of the idempotent function.

9. The one or more computer-readable storage media of claim 8 , wherein the instructions cause the processor to store a transition function, the non-idempotent function, and a reversion function in a persistent workflow database.

10. The one or more computer-readable storage media of claim 9 , wherein the instructions cause the processor to store an input array with the transition function, the non-idempotent function, and the reversion function in the persistent workflow database.

11. The one or more computer-readable storage media of claim 10 , wherein the input array comprises a union of output values corresponding to each previously executed function.

12. A system for generating an idempotent workflow comprising:

a processor to execute processor executable code;

a storage device that stores processor executable code, wherein the processor executable code, when executed by the processor, causes the processor to:

detect distributed code;

identify a boundary function in the distributed code, the boundary function comprising a transition from a local process to a remote process;

separate the boundary function into a transition function that identifies a transition from the first computing device to the second computing device, a non-idempotent function that modifies parameter values, and a reversion function that terminates a session;

transform the non-idempotent function into an idempotent function including a flag in the non-idempotent function to indicate that the non-idempotent function has been executed only once; and

combine the transition function, the idempotent function, and the reversion function to form the idempotent workflow;

wherein the boundary function comprises a transition from a local process to a remote process; and

wherein the idempotent function comprises code to produce a single output value from multiple executions of the idempotent function.

13. The system of claim 12 , wherein the processor executable code, when executed by the processor, causes the processor to store the transition function, the non-idempotent function, and the reversion function in a persistent workflow database.

14. The system of claim 13 , wherein the processor executable code, when executed by the processor, causes the processor to store an input array with the transition function, the non-idempotent function, and the reversion function in the persistent workflow database.

15. The system of claim 14 , wherein the input array comprises a union of output values corresponding to each previously executed function.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 039025/0454 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2013
From: GOPAL, BURRA; LABUNETS, YURIY; SIMPSON, AMY; RUPKE, JAMES; ZHU, KAI; TABOADA, ROBERTO; KAYHANIAN, SHAYAN
To: MICROSOFT CORPORATION
Reel/Frame 031172/0613 →
Continuity (1)
Related Publication 20150067095A1 · Mar 5, 2015